pax_global_header00006660000000000000000000000064127432404600014514gustar00rootroot0000000000000052 comment=ef31b92035baff7b0bffb08106f0c74e93d34161 tipp10-2.1.0/000077500000000000000000000000001274324046000126315ustar00rootroot00000000000000tipp10-2.1.0/Makefile000066400000000000000000000130211274324046000142660ustar00rootroot00000000000000############################################################################# # Makefile for building: tipp10 # Generated by qmake (2.01a) (Qt 4.3.3) on: Sa 12. Mrz 20:35:18 2011 # Project: tipp10.pro # Template: app # Command: c:\qt-4-3-3\bin\qmake.exe -spec c:\qt-4-3-3\mkspecs\win32-g++ -win32 CONFIG+=debug -o Makefile tipp10.pro ############################################################################# first: debug install: debug-install uninstall: debug-uninstall MAKEFILE = Makefile QMAKE = c:\qt-4-3-3\bin\qmake.exe DEL_FILE = del CHK_DIR_EXISTS= if not exist MKDIR = mkdir COPY = copy /y COPY_FILE = $(COPY) COPY_DIR = xcopy /s /q /y /i INSTALL_FILE = $(COPY_FILE) INSTALL_PROGRAM = $(COPY_FILE) INSTALL_DIR = $(COPY_DIR) DEL_FILE = del SYMLINK = DEL_DIR = rmdir MOVE = move CHK_DIR_EXISTS= if not exist MKDIR = mkdir SUBTARGETS = \ debug \ release debug: $(MAKEFILE).Debug FORCE $(MAKE) -f $(MAKEFILE).Debug debug-make_default: $(MAKEFILE).Debug FORCE $(MAKE) -f $(MAKEFILE).Debug debug-make_first: $(MAKEFILE).Debug FORCE $(MAKE) -f $(MAKEFILE).Debug first debug-all: $(MAKEFILE).Debug FORCE $(MAKE) -f $(MAKEFILE).Debug all debug-clean: $(MAKEFILE).Debug FORCE $(MAKE) -f $(MAKEFILE).Debug clean debug-distclean: $(MAKEFILE).Debug FORCE $(MAKE) -f $(MAKEFILE).Debug distclean debug-install: $(MAKEFILE).Debug FORCE $(MAKE) -f $(MAKEFILE).Debug install debug-uninstall: $(MAKEFILE).Debug FORCE $(MAKE) -f $(MAKEFILE).Debug uninstall release: $(MAKEFILE).Release FORCE $(MAKE) -f $(MAKEFILE).Release release-make_default: $(MAKEFILE).Release FORCE $(MAKE) -f $(MAKEFILE).Release release-make_first: $(MAKEFILE).Release FORCE $(MAKE) -f $(MAKEFILE).Release first release-all: $(MAKEFILE).Release FORCE $(MAKE) -f $(MAKEFILE).Release all release-clean: $(MAKEFILE).Release FORCE $(MAKE) -f $(MAKEFILE).Release clean release-distclean: $(MAKEFILE).Release FORCE $(MAKE) -f $(MAKEFILE).Release distclean release-install: $(MAKEFILE).Release FORCE $(MAKE) -f $(MAKEFILE).Release install release-uninstall: $(MAKEFILE).Release FORCE $(MAKE) -f $(MAKEFILE).Release uninstall Makefile: tipp10.pro c:/qt-4-3-3/mkspecs/win32-g++/qmake.conf c:/qt-4-3-3/mkspecs/qconfig.pri \ c:/qt-4-3-3/mkspecs/features/qt_functions.prf \ c:/qt-4-3-3/mkspecs/features/qt_config.prf \ c:/qt-4-3-3/mkspecs/features/exclusive_builds.prf \ c:/qt-4-3-3/mkspecs/features/default_pre.prf \ c:/qt-4-3-3/mkspecs/features/win32/default_pre.prf \ c:/qt-4-3-3/mkspecs/features/debug.prf \ c:/qt-4-3-3/mkspecs/features/debug_and_release.prf \ c:/qt-4-3-3/mkspecs/features/default_post.prf \ c:/qt-4-3-3/mkspecs/features/qt.prf \ c:/qt-4-3-3/mkspecs/features/win32/thread.prf \ c:/qt-4-3-3/mkspecs/features/moc.prf \ c:/qt-4-3-3/mkspecs/features/win32/rtti.prf \ c:/qt-4-3-3/mkspecs/features/win32/stl.prf \ c:/qt-4-3-3/mkspecs/features/static.prf \ c:/qt-4-3-3/mkspecs/features/warn_on.prf \ c:/qt-4-3-3/mkspecs/features/win32/windows.prf \ c:/qt-4-3-3/mkspecs/features/win32/exceptions_off.prf \ c:/qt-4-3-3/mkspecs/features/resources.prf \ c:/qt-4-3-3/mkspecs/features/uic.prf \ c:/qt-4-3-3/mkspecs/features/yacc.prf \ c:/qt-4-3-3/mkspecs/features/lex.prf \ c:/qt-4-3-3/lib/qtmaind.prl \ c:/qt-4-3-3/lib/QtSqld.prl \ c:/qt-4-3-3/lib/QtGuid.prl \ c:/qt-4-3-3/lib/QtNetworkd.prl \ c:/qt-4-3-3/lib/QtCored.prl $(QMAKE) -spec c:\qt-4-3-3\mkspecs\win32-g++ -win32 CONFIG+=debug -o Makefile tipp10.pro c:\qt-4-3-3\mkspecs\qconfig.pri: c:\qt-4-3-3\mkspecs\features\qt_functions.prf: c:\qt-4-3-3\mkspecs\features\qt_config.prf: c:\qt-4-3-3\mkspecs\features\exclusive_builds.prf: c:\qt-4-3-3\mkspecs\features\default_pre.prf: c:\qt-4-3-3\mkspecs\features\win32\default_pre.prf: c:\qt-4-3-3\mkspecs\features\debug.prf: c:\qt-4-3-3\mkspecs\features\debug_and_release.prf: c:\qt-4-3-3\mkspecs\features\default_post.prf: c:\qt-4-3-3\mkspecs\features\qt.prf: c:\qt-4-3-3\mkspecs\features\win32\thread.prf: c:\qt-4-3-3\mkspecs\features\moc.prf: c:\qt-4-3-3\mkspecs\features\win32\rtti.prf: c:\qt-4-3-3\mkspecs\features\win32\stl.prf: c:\qt-4-3-3\mkspecs\features\static.prf: c:\qt-4-3-3\mkspecs\features\warn_on.prf: c:\qt-4-3-3\mkspecs\features\win32\windows.prf: c:\qt-4-3-3\mkspecs\features\win32\exceptions_off.prf: c:\qt-4-3-3\mkspecs\features\resources.prf: c:\qt-4-3-3\mkspecs\features\uic.prf: c:\qt-4-3-3\mkspecs\features\yacc.prf: c:\qt-4-3-3\mkspecs\features\lex.prf: c:\qt-4-3-3\lib\qtmaind.prl: c:\qt-4-3-3\lib\QtSqld.prl: c:\qt-4-3-3\lib\QtGuid.prl: c:\qt-4-3-3\lib\QtNetworkd.prl: c:\qt-4-3-3\lib\QtCored.prl: qmake: qmake_all FORCE @$(QMAKE) -spec c:\qt-4-3-3\mkspecs\win32-g++ -win32 CONFIG+=debug -o Makefile tipp10.pro qmake_all: FORCE make_default: debug-make_default release-make_default FORCE make_first: debug-make_first release-make_first FORCE all: debug-all release-all FORCE clean: debug-clean release-clean FORCE distclean: debug-distclean release-distclean FORCE -$(DEL_FILE) Makefile debug-mocclean: $(MAKEFILE).Debug $(MAKE) -f $(MAKEFILE).Debug mocclean release-mocclean: $(MAKEFILE).Release $(MAKE) -f $(MAKEFILE).Release mocclean mocclean: debug-mocclean release-mocclean debug-mocables: $(MAKEFILE).Debug $(MAKE) -f $(MAKEFILE).Debug mocables release-mocables: $(MAKEFILE).Release $(MAKE) -f $(MAKEFILE).Release mocables mocables: debug-mocables release-mocables FORCE: $(MAKEFILE).Debug: Makefile $(MAKEFILE).Release: Makefile tipp10-2.1.0/def/000077500000000000000000000000001274324046000133675ustar00rootroot00000000000000tipp10-2.1.0/def/defines.h000066400000000000000000000105421274324046000151570ustar00rootroot00000000000000/* Copyright (c) 2006-2011, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** File name: defines.h ** ****************************************************************/ #ifndef DEFINES_H #define DEFINES_H // OS constants #define APP_WIN true #define APP_MAC false #define APP_X11 false #define APP_PORTABLE false //at least one of the 3 OS must be true too! // Languages #define APP_EXISTING_LANGUAGES_GUI "de;en" #define APP_STD_LANGUAGE_GUI "de" #define APP_STD_LANGUAGE_LAYOUT "de_qwertz_win" #define APP_STD_LANGUAGE_LESSON "de_de_qwertz" // Common program constants #define APP_ORGANIZATION "Tom Thielicke IT Solutions" #define APP_COPYRIGHT "(c) 2006-2011, Tom Thielicke IT Solutions" #define APP_NAME_INTERN "TIPP10" #define APP_NAME "TIPP10" #define APP_URL "http://www.tipp10.com" #define APP_DB "tipp10v2.template" #define APP_USER_DB "tipp10v2.db" // Update constants #define UPDATE_URL "www.tipp10.com" #define UPDATE_URL_VERSION "/update/version.tipp10v210" #define UPDATE_URL_SQL "/update/sql.tipp10v210.utf" #define LESSON_DOWNLOAD_URL "http://www.tipp10.de/beispiel.txt" #define COMPILED_UPDATE_VERSION 33 #define COMPILED_UPDATE_FILENAME "tipp10v2.template" // Lesson text constants #define NUM_TOKEN_UNTIL_REFRESH 25 #define NUM_TOKEN_UNTIL_NEW_LINE 35 #define NUM_INTELLIGENT_QUERYS 2 #define TOKEN_NEW_LINE 0x00b6 #define TOKEN_TAB 0x2192 #define TOKEN_BACKSPACE 0x00b9 //0x00ac // Constants for dynamic training #define NUM_TEXT_UNTIL_REPEAT 10 #define BORDER_LESSON_IS_SENTENCE 7 #define LAST_LESSON 18 // lesson with training of all characters #define NUMPAD_LESSON_START 19 #define SYNCHRON_DB_WHILE_TRAINING false // Standard constants #define DATE_TIME_FORMAT "dd.MM.yyyy hh:mm" #define DATE_FORMAT "dd.MM.yyyy" #define KEYBOARD_LAYOUT_STANDARD 0 // 0=DE, 1=CH, 2=NEO etc. #if APP_MAC #define KEYBOARD_LAYOUT_MAC 1 // 0=WIN, 1=MAC #else #define KEYBOARD_LAYOUT_MAC 0 // 0=WIN, 1=MAC #endif #define LESSON_TIMELEN_STANDARD 5 #define LESSON_TOKENLEN_STANDARD 500 #define TICKERSPEED_STANDARD 2 #define TICKER_COLOR_FONT "#000000" #define TICKER_COLOR_BG "#FFFFFF" #define TICKER_COLOR_CURSOR "#CDCDCD" #define METRONOM_STANDARD 60 // Font format #define FONT_STANDARD "Arial" #if APP_WIN #define FONT_SIZE_TICKER 18 #define FONT_SIZE_TICKER_PAUSE 16 #define FONT_SIZE_STATUS 8 #define FONT_SIZE_PROGRESS 8 #define FONT_SIZE_PROGRESS_LESSON 6 #define FONT_SIZE_FINGER 10 #endif #if APP_MAC #define FONT_SIZE_TICKER 22 #define FONT_SIZE_TICKER_PAUSE 20 #define FONT_SIZE_STATUS 10 #define FONT_SIZE_PROGRESS 10 #define FONT_SIZE_PROGRESS_LESSON 8 #define FONT_SIZE_FINGER 12 #endif #if APP_X11 #define FONT_SIZE_TICKER 18 #define FONT_SIZE_TICKER_PAUSE 16 #define FONT_SIZE_STATUS 8 #define FONT_SIZE_PROGRESS 8 #define FONT_SIZE_PROGRESS_LESSON 6 #define FONT_SIZE_FINGER 10 #endif // Window dimensions and icon filename #if APP_WIN #define APP_WIDTH_STANDARD 640 #define APP_HEIGHT_STANDARD 470 #define APP_WIDTH_SMALL 640 #define APP_HEIGHT_SMALL 200 #define ICON_FILENAME "icon.ico" #endif #if APP_MAC #define APP_WIDTH_STANDARD 720 #define APP_HEIGHT_STANDARD 500 #define APP_WIDTH_SMALL 680 #define APP_HEIGHT_SMALL 210 #define ICON_FILENAME "icon.png" #endif #if APP_X11 #define APP_WIDTH_STANDARD 700 #define APP_HEIGHT_STANDARD 520 #define APP_WIDTH_SMALL 640 #define APP_HEIGHT_SMALL 200 #define ICON_FILENAME "icon.png" #endif #endif // DEFINES_H tipp10-2.1.0/def/errordefines.h000066400000000000000000000054411274324046000162330ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** File name: errordefines.h ** ****************************************************************/ #ifndef ERRORDEFINES_H #define ERRORDEFINES_H // Error message text //******************** // Failed pic operations error numbers #define ERR_LOGO_PIC 101 #define ERR_KEY_PIC 102 #define ERR_TICKER_PIC 103 #define ERR_STATUS_PIC 104 // SQL connection error numbers #define ERR_SQL_DB 201 #define ERR_SQL_CONNECTION 202 #define ERR_SQL_DB_APP_EXIST 203 #define ERR_SQL_DB_USER_EXIST 204 #define ERR_SQL_DB_APP_COPY 205 #define ERR_SQL_DB_USER_COPY 206 // Lesson operation error numbers #define ERR_DB_VERSION_EXIST 301 #define ERR_USER_LESSONS_FLUSH 302 #define ERR_USER_ERRORS_FLUSH 303 #define ERR_LESSONS_EXIST 304 #define ERR_LESSONS_SELECTED 305 #define ERR_LESSONS_CREATION 306 #define ERR_LESSONS_UPDATE 307 #define ERR_USER_ERRORS_REFRESH 308 #define ERR_USER_LESSONS_REFRESH 309 #define ERR_USER_LESSON_ADD 310 #define ERR_USER_LESSON_GET 311 #define ERR_USER_LESSON_ANALYZE 312 #define ERR_USER_IMPORT_READ 313 #define ERR_USER_IMPORT_EMPTY 314 #define ERR_USER_DOWNLOAD_EXECUTION 315 #define ERR_USER_EXPORT_WRITE 316 // Update operations error numbers #define ERR_TEMP_FILE_CREATION 401 #define ERR_UPDATE_EXECUTION 402 #define ERR_ONLINE_VERSION_READABLE 403 #define ERR_DB_VERSION_READABLE 404 #define ERR_UPDATE_SQL_EXECUTION 405 #define ERR_ERROR_DEFINES_EXIST 406 #define ERR_LESSON_CONTENT_EXIST 407 #define ERR_ANALYZE_TABLE_CREATION 408 #define ERR_ANALYZE_INDEX_CREATION 409 #define ERR_ANALYZE_TABLE_FILL 410 // Error message addons //********************** // Error message type numbers #define TYPE_INFO 901 #define TYPE_WARNING 902 #define TYPE_CRITICAL 903 // Error message cancel numbers #define CANCEL_NO 911 #define CANCEL_OPERATION 912 #define CANCEL_UPDATE 913 #define CANCEL_PROGRAM 914 #endif // ERRORDEFINES_H tipp10-2.1.0/error.aif000066400000000000000000000134101274324046000144420ustar00rootroot00000000000000FORMAIFFCOMM @DSSND;zq3X缑Ó%ÕEϖ0&1  ‡H&SIB$/+"9))#' #w%#%,"%?*^~~)=2:"37w3a52[414-8ٔ֜ TI=IE>iA=?:>|6BoʗVjiwɥM2RE]M\F9JEaGDFBE>)Iy8íRӭfz3֬|W?IQzJuN IKH J EIBMiਟW 9ױ(\ϹήnEYM5TMQLNK7LI3LMENO~&J(‘Ƌ[XN^TNQ MSNKMILmFO^)br̽]Ud7XO TO"QMOdW"҈Q#JNJYLIIGHWEG]BI.ʺY}yцл "ұ־N"IJLHJGFGEFLDVERAF,1BqtG^i݅z}KEIFuHE{FwDNDBBAKA?Bi1f֓ԌmւXsbڏ eمZDDFCXDAB+@@?m?m=E?m2vndj/#@)@A??>B>1=<;;s9;/,cUf26>X<<;u;3:&99 87h8B0 9(Ds+^mp6:~9887{7(6N55S443-(fQFh27655U44(322110}-kIggA],4 1210//..-k.,>+1iVT>%'f1n.Z/--,,++*+%)>)uHpJ#,)*)s)(('|'&^'j%&^EJ'84l8* &'&@&%f%$$#$j"a$&z9s 1>%W"d#=!"!!&! [  l Q sMs"F eXkr\Oq(`S[:gt!6)MkQ-ZKx'13F& l)Xm`P"&HH 4Hf$D|f ru!Wh } } 9 9  _ =  t R 0 e V 4 # # z i    ~~\mK: qO-s QbBxggD"""zzz|IZ7IKK~\\99++Kq>O>O->--- s @bbbb/b@/ /1dBdSuu 11 1  gVxggVEgxV4EEE4VEV#4#4gxxggxxxgxxExxxxxgVV3xVVEVggVEE3VVVEVV3V"3E"""EVg"E3"""33"EE"3"""Ebb@ ,. !# ' ( )) + ;-.. !""$&&5'(F))88I:-J.JK0>??M@@OOPP5C)DR*8FGbcVIIde=X>LgMhN[AO]]klRR`FaGIcJderfLfg[hh\ijQkRR_y`an{o|cq~qrrssthilzn{|d}}r~|\    &  !"&/  **+4#4,$56.&/'7' (1!)2*++34<4=5.6F7//80811:2:;;,44L==M6F?GGG@P9AIJJCRKDDS>>F?FUNOAPIPQJJKDYZELT[TUNVeVPI^XX_`RYaa[[[bcVc]ePfKm_mgnZaaiibjqqdxleleftnagohhviiq}klrlysszztouov|pwxx~syzz{{jvw}~~t}ptipp10-2.1.0/error.wav000066400000000000000000000224101274324046000145000ustar00rootroot00000000000000RIFF%WAVEfmt DXPAD data;zq3X珑Ö%ÒEϑ0&1  H&SIB$/+9"))# 'w#%#,%"%?*^~~)=2":3w7a35[2414-8ٚ֗ ʚTȨII=Ei>A=?q<>:|>6BoʞVjiwɠM2R]E\M9FJaEGDFBE)>yI8æRӮfz3ַ|?WIzQuJ NIK H JEIBiM௟W 9ײ(\ϱιnEY5MTMQLN7KL3IMLNE~O&J(ƿƷ[X^NTN QSMNKMImLF^O)br̾]Udʿ7X OT"OQMdW"و#QJNYJLIIGWHE]GBI.Y}yΆѻ "ԱҾѢ"NJILHJFGGELFVDREA,F1BqtG^iۅz}KEIuFH{EwFNDDBBKAA?iB1fՓ֌mׂXsbُ e܅ZDDFXCDA+B@@m?m?E=m?v2ndj/#)@@A??B>1>=<;s;9;/,c߲Uf2O<6>X><,1+iVT>%f'n1Z./--,,++*%+>))uHpJ#,)*s))((|''^&j'%^&EJ'84l8 *&'@&&f%%$$#j$a"&$z9s 1>W%d"=#!!"&!![ l  Q sMsF" eXkr\Oq(`S[:gt!6)MkQ-ZKx'13F&l )Xm`P"&HH4 Hf$D|f ru!Wh } } 9 9  _ =  t R 0 e V 4 # # z i     ~~\mK: qO-s QbBxggD"""zzz|IZ7IKK~\\99++Kq>O>O->--- s @bbbb/b@/ /1dBdSuu 11 1  gVxggVEgxV4EEE4VEV#4#4gxxggxxxgxxExxxxxgVV3xVVEVggVEE3VVVEVV3V"3E"""EVg"E3"""33"EE"3"""Ebb@ ,. !# ' ( )) + ;-.. !""$&&5'(F))88I:-J.JK0>??M@@OOPP5C)DR*8FGbcVIIde=X>LgMhN[AO]]klRR`FaGIcJderfLfg[hh\ijQkRR_y`an{o|cq~qrrssthilzn{|d}}r~|\    &  !"&/  **+4#4,$56.&/'7' (1!)2*++34<4=5.6F7//80811:2:;;,44L==M6F?GGG@P9AIJJCRKDDS>>F?FUNOAPIPQJJKDYZELT[TUNVeVPI^XX_`RYaa[[[bcVc]ePfKm_mgnZaaiibjqqdxleleftnagohhviiq}klrlysszztouov|pwxx~syzz{{jvw}~~t}ptipp10-2.1.0/games/000077500000000000000000000000001274324046000137255ustar00rootroot00000000000000tipp10-2.1.0/games/abcrainwidget.cpp000066400000000000000000000315771274324046000172510ustar00rootroot00000000000000 #include #include #include #include #include #include #include #include #include #include #include #include #include "abcrainwidget.h" #include "def/errordefines.h" #include "widget/errormessage.h" #include "def/defines.h" static const double Pi = 3.14159265358979323846264338327950288419717; static const int AreaWidth = 580; static const int AreaHeight = 360; static const int AreaX = 0; static const int AreaY = 0; static const int GroundWidth = 580; static const int GroundHeight = 10; static const int GroundX = 0; static const int GroundY = AreaHeight - GroundHeight; static const int BallWidth = 30; #if APP_MAC static const int FontSizeH1 = 12; static const int FontSizeH2 = 14; static const int FontSizeH3 = 26; static const int FontSizeH4 = 60; #else static const int FontSizeH1 = 10; static const int FontSizeH2 = 11; static const int FontSizeH3 = 20; static const int FontSizeH4 = 50; #endif AbcRainWidget::AbcRainWidget(QWidget *parent) : QWidget(parent) { qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); gamePaused = 0; gameStarted = 0; gameOvered = 0; // Set the logo companyLogo = new CompanyLogo(this, true); stepsLevel << 1 << 2 << 3 << 4 << 5 << 6 << 7 << 7 << 8 << 9 << 9 << 10 << 10 << 11 << 11 << 12 << 12 << 13 << 13 << 14 << 14 << 15 << 15 << 16 << 16 << 17 << 17 << 18 << 18; stepsNumBalls << 2 << 2 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1; stepsTimerSpeed << 80 << 70 << 70 << 70 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60 << 60; stepsTimerNewBall << 24 << 24 << 20 << 20 << 20 << 16 << 10 << 10 << 5 << 10 << 10 << 10 << 10 << 14 << 10 << 10 << 10 << 10 << 10 << 10 << 10 << 10 << 10 << 10 << 10 << 5 << 5 << 5 << 3; stepsOffset << 1 << 2 << 2 << 3 << 3 << 3 << 3 << 3 << 3 << 4 << 4 << 5 << 5 << 3 << 3 << 4 << 4 << 5 << 5 << 6 << 6 << 7 << 7 << 8 << 8 << 8 << 8 << 10 << 14; scene = new QGraphicsScene; scene->setSceneRect(AreaX, AreaY, AreaWidth, AreaHeight); scene->setItemIndexMethod(QGraphicsScene::NoIndex); for (int i = 0; i < 26; ++i) { abclist.append(QChar(97 + i)); } ground = scene->addRect(GroundX, GroundY, GroundWidth, GroundHeight, QPen(QColor(200, 0, 0)), QBrush(QColor(200, 0, 0))); levelText = new QGraphicsTextItem(tr("Leertaste startet das Spiel")); levelText->setFont(QFont("Arial", FontSizeH3, 100)); levelText->setDefaultTextColor(QColor(0, 0, 0, 250)); levelText->setPos((AreaWidth / 2) - (levelText->boundingRect().width() / 2), (AreaHeight / 2) - (levelText->boundingRect().height() / 2) - 10); scene->addItem(levelText); levelSubText = new QGraphicsTextItem(""); levelSubText->setFont(QFont("Arial", FontSizeH1, 100)); levelSubText->setDefaultTextColor(QColor(0, 0, 0, 250)); levelSubText->setPos(0, 0); scene->addItem(levelSubText); view = new QGraphicsView; view->setScene(scene); view->setRenderHint(QPainter::Antialiasing); view->setBackgroundBrush(QPixmap(":/games/img/pattern_" + QString::number(qrand() % 16) + ".png")); view->setCacheMode(QGraphicsView::CacheBackground); //view->setDragMode(QGraphicsView::ScrollHandDrag); //view->setSceneRect(AreaX, AreaY, AreaWidth + 200, AreaHeight + 200); //view->resize(AreaWidth + 200, AreaHeight + 200); buttonHelp = new QPushButton(tr("&Hilfe")); buttonHelp->setFocusPolicy(Qt::NoFocus); buttonPause = new QPushButton(tr("&Pause")); buttonPause->setEnabled(false); buttonPause->setFocusPolicy(Qt::NoFocus); buttonReady = new QPushButton(tr("Spiel &beenden")); buttonReady->setFocusPolicy(Qt::NoFocus); // Button layout horizontal QHBoxLayout *buttonLayoutHorizontal = new QHBoxLayout; buttonLayoutHorizontal->addWidget(buttonReady); buttonLayoutHorizontal->addSpacing(10); buttonLayoutHorizontal->addWidget(buttonHelp); buttonLayoutHorizontal->addWidget(buttonPause); // Button layout vertical QVBoxLayout *buttonLayoutVertical = new QVBoxLayout; buttonLayoutVertical->addSpacing(20); buttonLayoutVertical->addLayout(buttonLayoutHorizontal); // Logo layout vertical QVBoxLayout *logoLayout = new QVBoxLayout; logoLayout->addSpacing(10); logoLayout->addWidget(companyLogo); // Logo layout + button layout horizontal QHBoxLayout *bottomLayout = new QHBoxLayout; bottomLayout->addLayout(logoLayout); bottomLayout->addStretch(1); bottomLayout->addLayout(buttonLayoutVertical); // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(view); mainLayout->addSpacing(1); mainLayout->addLayout(bottomLayout); mainLayout->setMargin(15); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(timerEvent())); // Button connections connect(buttonPause, SIGNAL(clicked()), this, SLOT(pauseGame())); connect(buttonReady, SIGNAL(clicked()), this, SLOT(clickReady())); connect(buttonHelp, SIGNAL(clicked()), this, SLOT(showHelp())); this->setFocus(); setFocusPolicy(Qt::StrongFocus); } AbcRainWidget::~AbcRainWidget() { } void AbcRainWidget::startGame() { buttonPause->setEnabled(true); levelText->setFont(QFont("Arial", FontSizeH4, 100)); levelSubText->setPlainText(""); points = new QGraphicsTextItem(); points->setFont(QFont("Arial", FontSizeH2, 100)); points->setPos(0, 0); scene->addItem(points); timerCounter = 0; shotPoints = 0; ballCounter = 0; step = 0; gameStarted = 1; level = 0; timer->start(100); nextStep(); for (int i = 0; i < numBalls; ++i) { setBall(); } numBalls = 1; } void AbcRainWidget::nextStep() { if (gameStarted == 1 && gamePaused == 0) { if (level != stepsLevel[step]) { setLevel(); } level = stepsLevel[step]; numBalls = stepsNumBalls[step]; timerSpeed = stepsTimerSpeed[step]; timerNewBall = stepsTimerNewBall[step]; offset = stepsOffset[step]; timer->setInterval(timerSpeed); refreshStatus(); if (step < stepsLevel.size() - 1) { step++; } } } void AbcRainWidget::setBall() { if (abclist.size() > 0) { // Zufaelligen Buchstaben aus der ABC-Liste entnehmen QChar characterTemp = abclist.takeAt((qrand() % abclist.size())); // Kugel erzeugen int position = 0; if ((ballCounter % 4) == 0) { // 1/4 position = (qrand() % ((GroundWidth / 4) - (BallWidth / 2)) + 1) + (BallWidth / 2); } if ((ballCounter % 4) == 1) { // 3/4 position = (qrand() % (GroundWidth / 4) + 1) + (GroundWidth / 2); } if ((ballCounter % 4) == 2) { // 2/4 position = (qrand() % (GroundWidth / 4) + 1) + (GroundWidth / 4); } if ((ballCounter % 4) == 3) { // 4/4 position = (qrand() % ((GroundWidth / 4) - (BallWidth / 2)) + 1) + (3 * GroundWidth / 4); } charballs.append( new CharBall( BallWidth, position, 2, characterTemp) ); // Schriftzeichen der aktuellen Zeichenliste hinzufuegen charlist.append(characterTemp); scene->addItem(charballs.last()); charballs.last()->wind = (qrand() % 8) + 2; charballs.last()->rad = 0; chartext.append(new QGraphicsTextItem(QString(characterTemp), charballs.last(), scene)); chartext.last()->setFont(QFont("Courier", 16, 100)); chartext.last()->setPos(-(chartext.last()->boundingRect().width() / 2), -(chartext.last()->boundingRect().height() / 2)); ballCounter++; if ((ballCounter % 10) == 0) { //setTimer(ballSpeed--); nextStep(); } } } void AbcRainWidget::keyPressEvent(QKeyEvent *event) { // A key was pressed, read the typed text QString typed = event->text(); if (typed == "") { // Return if no text was typed // i.e. if only a modifier was pressed return; } if (gameStarted == 1 && gamePaused == 0) { destroyBall(typed[0], 0); } else { if (typed == " ") { if (gameStarted == 0 && gameOvered == 0) { startGame(); } else { gamePaused = 0; buttonPause->setEnabled(true); levelText->setPlainText(""); } } } // Emit the pressed QChar //delete mouse; //emit keyPressed(typed[0]); } void AbcRainWidget::timerEvent() { if (gamePaused == 0) { timerCounter++; if (timerCounter > timerNewBall) { timerCounter = 0; //for (int i = 0; i < numBalls; ++i) { setBall(); //} numBalls = 1; } if (showLevel > 20) { levelText->setPlainText(""); scene->update(); showLevel = 0; } else { if (showLevel > 0) { showLevel++; levelText->setDefaultTextColor(QColor(0, 0, 0, 250 - (showLevel * 10))); scene->update(); } } int xTemp; foreach (CharBall *charball, charballs) { charball->rad += charball->wind * (qrand() % 2 + 1); xTemp = (int) ((qreal) charball->x() - cos((charball->rad / 180) * Pi) * 2); if (xTemp < (BallWidth / 2)) { xTemp = (BallWidth / 2); charball->rad = 90; } if (xTemp > AreaWidth - (BallWidth / 2)) { xTemp = AreaWidth - (BallWidth / 2); } if (charball->y() < AreaHeight - GroundHeight - (BallWidth / 2)) { charball->setPos(xTemp, charball->y() + offset); } else { charball->setPos(xTemp, AreaHeight - GroundHeight - (BallWidth / 2)); destroyBall(charball->character(), 1); timer->stop(); setGameOver(); return; } //scene->update(); } } } void AbcRainWidget::setGameOver() { buttonPause->setEnabled(false); gameStarted = 0; gameOvered = 1; QGraphicsTextItem *gameOverText = new QGraphicsTextItem( "GAME OVER" ); gameOverText->setFont(QFont("Arial", FontSizeH4, 100)); gameOverText->setPos((AreaWidth / 2) - (gameOverText->boundingRect().width() / 2), (AreaHeight / 2) - (gameOverText->boundingRect().height() / 2)); QGraphicsTextItem *gameOverTextSub = new QGraphicsTextItem( tr("Erreichte Punktzahl: ") + QString::number(shotPoints) ); gameOverTextSub->setFont(QFont("Arial", FontSizeH3, 100)); gameOverTextSub->setPos((AreaWidth / 2) - (gameOverTextSub->boundingRect().width() / 2), (AreaHeight / 2) - (gameOverTextSub->boundingRect().height() / 2) + gameOverText->boundingRect().height() + 12); scene->addItem(gameOverText); scene->addItem(gameOverTextSub); scene->update(); } void AbcRainWidget::setLevel() { showLevel = 1; //QGraphicsItem *gameOver = new QGraphicsItem(0); view->setBackgroundBrush(QPixmap(":/games/img/pattern_" + QString::number(qrand() % 16) + ".png")); levelText->setPlainText( "LEVEL " + QString::number(level + 1) ); levelText->setDefaultTextColor(QColor(0, 0, 0, 250)); levelText->setPos((AreaWidth / 2) - (levelText->boundingRect().width() / 2), (AreaHeight / 2) - (levelText->boundingRect().height() / 2) - 10); if (level == 10) { for (int i = 0; i < 26; ++i) { abclist.append(QChar(65 + i)); } } //scene->update(); } void AbcRainWidget::destroyBall(QChar character, int keep) { int i; if ((i = charlist.indexOf(character)) == -1) { if (shotPoints > 0) { shotPoints--; refreshStatus(); } return; } charlist.removeAt(i); if (keep == 0) { charballs.at(i)->destroy(); shotPoints++; } /*delete charballs.at(i); charballs.removeAt(i); delete chartext.at(i); chartext.removeAt(i);*/ scene->removeItem(chartext.takeAt(i)); scene->removeItem(charballs.takeAt(i)); abclist.append(character); refreshStatus(); } void AbcRainWidget::refreshStatus() { points->setPlainText(tr("Level ") + QString::number(level) + " " + tr("Punkte: ") + QString::number(shotPoints)); scene->update(); } void AbcRainWidget::pauseGame() { if (gameOvered == 0 && gameStarted != 0) { gamePaused = 1; buttonPause->setEnabled(false); levelText->setFont(QFont("Arial", FontSizeH3, 100)); levelText->setDefaultTextColor(QColor(0, 0, 0, 250)); levelText->setPlainText(tr("Leertaste setzt das Spiel fort")); levelText->setPos((AreaWidth / 2) - (levelText->boundingRect().width() / 2), (AreaHeight / 2) - (levelText->boundingRect().height() / 2) - 10); scene->update(); } } void AbcRainWidget::clickReady() { // User finished the evaluation // -> emit a ready signal emit readyClicked(); } void AbcRainWidget::showHelp() { pauseGame(); helpBrowser = new HelpBrowser("game.html", 0); helpBrowser->show(); } tipp10-2.1.0/games/abcrainwidget.h000066400000000000000000000071261274324046000167070ustar00rootroot00000000000000 #ifndef ABCRAINWIDGET_H #define ABCRAINWIDGET_H #include #include #include #include #include #include #include #include #include #include #include "charball.h" #include "widget/helpbrowser.h" #include "widget/companylogo.h" //! The MainWindow class provides the main window of the application. /*! The MainWindow class shows the main window. At startup it shows the widget StartWidget. Over functions the widget can be changed also to TrainingWidget or Evaluatonwidget. In addition it has an own menu bar. @author Tom Thielicke, s712715 @version 0.1.9 @date 01.07.2006 */ class AbcRainWidget : public QWidget { Q_OBJECT public: //! Constructor, initializes the window and shows the start widget. /*! This contructor initializes the following variable: - trainingStarted = false In addition, it sets menu actions and the menu bar over functions createActions() and createMenu(). After that, it creates the start widget over function createStart() and reads the settings over function readSettings(). At the end it sets the window title, icon and window size. @see trainingStarted, createActions(), createMenu(), createStart(), readSettings() */ AbcRainWidget(QWidget *parent = 0); //! Deconstructor, writes the current settings to hard disk. /*! This decontructor writes the settings over function writeSettings(). @see writeSettings() */ ~AbcRainWidget(); private slots: void timerEvent(); //! Slot, connected with the clicked() function of the ready button. /*! After the user pushed the ready button, this function emits the signal readyClicked() to inform the parent class about user finished. */ void clickReady(); //! Slot, shows the help dialog. /*! This slot shows the help dialog. It creates an object of the QDialog class with an QTextbrowser. */ void showHelp(); void pauseGame(); protected: void keyPressEvent(QKeyEvent *event); signals: void keyPressed(QChar key); //! Signal, emits that the user has finished the evaluation. /*! After the user clicked the ready button, the function clickReady() emits this signal to inform the parent class about user finished. */ void readyClicked(); private: void startGame(); void refreshStatus(); void setBall(); void setGameOver(); void setLevel(); void nextStep(); void destroyBall(QChar character, int keep = 0); QGraphicsScene *scene; QGraphicsView *view; //CharBall **charball; QGraphicsRectItem *ground; QGraphicsTextItem *points; QGraphicsTextItem *levelText; QGraphicsTextItem *levelSubText; QList charballs; QList chartext; QList charlist; QList abclist; QList stepsLevel; QList stepsNumBalls; QList stepsTimerSpeed; QList stepsTimerNewBall; QList stepsOffset; QTimer *timer; QPushButton *buttonHelp; QPushButton *buttonReady; QPushButton *buttonPause; int timerId; int shotPoints; int ballCounter; int level; int numBalls; int timerSpeed; int timerCounter; int timerNewBall; int offset; int step; int gameStarted; int gamePaused; int gameOvered; int showLevel; //! Object of the company logo widget CompanyLogo *companyLogo; //! Object of the help browser dialog HelpBrowser *helpBrowser; }; #endif //ABCRAINDIALOG_H tipp10-2.1.0/games/charball.cpp000066400000000000000000000032251274324046000162030ustar00rootroot00000000000000 #include "charball.h" #include //static const double Pi = 3.14159265358979323846264338327950288419717; //static double TwoPi = 2.0 * Pi; CharBall::CharBall(int size, int position, int speed, QChar character) : color(qrand() % 128 + 128, qrand() % 128 + 128, qrand() % 128 + 128) { currentSpeed = speed; currentRadius = size/2; currentY = - 2 - size; currentX = position; currentCharacter = character; setPos(currentX, currentY); destroyed = 0; //startTimer(1000 / 33); } QRectF CharBall::boundingRect() const { qreal adjust = 0.0; return QRectF(-currentRadius - adjust, -currentRadius - adjust, (2 * currentRadius) + adjust, (2 * currentRadius) + adjust); } QPainterPath CharBall::shape() const { QPainterPath path; path.addRect(-currentRadius, -currentRadius, 2 * currentRadius, 2 *currentRadius); return path; } void CharBall::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) { // Body painter->setBrush(color); painter->drawEllipse(-currentRadius, -currentRadius, 2 * currentRadius, 2* currentRadius); //painter->setBrush(QColor(0, 0, 0)); if (destroyed != 0) { destroying(); } } QChar CharBall::character() { return currentCharacter; } void CharBall::destroy() { destroyed = 56; //delete this; //return; update(); } void CharBall::destroying() { color = QColor(0, 0, 0); destroyed--; //currentRadius = currentRadius - (28 + (destroyed / 4)); if (destroyed < 2) { destroyed = 0; this->setVisible(false); //delete this; return; } else { update(); } } tipp10-2.1.0/games/charball.h000066400000000000000000000015261274324046000156520ustar00rootroot00000000000000#ifndef CHARBALL_H #define CHARBALL_H #include #include #include #include #include #include #include #include #include class CharBall : public QObject, public QGraphicsItem { Q_OBJECT public: CharBall(int size, int position, int speed, QChar character); QRectF boundingRect() const; QPainterPath shape() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); void destroy(); QChar character(); double wind; double rad; private: void destroying(); int currentSpeed; int currentX; int currentY; int currentRadius; int destroyed; QColor color; QChar currentCharacter; }; #endif // CHARBALL_H tipp10-2.1.0/games/img/000077500000000000000000000000001274324046000145015ustar00rootroot00000000000000tipp10-2.1.0/games/img/pattern_0.png000066400000000000000000000152061274324046000171070ustar00rootroot00000000000000PNG  IHDRO<gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATx]KFfp~6s>OӇq">lfotQOe?(H> zMR H|[kخׂl^?=}O9/%G #WӅ<C=^4Dh@gZv\ł SKc;3]{KI!G1m;MgVykY^[` vk3@aLUk.)qK1'!+wlLUp?V\K:J$-mN5}Qg_qp]=oX ^w"3W7Y ;"f&PdžK!L)S=&5 ܷk*d_j$K%7-`]bM`qKjvB2SpUaȵ-3]ܒ=-(AÔnI K @:/*N3m4Mr=@*BR=g:s)qy7b,ctKm3S 1 0 `q[Ejw+0{Bg:Ǡ%[ķg ۀPt[%mo! BiIل uatz 8BmbJK9>$A4")]A;* (SA|屨p;,# 3I V߈]}01JNKh>Bk:]OE獓I<\3-y^i(nFp}J*˴6Ogsk-YGnSU_Eh㦄8R_#Ӓqصl{*#tiϑe2xjˀk`ܫ фb3,uv'&5#ˍNُY!?nFL9'>X'u rK{LLw^戥V=7p@+1͐7JR-b(aNZ׺[~ @>Y ^Ϩ岜ւ&h]-cu/VTY-U!$)u,5\hWIkF|G1d5]Ib)vrԈ7bUs3YtA;xHMN`ݎ򞃥hP0R#rIuX ֿn_0՞ۭzMQ7SO%@x*Xm?&Ut.W~cJKw3c)~2I7Dži1Hye6 mҫ=/孉TًxtEƅrKZUΦiϳb:=z[%"'v='Ĺ#r]pMGTs!WPB .R権BM!y~(<|qcڰQ?e57Ҟ,[5'Wix|UZвeN"j6AY*_ k}tAG;jK!~y0Sx$"/o/֞:a]& ~e,>{ PG%pD R ֔X^p7Pb]^Ձ>qpBOTÆ.=aLӞ'xZ&йLmЪ{UM@zXڀ2$v8'#sRo_\PHwǠ7aǔ^ԅ*<m*u(F0̤CȤ8ش$A09J}C `\O?LRжRuLvYLEݴJK_+RU'KRYI)J:bEz'X|<-!IiV"! Jv!<_#U+ȩ,ܶ+$|u1kf9Lj8U$2MYR_w1UpһCIK5d/o&WĘ@xELCXՑ{sHLs'(< ,Up^̤'W5~"rM=*ɧK.텙\ٺx9T[uOK4h\^=NLs%LKzR,&~hk.ux|7>[5q4C"g+"̡1378&uo:"9^޻8G({SmTmtIjhgLQ=41Ks$-R<\坅,뼼(!s?b c'PzdN˱wJsTSf7#8@켔=}9^sťx swOͮ頞B2C3pEV=Ɨ~'ўMp|,z){/p,gt7QێgEigp}`03w*r2̫%LGzj)Js'm'>hzWuX%H ?jyўl& þ1?W5[􎬫! _u6ouZ>f ĠWu8D,bsFc+<^j sKȕ <}s0L!#엋ȶ@OƖ>-tZxo!)ɋr MFŰt9ӰѪ2ρXn;U.Pe^twǮe{yKhqo{~ܘXjCyR0u_*}dgi=4_k[{I}D!*^-[#ŪMi; 4E5hgFG&e)V"O|mK'K陕m{ [c/j^LSJ!9=BX W=]?ձԇ?5FE 5a^˒A)$c`I֩%Ƨg߅V-Rn]}Hh AIdmH9}6sحR'S,Kh) .Xk,">=>fJO=\'>rHJqj1sj(.2ZxX; d)2S`SR+rKТNb묍BR8FuKWև_-Goc!AR{fE2Ri bߊ^#EQӔ} G~%ge}O=jl]`njTȕng_Q# Cgp'|9 IENDB`tipp10-2.1.0/games/img/pattern_1.png000066400000000000000000000004471274324046000171110ustar00rootroot00000000000000PNG  IHDRZgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxڜS 0ۤ7t@wĿoV]r}H#9ùL4P=`y|k5z[m6 9-p]`c643gU6<{LLۏggFF 8>>BÛ UeggV2=e1 @ެ7pO$LIENDB`tipp10-2.1.0/games/img/pattern_10.png000066400000000000000000000007721274324046000171720ustar00rootroot00000000000000PNG  IHDR$$nbgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxVN1 ܳH4W|1== Š kΏQN'~zX$l%J%qWӽ!E8EըT] )WPAcޚj^%IHU{7}xwr;zz^uJw;_bf!~ec/֚Vmd9=ܴFM]2qh^Xɨf,!\* ^\kfFֱ=v~mdz3xW{tG^ [F"R8@/[ ě|8&_agN#=^;sCZ2B=ppC>x{fPo"-,?p F|WJ)%rٳǴM}oU!CZH&)u!`.Ik ;fk7 g L(*08K L0:v`YͮZJ„X7#EЫ GP U`B)pT Q&ߋŸg` f2zr h7Ʉ&m U OIENDB`tipp10-2.1.0/games/img/pattern_13.png000066400000000000000000000016231274324046000171710ustar00rootroot00000000000000PNG  IHDR:*mgAMA7tEXtSoftwareAdobe ImageReadyqe<%IDATxڴX11 ŕ)^-Hu_wWH`G )v#eR̞??KĚ Sw~}W=y.sdY ap d#P hd o(7v@RHL]?lqiW4l ώn)<*>0͵opC9=|hR:\,BY߽GAʑN?EUv^*_*z67\ ɏb$-:hL#Ϯ!ȹE]hEs"<,#kne7ذ(W&ԝ"7zb|l=ȺiL㍃ &fM#hAj窧t6q noL.ۣf8J5QJ!HCttIG~wK y=p7Tι˭ʬ5.#'Hb0.ic޼$Mj&[qSK[KU@]QTf%.j3jڴVAV?VYJAX:LDVTך5Ѐ~NhKm 7Eڂgpa𚝇wO-aʵO ;WX еh7U[mTXX ob(xDb5wv AD Ȇ(W-[GeѮI&Yo39Hz(5#wwB33ݒ{]v*q6\^ $A#-DA]0gn5q^zK/.5IjDTZs^)}}xjAϯF!x"s$˥Z@~_m}aNk17@3#ckmQ+#WìnUi$~Tﳟ-AZ3qն.XNAv?,jl6k_g#Sm!"~t^/<\JP_X=xL\ k_Ӓ A>x﬛=y%T_FzYe[Ϙ~ xB6dFDq$SQoAh󺟖;SsT:p7ě[/ ? d]NO&+[!I-WtFbqJtcO}<2QuJI i0 ICrO ` B|JCQ šAQK OI|ݒA~Rۆ[L*>94H4V;vkXp}x}̨ʏǨ,Ʋi:Bh6;>mXmE:r}f'B3,֍(YFĩ5z"d3sΧÓʜ Fע=>njzo9$F{VQx$_dd 砖> gLDd&uG9.btCBQ/QRw99D@@:'S|:W1'[wrN`!p,Ųx CP3ؒ꫔|ӢX gD!h q7bX2tdȬ -R"U0ks ohLc_3߆( 2::ݛ[i嘈إ]Dvڍ'G(J/ e*Njf[ϝJW5NհᔣBېdVL(SJ@bdkSA^rOOĥi2ˆB4 uN\3'} ?[3 ꕎЙTD />{Q}J{d䠯-p-o&'nZ!:*j$e$NeQun{Ej6iבħ쏗w_FrQܙ@`R F'!oNOޙj"݃SO!ȴrd@yWc$ /^N]{a^LW~j<Ɂep'O&=qF #$? EW8 ieI6&|'q]-i:eJ>2C7-7vsoJADp%,6`7h]XQaŝ-"*lJ$8d7샧ԥyzWÈ'׾ە'f<$Bro_?>-mœEJ)qEȎOi_oS$0ľlٯm*6g] (* w F“ b"-?ףBCwyFJY޾yı[nyAZ#$"ysw:o.& ?A{5\yl"V)v-GR:KƸtIn7J?cɜ${/A*!n$k=UݥCN.oa #' Lzj{}.?$KEW>2O(צ@`&CDl">Ρ@2l T5<ʙā9zοğ:'_(I=|1E(/ nm  8)S]錻w0~߸|W :K[gIENDB`tipp10-2.1.0/games/img/pattern_15.png000066400000000000000000000072321274324046000171750ustar00rootroot00000000000000PNG  IHDR1bvgAMA7tEXtSoftwareAdobe ImageReadyqe<,IDATxڼ[o(lK}rG&8phpy=- mFV!ɢVpI.+Ɏv7?g 5{g+aLyyϰe˭.m/r :κq[&Y{ήQޞCQlUo,0 5; OhѺQ& e:``m{!<e6vبg.x-9.X[ln1\71"z, qh[+fHz,\gsKFV߭(/ܶUO9wR?U6<,qex1pdz2~6bk/n?zT&dѩIv=o{SPww7rO0vdWUx g*6"p6I:AQf7 gu?j#wޱN0,sn$ks `nAPf8<[ xUąx'lCBJ*Thz'A76~ 5DץBG\y;T0dűS2km<q曋mt{.⑅qoja( 74ßcfP M0U 9 ~}x d0_M (Vᛛ@6Q!-kH)ǻL $۝H䕧_Z"%N:P6dce|Z[9R)D9mP0}nMw*H֠cK4_?6D֦n@l<6"<NIC{ w[iAݬ͎I;%eA 4pUp{`#bd\!pI}|8Y?א'%ȋ'6p}3&:qK! &aݼm4hG%jl#<8ebVs 9i|asNp/s*$⺭iRV/*0[:J~D 4=O|x8)K_ޅ˖-rxeRy,-yUH̃a"?1ҌxrLV3'aXn^+܈+U&0s9K#woPz̸p +&![Zr[]Nsμ%zkO^+`D]:<ҩ*f텪pjN3^UssS\0QD5y *L<:d*'մVo[|-^0h3uA<>x[9upJz4@ #U~&ʽ'xIEG'h~"Y}8e4ƯW4?Eg(t ]k5O_6j?ec4Vṳ$?-~mk:GAߚɪۨņC%z ܭƖllM&t~HݜRb]-4'D-+$<;ZN8+nh]}۪ජuOFﯚU2ݜPwO^$j8sL-tOjb,IbKzB4H?tQs"A cD{ @g;tht4hO|$?u-#4zy&&ܖ Kإ߁CpOsUrWxT~a/n=ujCcU!0jV$r@<|Am\qbJ#ha[0c%}{:UqyN9 N>ͪMƿ;qP.#0fjHYMZ07"%s#@HAG&ic v6J5ֱBSa]xo$Ljۗ Y^m3S{ۆiWdfj%Ӓ*MjO$eްT[}l5ynrފ p~T7 &D/{rr͚[W6n&9 Y5!PЇ):`5ʌ@IENDB`tipp10-2.1.0/games/img/pattern_4.png000066400000000000000000000011211274324046000171020ustar00rootroot00000000000000PNG  IHDR$$nbgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxڼV1N1 d| @Mio(讥A Aa4:8gã뽟sxpvw'#o}^o|7`<xN<1~v8#|g Df>︎;lƈ܈U_7'zG'*\=%G4? =qСU_^n. ZSS I1_52}=B8,^G0iƌ#avF&AuF1IHҗ|ג3G'# ~rˍ8BsT;lTRpwC3~ Ez'_G= Ђ-EQALL^:,L~Mm6m?&+kMӜ\\q~jqq=r7$a6CI\ yd`iC؅ysYč~-a bSمjscKVd<`7J1Ў~' g0XWƛ!^F 3O5ᢄb7>.cs28J2$ʉ MӄHM:27r%Dr#!yl,h9?$J=֤b{ѾysF0tk'kWL4$]xW0i{.$%+i_Ѯ Kb%#T3͍X=H^ir*iMdj?I:63JO2X¢ILM5$B 1%!F kqɻE] {҅+nұ`j_hL:>BVr?Mc)];tˢz#`62+'\IENDB`tipp10-2.1.0/games/img/pattern_8.png000066400000000000000000000005201274324046000171100ustar00rootroot00000000000000PNG  IHDRogAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb  ̿Z$#5K!l#Q Y\Jb XBA2Ml4>Y@׃ hLA3ih.Bv31}@7C02&"&? ;E?m$ S`Պjl,hǚɏL#b#@33GIENDB`tipp10-2.1.0/games/img/pattern_9.png000066400000000000000000000003741274324046000171200ustar00rootroot00000000000000PNG  IHDRK)gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb~3k h@] * DU S.1 v&Տ 5t$v0'VD$/A!4 0@\Ӂ8Fr8 K(A8 ,D-1I%&$%&c.IENDB`tipp10-2.1.0/img/000077500000000000000000000000001274324046000134055ustar00rootroot00000000000000tipp10-2.1.0/img/ch_numpad_mac.png000066400000000000000000000011131274324046000166650ustar00rootroot00000000000000PNG  IHDRtqtEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0JIDATxn0 MlZg9o#rJ!D!B%Խ,qPSSZ ^?GAǛ+_(lwx"w op+lP{еWї1Triy!B"D!B"D!:t[l4J)WQa5(kIfS *|1 Mv>)/t6xȬ!B"D!B"Dĺ&}Mg7*BԲ؀P9މ2iu XWdõz"D!B"D!B.EZ?i7W>c]/{1tI-|>%VKz"D!B/ |;"oT0o9U/!2!B"DXZ8;]bE8eP)Cf="D!; |ZR6QIENDB`tipp10-2.1.0/img/ch_numpad_win.png000066400000000000000000000011551274324046000167300ustar00rootroot00000000000000PNG  IHDRtqtEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0JIDATx݋0aYE2g7Y6E>{J UK"DQ(OPuK٬'ܷꡪi)µ +oasm[ E:Kz۩-(w=-ߖ{ãHrlӦm~bKɺNqibͯU^F!B"D!B#8vdyꕬVExop?TC\{ah Cz"D!I$<ߌL~OᖉfB"6B"DJhYM? Z<䬇!B"D|H@IENDB`tipp10-2.1.0/img/ch_qwertz_sf_mac.png000066400000000000000000000035271274324046000174400ustar00rootroot00000000000000PNG  IHDRO3tEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0JIDATx읋0Tfa ]'Ԭ^i! 0W'{KzF#G"|l (ϫ:쁵tO*Ϭ)aD^G#.ioPOD3pSrWDx36`I# dcܗp^+4_O%ϠqբZ׫k-X?Imݑ}:{MtӚ2*w>ȧ](+Wx=%+Y5'm}J@fO5~(?wPqM(e+ ħMS ԗ\$}R'NŧҪ}߿/仕u?zZ|]c|ƽ!+U>uhI>}|OOOOOOOOOpOO0֑I}?6s<Vj,&yq T8 oՆ@>lSzFlsUOu9|Vi'զ]RISΟRiI|ROZR۪ gd@_b'ĽXܽ3w'Oa6',Sz>)-+|^|* Uu^?u`#Oa7e/_tξ|-7!|:4t]4&tm.O#3|OpLO@VOOOOOOOO`3aOOOpI3'HSP|Uxv{.ި#J/;U\EBa,4 qb(UZFg}ʵKVʷBuO{7íN{Z7EF.ʜ>)WÑ1[r'> ɟ"sKҰ&} O{kMㅞغl"fx;a' t$cHS=~nw瞤K=ѧۡvct}>">,liߌOO{#?ߑ?]'zFv }hOOOOOOOO' (\P xx{bLf 5esX ZrSx7M~V+Q3{uX'kzgX20QOB7KNI>qgA>uyF:V\jذҬ )JSr xO]g[3Se‹ S,~EqKvkJ4O=q'v|NH}ޏO]4t>J}OOpPPO>>>>>>>>>>'7QI< ~Rp5TEKE>]*>퓈OK_2YБC(t:]'5OpŞ<ӯ`wӯ*㹥T<~\^<ړ>-];2܉OS)0 Ƀ>=)>SEzwwp },z{oOοnw#=9}KkƒX Of5' d>>>~0NėIENDB`tipp10-2.1.0/img/ch_qwertz_sf_win.png000066400000000000000000000040121274324046000174630ustar00rootroot00000000000000PNG  IHDRO3gAMA7tEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0J|IDATx읋8K;OP %$ 3lfy)iLK OOO4ɽ:)}t[?wN_#D>ܟPdWi_w_Ff7{P~fM UBX=ltp:qQ4Aۣ pJ.'O34쇻睮(?#YgoIfKx:ge>>C?X?_qOqĕw1e$_bm-hlSdfߎI^kl$GOˑ[ʨ6;O=?@;Ywٮ_XKzJVԞ>ii3S:;ݳo޷QT>%J޳[} }Ӣu|ꗏ>iM|'.>f'}!գbޱܣl}HQiK^ƪ>и=d&wjgBU[!ڝ MyNOOOOOOOD6E|=vV|]|BE It>)IgD'8KqVLK1[6Uj\MWrǞ&;j7|*?qԧ66dus;s哿֬1S$\'mI} OK}M>OjѷJ5[gǽ*i|X|FS 4dMġist۽U# x߾MڧRҮqSo3GQ*k恔h_cP0~\T{6㨃?kBohSzzLO|>?|D̈́P{k z >>>>>>>>њO֓WdƏU$#3|*~q C۹%=t-,*~ N|;Ƨwc}{5$ .;_\Gv; T@-7t>`R5:S'>]ݧ^'3 n+B.ʜJ^TI [*Q..>>>>>>>>4KuA؂QjFMhhk|hU*̚K#j.FeY Zߧz0nZ٧|۫OwaḦw{!ԥ?c$Y0\pzFN>2n5'S n}y}rRlXVbi։\.Sr xOUG[3SËxzYv]Z?SxM.=)=R>z#|/>.} j h}''|||''''|||''''|||S}U45(>=_Ow Գ~榍'^Ó8CEx*WQz{hݙkG|^d|S2C-|'UJ7֦MOob&×]qJhݧg/xqO:|%>mg|_EO/w|\{(ۧBWvɧgʫR|12=iisBS ԺOOOOOOOOg?`|IENDB`tipp10-2.1.0/img/ch_qwertz_sg_mac.png000066400000000000000000000035271274324046000174410ustar00rootroot00000000000000PNG  IHDRO3tEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0JIDATx읋0Tfa ]'Ԭ^i! 0W'{KzF#G"|l (ϫ:쁵tO*Ϭ)aD^G#.ioPOD3pSrWDx36`I# dcܗp^+4_O%ϠqբZ׫k-X?Imݑ}:{MtӚ2*w>ȧ](+Wx=%+Y5'm}J@fO5~(?wPqM(e+ ħMS ԗ\$}R'NŧҪ}߿/仕u?zZ|]c|ƽ!+U>uhI>}|OOOOOOOOOpOO0֑I}?6s<Vj,&yq T8 oՆ@>lSzFlsUOu9|Vi'զ]RISΟRiI|ROZR۪ gd@_b'ĽXܽ3w'Oa6',Sz>)-+|^|* Uu^?u`#Oa7e/_tξ|-7!|:4t]4&tm.O#3|OpLO@VOOOOOOOO`3aOOOpI3'HSP|Uxv{.ި#J/;U\EBa,4 qb(UZFg}ʵKVʷBuO{7íN{Z7EF.ʜ>)WÑ1[r'> ɟ"sKҰ&} O{kMㅞغl"fx;a' t$cHS=~nw瞤K=ѧۡvct}>">,liߌOO{#?ߑ?]'zFv }hOOOOOOOO' (\P xx{bLf 5esX ZrSx7M~V+Q3{uX'kzgX20QOB7KNI>qgA>uyF:V\jذҬ )JSr xO]g[3Se‹ S,~EqKvkJ4O=q'v|NH}ޏO]4t>J}OOpPPO>>>>>>>>>>'7QI< ~Rp5TEKE>]*>퓈OK_2YБC(t:]'5OpŞ<ӯ`wӯ*㹥T<~\^<ړ>-];2܉OS)0 Ƀ>=)>SEzwwp },z{oOοnw#=9}KkƒX Of5' d>>>~0NėIENDB`tipp10-2.1.0/img/ch_qwertz_sg_win.png000066400000000000000000000040121274324046000174640ustar00rootroot00000000000000PNG  IHDRO3gAMA7tEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0J|IDATx읋8K;OP %$ 3lfy)iLK OOO4ɽ:)}t[?wN_#D>ܟPdWi_w_Ff7{P~fM UBX=ltp:qQ4Aۣ pJ.'O34쇻睮(?#YgoIfKx:ge>>C?X?_qOqĕw1e$_bm-hlSdfߎI^kl$GOˑ[ʨ6;O=?@;Ywٮ_XKzJVԞ>ii3S:;ݳo޷QT>%J޳[} }Ӣu|ꗏ>iM|'.>f'}!գbޱܣl}HQiK^ƪ>и=d&wjgBU[!ڝ MyNOOOOOOOD6E|=vV|]|BE It>)IgD'8KqVLK1[6Uj\MWrǞ&;j7|*?qԧ66dus;s哿֬1S$\'mI} OK}M>OjѷJ5[gǽ*i|X|FS 4dMġist۽U# x߾MڧRҮqSo3GQ*k恔h_cP0~\T{6㨃?kBohSzzLO|>?|D̈́P{k z >>>>>>>>њO֓WdƏU$#3|*~q C۹%=t-,*~ N|;Ƨwc}{5$ .;_\Gv; T@-7t>`R5:S'>]ݧ^'3 n+B.ʜJ^TI [*Q..>>>>>>>>4KuA؂QjFMhhk|hU*̚K#j.FeY Zߧz0nZ٧|۫OwaḦw{!ԥ?c$Y0\pzFN>2n5'S n}y}rRlXVbi։\.Sr xOUG[3SËxzYv]Z?SxM.=)=R>z#|/>.} j h}''|||''''|||''''|||S}U45(>=_Ow Գ~榍'^Ó8CEx*WQz{hݙkG|^d|S2C-|'UJ7֦MOob&×]qJhݧg/xqO:|%>mg|_EO/w|\{(ۧBWvɧgʫR|12=iisBS ԺOOOOOOOOg?`|IENDB`tipp10-2.1.0/img/config_1.png000066400000000000000000000071761274324046000156130ustar00rootroot00000000000000PNG  IHDR`1\X pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE~  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~tRNS0JIDATx 0CCwlh"Ћ6Aā-0Y4`3=ٟ3i\%h@ Ʀ>lJPaKdm SO "ۆn!zQ*EVT=Uy.lIENDB`tipp10-2.1.0/img/config_2.png000066400000000000000000000072741274324046000156130ustar00rootroot00000000000000PNG  IHDR`1\X pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE~  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~"DHtRNS AIDATx CvWdl\L୩(ZcGr` q-- (`?@+k?@&B(3*Rs@;i(T 5w+2`DR4O.yl\8xV XɿNg'Y$E~:YGu|/`# _su(*IENDB`tipp10-2.1.0/img/config_3.png000066400000000000000000000072141274324046000156060ustar00rootroot00000000000000PNG  IHDR`1\X pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE~  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~tRNS0JIDATxA gX% V15m((DXi,PXRE&$@#2$|SH 9~=1 r hd5-C. H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE~  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~tRNS0JIDATxر Ы?wK#RJ ,LKsĠ8ȅBTZ%TBf4?ЁJ# :n&aK C12Z,1&ΈhYs*sȒ`S^)-3~s9(saMIENDB`tipp10-2.1.0/img/de_dvorak_v1_win.png000066400000000000000000000034451274324046000173420ustar00rootroot00000000000000PNG  IHDRO3gAMA7tEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0JIDATx읋n0EĵHJ3@Q4P G#r&|||''\ O2,d#O뾎z[7۾r *lAi[)wt۱pgb4Os|${BsdاBO+qrSOQԧ>w4 7"wOɟ = 4@s>6 ?AD=O 9vCf}+n(> dw压/) qO/DVeN>ŬS?I.v>A8 J\Ob4:C)$S%Pn}RSvwIi?'OMz+TWXWor `mYj'z]'N|>]rK%[yzI#>A2%2tl >N{ewy ׍ ў:>iOO=ɸn'̧|>fn>ksBM>i‰[O\: 6S,.ϥ=z 3;4bgS/Itk9&k/צk>kXA(ү4OJk i~Eǻ=Oˌ`Q 0`M'+DKUگ{jym˺+4#ΜU+Z`2'e4>m>ٷɫ}=>}RE/OOY.Y-d:ښ>].>"+TbGWV@t|Olթ[S~$浢҂LAHRQO_.߳ vNc K4N'^v>qpa''|||''''|||'''||||'''| | h}N4 qE B˕6sBɫ$VhVRKkZv`n8KwY{<]t_YIyNV~h5W|>q;OӧU}Uz>/> j?֕ާ^nOn4K|>*m]pvċMɟV\ş^l~g s/ |Zt}||ʮ?}*l)(M`]zj|O^^W| rw0] FcH!>嵧aO|UPC(||}u?0Ÿ=gn7~OסÓ /ƻ_@xцÝBl+=]mPƧOz^ Zw.sV| 0Om(7)z8> V'5 |77Y>v]Ӷi'4m8Qe[O>|jO`*ൡ#>s5mP}j*MXq:!}~Zc}| Xl>O]x:{OOOOOp&0e`HYIENDB`tipp10-2.1.0/img/de_dvorak_v2_win.png000066400000000000000000000033651274324046000173440ustar00rootroot00000000000000PNG  IHDRO3tEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0JwIDATxr:SI 1yIf4R*@1OOO ae$ї߲aPueWwz-;Q'_0ut'q4%>Յ;{Ӻ>I2Gfep+I>;4Wƅ})_<}>^h')4ɎO.Sݨ }S|:k?wO|ܷIMy[ۘk͟`B;,&1{YdgJ8!TS˸(7u ʵv6K?oa\Yԧ=9SBŚX߃5**Sᆉڛ}7/ݟ?[=fSt~tpO8|b;}hiT9ۤGush' f{OmZ}FZ3S'gb4'MliKI?OX2ӧ}NnR%#Y*]-G}*\7XOZAOO|LbEqSFS(q6)>ɧ'ۂW=l:lmО]ݞ|]>Z<_OW\>jN|Zk{O PpO:j띘X .W *ľsRŭRkcvhߜr8yٞ׶ oʶsX1҅hFi^)X]^þOgIM_,~Qty{SOO~OJ@fOϿPܾH~~:m䱿鯟?ǖnMY(S!:ScʷaZ|my|Θ>w4.Oi>t>>>>>>>>>\lV ]@C{GsX _3J.|}Y9U2ۧ 4Ze_ׯsu…}{[PޯOv^*46JrӦd>> M}KM;|r%['Z V~|yGnOn׻OO/LΟ6\TN; }oĥקS'{>u|GOc֨L>͘if `¼X'?ʼnOqXSig?=)%ͬ >^4~ O:F>j?T)*Ck׾PtwE>G*gZ5Q|,0_PnRx?՚ ެw*Ofw0P=v%;_žk^=A|ڷ ]Y|H4ܟ~7^Le S(o#3O1(|_ X `~ KtuY|ߴgaN'''|||''''||+KIENDB`tipp10-2.1.0/img/de_illustration.png000066400000000000000000000162521274324046000173220ustar00rootroot00000000000000PNG  IHDRxay pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTEɖ}~ӨWkɸWWWY†O555eu(###m~rčٴM'hhufeew-{{{BBBysۥp{kkk!hEg8}Ƚ{8uttbZ;bū²t;п}HHH/|zjt{Бqbr~WhtϡpDztoozz~x|>0Ħ|q>M\Қȅ}ٍ4SlH9nlm nayDQ6L:2v&7Ɓ<'+zyzaHC啷ÆYy8''|01Nekf׊ h`?q`Q=@XVP,+( er/AA(WȊcd"~ kN(oj`ݰyx~oP/fkI֧!`oW;,ei̗ҩC$Om%9.Nkeq6e ̽ϾxֺA杜tO&1@u:^9,kZd%Dpα#b2f՚X4ZdeOUTapӈvOC sbHJbYcDCB7/JnH\ݤSλ1Wt-ZOs¿CҘVc>p.#,՛FU.+3 }ro'q UrY{H^?z~ҽ]w.~I'jtʷ _e_=Vr s_zf{oaA{z˵o0tٲ5f+g\IsIJWK`y޳t)_k_d(G' z^xڿ~, ɰ|2/}gp0)&Y?ngdG.b yئq)+f- y\Dޒܹ';e9U++5u{m㪽lN/rDrujҨaUL=jyh# "zHbˎ"gq LKUE.] I!5}_z3יlrn Ip=/UP['[ypk0y.%Ykk\ɨQ<ǤdsHbŋ-",Ի/+:JQsVS\PWt>0uVo+ VRczjX55/,yVpg*L=l iV" # w)\_Ae{[ΈEib$O9|F $CG^M6j*\9=睗K0ՙBX9B( \>Э`Cp&3B|wC6-8`̴c'Ay'Z`FBC0|[jKh<&^kxS^M|e!3~>&sdaXըc=ܗONonczXG7-8$N:JCL55wjRg20G꒪=lEu;.(sSK8]GWS)K =ݶe#:R")[̾Tߗ'Lݶ?K[W\ۉ|SpTF@C1;9pOŮ?v锢}Riơ29 /dLT$*±( ov# ﵕʲF^,d[ʹ)8d\~,zj)v?@rQG\mVY^U1qjBF2h+fY./zeo:ڴ^djj%caf qb B.^vr$dX;lImS9rsaIoW?߄zhCXICf#m1rN ydaǵ<3ŲA5kw;JsZU`l;uQBd")ң|DW|r|H"â,o/d,K7!԰#`N0Wi+SLuRDR&.$c@d`>)1C w@P$"+%_/AI~^vL،>kGI$s;"uOwN4@P9uP\VOnw. J% >b܌|zH'GLsŷxI&g)!M"pG(ۼz> ? a5Po6wSoD\-k=HͳceϚ8D4+hQ\K‰@!q(IDW=ZqNb~oC8h{$P7?$ ǃH ڨTL_ԛGOYwSr $<=md/v;D:8ٳ+'Y J Yhp}b_""mn9lVÅ!_=YGٖͩ[0%}x!,y9W~@OlБh|.J^%>D_yeal nĂG9ΏS,5dGAt#zdAW|Ų?W2a Yhx eAc+⇪kEҪ넝0Cbl#_e?ܵWh=; ѐ K˦{% oWp]Yv.f{)zLnJSħ(}Ue Je\B>vYN91 Nj2-A eዉg,L *.]T/ٍWZksj__}8fiF07$w= )*u@}:v#@zʲGB?r_ l˕ ۘV*w+%$0ͣ;JF?lI/b@+#{_A ݎ*ȖG\rÆfܺ|ILW2U'UP/d*劯vEX#]&+암_܍ۣSP,cܱhe*o*bOG#oER29g(pѰ_C>²W~F!mNુa-}dW"o~F[Cݤ8KJ-o0 D4I}]>E(1~ F P$z:W y? ૂ fO }IЌ$$ MA:UR3BxẺ>v_T,+( eŲbYA U1bpG n:Q=՗M>nC GG^↑/G`] sU}kÃ~N25B+)%x̉@Y쨘~i7FD:_ ȰwIENDB`tipp10-2.1.0/img/de_neo_v1_win.png000066400000000000000000000034401274324046000166300ustar00rootroot00000000000000PNG  IHDRO3gAMA7tEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0JIDATxr TؾY1$u.Iً@QOOO pB;+teu~pfWw_D >-|KԲ>]|6;ٳ_I4{p 4gƅ}b}7>/\'-&ٓ'-ӜQahtIyIOSMꕿ<|C=j[/uY|zOmO^*";Q] Usen.]-u)"S-ѶU~E >?J]}ZbN {gPE.)qJNRǣTOOiSvSj>UMz+UWWw 6;'q7ĮA>u钳]*ҿSc|dLfTIL!oaf>HߪOVXҴOLO~QN#J4mW>J>']ԧJFjuù<݃Zyua>M:P7O{O6㓑^x.nY'yBs!-Mq]QuR&w*Jz)YU ٧-wQqk1_|vjO~Oۋ-C * ۧƯL#ӕ'!3<>>>>>>>>>>>|||l)s2B)5RP}3F G,$w.U8".bMo6+G .ꓛt@,L 3>]'_H3g3=d!4Քj |ʎOUeSo8}b_+qNӜnO0Xq2[r}n;~™ß9Y-SrXTv.?>U1z'k7$yyqiNWy7F3>>>>>>>>>>>![A '!Fٱ ;WIRd%ќ0ӧ mj)6Ddvv 2n;xH8w% r ϧ>ٯ +\Iϩ;ѧ`A}5> i>%+u!>S Ӡs=~U^qE}%?zDЧz1w>?mBI0l*|ќyO|oˬ:>^#h>mʳQiDFm-W>&@#>>>>>>>>>>ݟSOz#YPYnSb^o &4T-GA?0MJ{KgA.6su,.wI>3y{sK>4fb<VRr{}+y>}-}J o|gߧ5| >-|*9>IӨ><;?C>=/\3U_C(o!Lŏ]kx o~j> znhz~ZOy _ĠIENDB`tipp10-2.1.0/img/de_neo_v2_win.png000066400000000000000000000037301274324046000166330ustar00rootroot00000000000000PNG  IHDRO3tEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0JZIDATxv D}I&8wS"dj$'O'OsH xǭs E<ɌuG16-zkZd(p$M1zS)BzG'K*|%֩]~*sNglڌExj_ÓR0xZ'9/3ԝt%1p{],?y?Z遭I u}ƽ^K+Y>?!Oæ]'N* Ǐ݈\V%鰿8OQʄӳx2{5uRfGx:|OlNԕ<"Om>f%!.0D](8G/!jͬSxkS14.=DSkJ_ ɡr'怜gMO_9OSV =-<ݳx= ҄SPhyr~RV“9N:OniyjBFmq F LOTEiBF|?'O'O'O'O'O'O)/t6xȬ!B"D!B"Dĺ&}Mg7*BԲ؀P9މ2iu XWdõz"D!B"D!B.EZ?i7W>c]/{1tI-|>%VKz"D!B/ |;"oT0o9U/!2!B"DXZ8;]bE8eP)Cf="D!; |ZR6QIENDB`tipp10-2.1.0/img/de_numpad_win.png000066400000000000000000000011551274324046000167260ustar00rootroot00000000000000PNG  IHDRtqtEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0JIDATx݋0aYE2g7Y6E>{J UK"DQ(OPuK٬'ܷꡪi)µ +oasm[ E:Kz۩-(w=-ߖ{ãHrlӦm~bKɺNqibͯU^F!B"D!B#8vdyꕬVExop?TC\{ah Cz"D!I$<ߌL~OᖉfB"6B"DJhYM? Z<䬇!B"D|H@IENDB`tipp10-2.1.0/img/de_qwertz_mac.png000066400000000000000000000033201274324046000167350ustar00rootroot00000000000000PNG  IHDRO3tEXtSoftwareAdobe ImageReadyqe< PLTE{лtRNS ANIDATxْ ]G1/;%d8X>@&|||''|O$d^YJGFXǫTu+;Bφdxħd_WinXwg1|Z'I윏pOhΌ it||پx!iofa"+}Z Z(>IZzXӭ[OpӼO!O`[Ew(ۍ`8] i'EGSʾ,n'e԰Ϛ[iO)k-EaOQqAY#<4k^|ӧ=?@}cO~@OrR|ʮ?S|*5mw}j|Wَۤ7*;#y>){  6)c>oBbn $|z~K|-_NYwX}2r5+| KO>EŲZj5^d6*Sx+~OIN%| OdөʦOjIê[Y>qKWd{ ۙs&ŧ1?>뻓[8,sNKTJ'rMߟj$Oůu?ux^5-_37-N/8}҅7u;.?\ۧO ȀO<'''|||''''|||'''||||'!|||%߭rGP G'FqPv@lWS*2*^H; Oyb%,gUKOpbW}&1OM>uԍ]'ŦB%ШO~^%ZsLźm޽^ .[r'>MɟOW|?5}2O݉)2O+v~wS}f^ߛG|-`1T&'';ONk!>SO|Ƨ-Oj P}*'^׃|Q͟jtl;ޡħ^\|4YsiF qŨ9,^-}ٺnb|G'uX'[(,0e}jk>̝z;CM/}jXq۩bòjKn+wO >}Ft*H'O3ktt|Rqc2+&κ H/ө~0jC:~|Z? Z''Wy=ť:ViO[ŧ}iT|O ?ɂħBO}i˖Բ>!Ž-yP- שCDE[=>^,^IWmISo}ԷydKBLIVdK^o '|ϔS}ﬖ1>ے M}B\$|TJKjy*A0kOp ?FO> IENDB`tipp10-2.1.0/img/de_qwertz_win.png000066400000000000000000000034501274324046000167760ustar00rootroot00000000000000PNG  IHDRO3gAMA7tEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0JIDATxْ0Kӎ؝;3PB2~X搒VK-5 v.4'Wwґ'y_G' n}x'ATl*ɾݞ-;ci^$+ Ө7${Bsdا}Mfx89O1('M\ [wOOIMCLpZ4P'Is߳'X֨jJvd}+n(i M?NJ|rDžWKpROIh*LբwrcaO*w&4N-`3zTd YI[Rx2'|1){P|?|*5m;>$@;]I/| J%أOOOOOOOOOOOO؅|BsڤLϿ$|:PY%`Q̭D|O^bW{{Tyi)[hUXVZd}R0t2G(Q>SA>iOuٚ>-\I|R$9O|/q=ImeqOCD}@\2ǴO}@-)Iq4>=v}?{@/5f''|69ekq &ii rkO' Bاe;Ot F~"OFܮ>C}> T| ]]Bn4SD^atZ0Nt)N슛Oç}Q7>*F}"#he6'{ɳt<[rO|?ijYzU\>ɟyo֧; mw tϕ?U JV}fZ&9HǧaB >D}'''||||'''|||''''|||''za%0  ;V!D*ќ@K^d6QJ5FK.Y'|^fKE)=`'unԦKOI((`>̝'}ejO~1tާN=tSvjذҬ )B]'j ?-J~xfv=2{\Lff{`!uӢo?Cz|{|I\OOOOOOOOOOOOOO~3O ŧ[ iytꮿaz\opo@7>'mp#?WR<)U ֽOmh0ܙ{Gص Qj2>}*W&3zpOoL!UB>~-MjyhCI-V,y>}xTؾ`%Zoy'1'H/~p@n7}vYt|˿rׅwjW[_k)Zh*MբwrE?I.v>-3")qJNRǣ}'§ʴ)HgԴI ql|&ު++EOOOOOOOOOO] i2='9 uZOIKb2>犋.B4|ɮzҊR }<ū;z sOiO}&oG }d >es2+|R?|Q4k|R+h;'#Ž^s|2 <|w9]m/ qۆfuywʕ"sct|z x^>__'?h&ĨY'37O_X]ǧJB(|J[8`Ow˅sOOOOOOOOOp\# `OZԕoT} VUO[G}2J*-KXO^->)>mˊ'5|Z'_U}ҔL3&OvlgR!47l)~}R; J_/din_SQp%PKnl[6NL');SZ}jmU}ߑwTө_&ӦS>>>>>>>>>*^.(tV)[E/c8t]D: ҅Z&SȻ_I~Sx3+vS@݋ԥGn)+C>ea\lyI}^n>yg>r&hN]on=Śr>G!ƧOOe )hGդ}j3 >Oşj>+g>}‡UΜ%/ˈO agWrx7&Gfk>>OwC ? }sƧ4,SOBrtazn>ބn|Fdw'Ueu ܞӝ7$..wI>3yIkgVnuT^D*!4<ܠYm^wOV[[vn⍧xܛ,z }{}}w i2'lt)H|HOizJ9O_AW ~[ vnBy 1w}He Zk{Ͽc0.ç] MU/P@h'''||||'''||}G.uiIENDB`tipp10-2.1.0/img/en_illustration.png000066400000000000000000000161611274324046000173330ustar00rootroot00000000000000PNG  IHDRxay pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTEɖ}~ӨWkɸWWWY†O555eu(###m~rčٴM'hhufeew-{{{BBBysۥp{kkk!hEg8}Ƚ{8uttbZ;bū²t;п}HHH/|zjt{Бqbr~WhtϡpDztoozz~x|>0Ħ|q>M\Қȅ}ٍ4SlH9nlm nayDQ6L:2v&7Ɓ<'+zyzaHC啷ÆYy8''|0g&1Oz_W3 YD*̋'H$&&%[Eȃ3 tRI%ʒ$ʒ$ʒ$ʒ|($ʒ$ʒxHVގ:~drF8 []r~ЇŋF(g3[ ߽s>pfr IcS;śx_t:NS}ҙ6o'>[Pz*'Wԍ-n ՜3ygXľy7aS(do~Ni=o%o\I(ߓ;>4>P~Ь/nhj7}t _QM-';?D(?m u=8M9L[_i} ؘFh?W%䙫g3gL=~ί}bm/GZEMoh7n|d!'83| v98A~Mu6@3(B%l ݗV4p)ˇ8[St=kE{D#sJg L6^mt ʧ~L[bk+}pҝ;|r.jU63Y . >LQ林oh-$UY_GY^|f?},#:,. f4%G .7.s'\sd}B \]5haZl&eP7Z̳Om]@Ew~V >ʹxX|a°l؎UV؎ʜ@_*Z{km< wu, Jx3'Mg=XAs<ݴ HbGP->=vV®D g2&0eP=ƊlM[v"ue`% ܭ Sl1N6,<,F}˸erY(toˢ%QmDxoD{anjCsժ2J4Jkwkq4BhE;g|jM?kMrԟrQQZ+^ڗ^.\ 4}yce4>Bb$*)ͺpYhzM MS5^=yG'H~ x<un C%{ssJ}GI1.0_{0u,fn+rYTy"J~I\l?1cP!>0&gF1b$=eECyN81-\4l ϳivO֜\. 쟪:<#3N+5Hny95sxPoVsfϾRˌ G(³qUe1«~Dya#'j4'&xܥބyYMvIǫ98p! WZ<.-6qCҭ_,2ry>atZ^qxG&z'uCȳz[ߥ (Z-W݄HN$$!Vn9C>S겆,/,uylGo*w)u7@#rC~emgfhh%!sptJ}{fwJo/gC2.C!!/TtPl`28  A3Ga Ɉ@b000T\VVh5 0[l܌IENDB`tipp10-2.1.0/img/help_home.png000066400000000000000000000003241274324046000160520ustar00rootroot00000000000000PNG  IHDR gAMA7tEXtSoftwareAdobe ImageReadyqe<fIDATxb?5QgO5ak().#P&RIP&r4g"7p(ٔcʂM![qᨁ1€$-} GK 0A."IENDB`tipp10-2.1.0/img/help_print.png000066400000000000000000000055061274324046000162650ustar00rootroot00000000000000PNG  IHDR pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FqIDATxb?57]W=#I(pBFG26𶉙uQlp߿8٠%I &HU˨?#zG^ 1?8` IENDB`tipp10-2.1.0/img/icon.ico000066400000000000000000000070661274324046000150420ustar00rootroot00000000000000 &h( @ymD zhFg,[T2n@m.V28K{=_dK:!SI*t>jV+=I-RpY)Bsh^j[5U~7O;1>L?"vDln@[pO\\ߎk5ՋjљϘh.ܙjjљϘh.ar*Xfk5jљh.YɊi4\k5rhYʓ͆Zg6[5Džf3I $g6[h-ʓ3A+gۧ[YńDžf "g6ęXYDž( LZga-Yš&lHggߙ󢀾-ńDU3Zؗ\ѥdX-Y/nM3Zgj.5WeX-Y#mf3؍췲 X-YPCf3҇4Չ X-KDžf3ZZӝ5ke -@_Džf3h Xu7>šDžf3Zih XYšDžʓ3Щk`e !N Yʓ͜2e 0S64zZNH[*WD.VC}7uiovt {sFm3I9'Rk!pl_d$\b<%" 0) @;c|L&BOJaXyclKhEA Uqtipp10-2.1.0/img/icon.png000066400000000000000000000023471274324046000150510ustar00rootroot00000000000000PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxWMoE})|p 8 NHqC.pWp |rEI@"@ "Y'&MƻN3==#zz{_իWU a^<RP)1w7u%]~٩nIA!T{[nw_}@=eJ z^zn^cKzzP3 pԬ&5@{$ h_+N7{ Ts?/砕9?oKg@gOK h&4xY=`"9^gK<ufA M-Bب:z к10z ӾP> <~gt>o)о&BzR?hX{{A'0pG@tdd6XSo&6ؘ0i[qmm vgAQg6_ <ӋDo3>f!!jG1hL<dc< e0ol8ʢM1PsL"u s{|t$@a)1|/*dv6XЧօ  \A=fvT0 τ3N7A<$ߓ!<N|#_vsmIENDB`tipp10-2.1.0/img/icon_uninstall.ico000066400000000000000000000070661274324046000171330ustar00rootroot00000000000000 &h( @ymD zhFg,[T2n@m.V28K{=_dK:!SI*t>jV+=I-RpY)Bsh^j[5U~7O;1>L?"vDln@[pO\\ߎk5ՋjљϘh.ܙjjљϘh.ar*Xfk5jљh.YɊi4\k5rhYʓ͆Zg65Džf3I $g6h-ʓ3A+gYńDžf "ęXYDž( LZa-Yš&lHggߙ󢀾-ńDUؗ\ѥdX-Y/nZgj.5WeX-Y؍췲 X-Y3҇4Չ X-f3ZZӝ5ke Džf3h >šDžf3ZihYšDžʓ3Щk`!N Yʓ͜0SZNH[*WDVC}7uio {sFm39'Rk!pl_$\b 0) @;cL&BOJaXyclKhEA Uqtipp10-2.1.0/img/key0.png000066400000000000000000000004441274324046000147650ustar00rootroot00000000000000PNG  IHDR((/: pHYs 7˭IDATx= `P\ |%-lA1RJ֬y朳 FBַaS0/u=O5Ƽ.ٷ8V !v}ՏE0#0#0 OMPO\3qWpG]q9{6\tq1R3Q+.NRJ9mf­ utIME  VAIENDB`tipp10-2.1.0/img/key0_0.png000066400000000000000000000004441274324046000152040ustar00rootroot00000000000000PNG  IHDR((/: pHYs 7˭IDATx= `P\ |%-lA1RJ֬y朳 FBַaS0/u=O5Ƽ.ٷ8V !v}ՏE0#0#0 OMPO\3qWpG]q9{6\tq1R3Q+.NRJ9mf­ utIME  VAIENDB`tipp10-2.1.0/img/key0_1.png000066400000000000000000000004531274324046000152050ustar00rootroot00000000000000PNG  IHDR2(3> pHYs 7˭IDATx `/ 0fm݁s>&tcm fGU^!F&(ՖDL/Mu;NկwiYT|F1 , , ,Zuc'j=_)%*j&=MB=B\$`X`X`X`AX`XX`gq΁ΊZL}oLtiǦ|uQa8\yb3+t X`X`X`Ya?e՛yٱ꺶f^I*MiYZk{,˨WbQJ)K8/ c:۩YzX`X`X`X`Ie4O[Jsrf^iNڶ2B"t'܅8'{YLbY6?8ޔoyv|tIME : 0eIENDB`tipp10-2.1.0/img/key0_5.png000066400000000000000000000004621274324046000152110ustar00rootroot00000000000000PNG  IHDRF(̲ pHYs 7˭IDATxA Pa;&&](TjM{Pa2 C3F~H)e1*Ҷ-3S8{T  H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATx=0 $A qHku)N2^UUYEJIUqm3뚦9Fm6/b !ι/ySy{}_vڛgwSȷTUB>:)CRˮ.bȺvg\f i2\UU2ba쟓wPcIENDB`tipp10-2.1.0/img/key1.png000066400000000000000000000004401274324046000147620ustar00rootroot00000000000000PNG  IHDR(( H_gAMA7tEXtSoftwareAdobe ImageReadyqe<0PLTEvIDATx åԈZU\G7`񆺁YT.p(.D :q'KN` "!J'tI0ʰC1 MUuiG$IENDB`tipp10-2.1.0/img/key1_0.png000066400000000000000000000003611274324046000152030ustar00rootroot00000000000000PNG  IHDR(( H_gAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE便眜ݓч͂{{◗%hVIDATxI 0 CQl%m!1.\$$lH0QPA 5Ah We-8T`L%5* IENDB`tipp10-2.1.0/img/key1_1.png000066400000000000000000000003621274324046000152050ustar00rootroot00000000000000PNG  IHDR2(Y~gAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE졡曛ܑЅ́yyXWIDATxK P CB B`ZkicdȤgBhD"E#1LQ% {^2nrLM rCk+RIENDB`tipp10-2.1.0/img/key1_2.png000066400000000000000000000003731274324046000152100ustar00rootroot00000000000000PNG  IHDRd(?qgAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE졡曛ܑЅ́yy.`IDATxщ 0 CQd?pIi P_!dnmc !2B"D!B~Ie$h}ub^6P#lR)IENDB`tipp10-2.1.0/img/key1_3.png000066400000000000000000000071661274324046000152200ustar00rootroot00000000000000PNG  IHDR(8 pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FPLTEɿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~H IDATxԹ@ AH<!>peO][Sw#Y1Q8J*cn8p8p8p ?9ޏr5trM]/kQ1FdRwᜰIENDB`tipp10-2.1.0/img/key1_4.png000066400000000000000000000005031274324046000152050ustar00rootroot00000000000000PNG  IHDR2R!wgAMA7tEXtSoftwareAdobe ImageReadyqe<'PLTE렠襤鞞㙙َ͂~~vvݓm0 tRNSIDATx1 CBGB{ u\X di2_?F[&Il #1L4IDFZdaD#mHHHHHH>'%"&ϓF t-QׅڕIENDB`tipp10-2.1.0/img/key1_5.png000066400000000000000000000003711274324046000152110ustar00rootroot00000000000000PNG  IHDRF(t|gAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE졡曛ܑЅ́yy.^IDATxK P CBMH!b[f 3J/-2N 2d3]d +ØKzv3DŽ*HEK/z_Zo?`IENDB`tipp10-2.1.0/img/key1_6.png000066400000000000000000000003641274324046000152140ustar00rootroot00000000000000PNG  IHDR<(eigAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE졡曛ܑЅ́yyXYIDATxK P CBMI"Ƨb`[3Gw(\p¿`sxPd/:Mt 0=P}IENDB`tipp10-2.1.0/img/key1_7.png000066400000000000000000000056271274324046000152240ustar00rootroot00000000000000PNG  IHDRP(V pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATxٱ `/1OԡC(f7q3q}߃%`f1Ff^^ ͭ]-Pm>t[k?;4v.z`````?z૥lf}{y_i"23U:8 rΎtJѳ$"uCqIENDB`tipp10-2.1.0/img/key1_8.png000066400000000000000000000004421274324046000152130ustar00rootroot00000000000000PNG  IHDRZ( ztEXtSoftwareAdobe ImageReadyqe<IDATxٽ H ) DRg=%cpRRJp4}G,"R!jAwlF>9BZ,Ǻ@4+T C2.{IENDB`tipp10-2.1.0/img/key1_9.png000066400000000000000000000070771274324046000152270ustar00rootroot00000000000000PNG  IHDR(P\Q pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE便眜ݓч͂{{◗  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~^IDATx10 C@Kf)Sj!Fɲ,a"EYaoT?A|Tam<^ۖXD N5nP-IENDB`tipp10-2.1.0/img/key2.png000066400000000000000000000004401274324046000147630ustar00rootroot00000000000000PNG  IHDR(( H_gAMA7tEXtSoftwareAdobe ImageReadyqe<0PLTE,vIDATx åԈZU\G7`񆺁YT.p(.D :q'KN` "!J'tI0ʰC1 MUuiG$IENDB`tipp10-2.1.0/img/key2_0.png000066400000000000000000000003611274324046000152040ustar00rootroot00000000000000PNG  IHDR(( H_gAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE쑻Ⅿրyʕ]{SVIDATxI 0 CQl%m!1.\$$lH0QPA 5Ah We-8T`L%5* IENDB`tipp10-2.1.0/img/key2_1.png000066400000000000000000000003621274324046000152060ustar00rootroot00000000000000PNG  IHDR2(Y~gAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE돺ხwɓiWIDATxK P CB B`ZkicdȤgBhD"E#1LQ% {^2nrNM rC50{IENDB`tipp10-2.1.0/img/key2_2.png000066400000000000000000000003731274324046000152110ustar00rootroot00000000000000PNG  IHDRd(?qgAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE돺ხwɓゲ%`IDATxщ 0 CQd?pIi P_!dnmc !2B"D!B~Ie$h}ub^6P#lR)IENDB`tipp10-2.1.0/img/key2_3.png000066400000000000000000000071661274324046000152210ustar00rootroot00000000000000PNG  IHDR(8 pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FPLTEɿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~H IDATxԹ@ AH<!>peO][Sw#Y1Q8J*cn8p8p8p ?9ޏr5trM]/kQ1FdRwᜰIENDB`tipp10-2.1.0/img/key2_4.png000066400000000000000000000005031274324046000152060ustar00rootroot00000000000000PNG  IHDR2R!wgAMA7tEXtSoftwareAdobe ImageReadyqe<'PLTEހ|tƑkM tRNSIDATx1 CBGB{ u\X di2_?F[&Il #1L4IDFZdaD#mHHHHHH>'%"&ϓF. t-Qק3IENDB`tipp10-2.1.0/img/key2_5.png000066400000000000000000000003711274324046000152120ustar00rootroot00000000000000PNG  IHDRF(t|gAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE돺ხwɓゲ%^IDATxK P CBMH!b[f 3J/-2N 2d3]d +ØKzv3DŽ*HEK/z_Zo?`IENDB`tipp10-2.1.0/img/key2_6.png000066400000000000000000000003641274324046000152150ustar00rootroot00000000000000PNG  IHDR<(eigAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE돺ხwɓiYIDATxK P CBMI"Ƨb`[3Gw(\p¿`sxPd/:Mt 0P]IENDB`tipp10-2.1.0/img/key2_7.png000066400000000000000000000004441274324046000152150ustar00rootroot00000000000000PNG  IHDRP(VtEXtSoftwareAdobe ImageReadyqe<IDATxٱ b|[$]$]TH B i BK)Žߢ'.ܷL4-"hCj%_DZ[P[cg^>Zb:" f &` &` &` &` &` S^W<߀qrG'#-*ݩCԟ{[=@ϒ)C]ʨJ]IENDB`tipp10-2.1.0/img/key2_8.png000066400000000000000000000004511274324046000152140ustar00rootroot00000000000000PNG  IHDRZ( ztEXtSoftwareAdobe ImageReadyqe<IDATxM 0~ o}xu1b0HHlrDĈ?ӏlS yE:]7;,}.3 -܋,9\C1kGDk ppppp8bWxnnpxb," +;|cE>9Pj,<:(  H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE쑻Ⅿրyʕ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~G!^IDATx10 C@Kf)Sj!Fɲ,a"EYaoT?A|Tam<^ۖXD N5nP-IENDB`tipp10-2.1.0/img/key3.png000066400000000000000000000004401274324046000147640ustar00rootroot00000000000000PNG  IHDR(( H_gAMA7tEXtSoftwareAdobe ImageReadyqe<0PLTEFOvIDATx åԈZU\G7`񆺁YT.p(.D :q'KN` "!J'tI0ʰC1 MUuiG$IENDB`tipp10-2.1.0/img/key3_0.png000066400000000000000000000003611274324046000152050ustar00rootroot00000000000000PNG  IHDR(( H_gAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE┯嗩ߑًЂvrjԆퟵҬ'VIDATxI 0 CQl%m!1.\$$lH0QPA 5Ah m`k-8T`K5teIENDB`tipp10-2.1.0/img/key3_1.png000066400000000000000000000003621274324046000152070ustar00rootroot00000000000000PNG  IHDR2(Y~gAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE䖨ސ؊ρupi҄ퟴTWIDATxK P CB B`ZkicdȤgBhD"E#1LQ% {^2nrNM rC50{IENDB`tipp10-2.1.0/img/key3_2.png000066400000000000000000000003731274324046000152120ustar00rootroot00000000000000PNG  IHDRd(?qgAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE䖨ސ؊ρupi҄ퟴs`IDATxщ 0 CQd?pIi P_!dnmc !2B"D!B~Ie$h}ub^6P#lR)IENDB`tipp10-2.1.0/img/key3_3.png000066400000000000000000000071661274324046000152220ustar00rootroot00000000000000PNG  IHDR(8 pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FPLTEɿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~H IDATxԹ@ AH<!>peO][Sw#Y1Q8J*cn8p8p8p ?9ޏr5trM]/kQ1FdRwᜰIENDB`tipp10-2.1.0/img/key3_4.png000066400000000000000000000005031274324046000152070ustar00rootroot00000000000000PNG  IHDR2R!wgAMA7tEXtSoftwareAdobe ImageReadyqe<'PLTEސۍᓠֈ띖~rm~fЂE_$ tRNSIDATx1 CBGB{ u\X di2_?F[&Il #1L4IDFZdaD#mHHHHHH>'%"&ϓF. t-Qק3IENDB`tipp10-2.1.0/img/key3_5.png000066400000000000000000000003711274324046000152130ustar00rootroot00000000000000PNG  IHDRF(t|gAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE䖨ސ؊ρupi҄ퟴs^IDATxK P CBMH!b[f 3J/-2N 2d3]d +ØKzv3DŽ*HEK/z_Zo?`IENDB`tipp10-2.1.0/img/key3_6.png000066400000000000000000000003641274324046000152160ustar00rootroot00000000000000PNG  IHDR<(eigAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE䖨ސ؊ρupi҄ퟴTYIDATxK P CBMI"Ƨb`[3Gw(\p¿`sxPd/:Mt 0P]IENDB`tipp10-2.1.0/img/key3_7.png000066400000000000000000000004361274324046000152170ustar00rootroot00000000000000PNG  IHDRP(VtEXtSoftwareAdobe ImageReadyqe<IDATx1 C! -<|S8Nʃ \DƒR{Y򡉃qcD$0Z+5B5\l|ySܴMUV`Q 0 0 0 0 0)zOxRkecָ6ƸBLsiZ.c,R-mC %IENDB`tipp10-2.1.0/img/key3_8.png000066400000000000000000000004441274324046000152170ustar00rootroot00000000000000PNG  IHDRZ( ztEXtSoftwareAdobe ImageReadyqe<IDATx= 6)2AHY$*)}[ y{?!4MRʱ,=[(d^|{p}.Nd]ׯ[f88888p8ƧdҾpTeYz,B {%@wcǶmZ,*ὗRQ`C H H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE┯嗩ߑًЂvrjԆퟵ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~ȰA^IDATx10 C@Kf)Sj!Fɲ,a"EYaoT?A|Tam<^ۖ\D Mnb\IENDB`tipp10-2.1.0/img/key4.png000066400000000000000000000004401274324046000147650ustar00rootroot00000000000000PNG  IHDR(( H_gAMA7tEXtSoftwareAdobe ImageReadyqe<0PLTEp+vIDATx åԈZU\G7`񆺁YT.p(.D :q'KN` "!J'tI0ʰC1 MUuiG$IENDB`tipp10-2.1.0/img/key4_0.png000066400000000000000000000003611274324046000152060ustar00rootroot00000000000000PNG  IHDR(( H_gAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE݌׆|pҾlʶdҀPVIDATxI 0 CQl%m!1.\$$lH0QPA 5Ah m`k-8T`K5teIENDB`tipp10-2.1.0/img/key4_1.png000066400000000000000000000003621274324046000152100ustar00rootroot00000000000000PNG  IHDR2(Y~gAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTEތ܋օ{oѼkɵc藚WIDATxK P CB B`ZkicdȤgBhD"E#1LQ% {^2nrLM rCk+RIENDB`tipp10-2.1.0/img/key4_2.png000066400000000000000000000003731274324046000152130ustar00rootroot00000000000000PNG  IHDRd(?qgAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE܋ތօ{oѼkɵcD;{`IDATxщ 0 CQd?pIi P_!dnmc !2B"D!B~Ie$h}ub^6P#lR)IENDB`tipp10-2.1.0/img/key4_3.png000066400000000000000000000071661274324046000152230ustar00rootroot00000000000000PNG  IHDR(8 pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FPLTEɿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~H IDATxԹ@ AH<!>peO][Sw#Y1Q8J*cn8p8p8p ?9ޏr5trM]/kQ1FdRwᜰIENDB`tipp10-2.1.0/img/key4_4.png000066400000000000000000000005031274324046000152100ustar00rootroot00000000000000PNG  IHDR2R!wgAMA7tEXtSoftwareAdobe ImageReadyqe<'PLTE܊ߎوԂxҾlιhƲ`|& tRNSIDATx1 CBGB{ u\X di2_?F[&Il #1L4IDFZdaD#mHHHHHH>'%"&ϓF t-QׅڕIENDB`tipp10-2.1.0/img/key4_5.png000066400000000000000000000003711274324046000152140ustar00rootroot00000000000000PNG  IHDRF(t|gAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTE܋ތօ{oѼkɵcD;{^IDATxK P CBMH!b[f 3J/-2N 2d3]d +ØKzv3DŽ*HEK/z_Zo?`IENDB`tipp10-2.1.0/img/key4_6.png000066400000000000000000000003641274324046000152170ustar00rootroot00000000000000PNG  IHDR<(eigAMA7tEXtSoftwareAdobe ImageReadyqe<!PLTEތ܋օ{oѼkɵc藚YIDATxK P CBMI"Ƨb`[3Gw(\p¿`sxPd/:Mt 0=P}IENDB`tipp10-2.1.0/img/key4_7.png000066400000000000000000000004451274324046000152200ustar00rootroot00000000000000PNG  IHDRP(VtEXtSoftwareAdobe ImageReadyqe<IDATxA r~N.Kl0hh,w'^~<?&\dձRD"om}Rj?TnnʦqYk7 &` &` &` &` &` S+2f p\r_PIHB$j~z(t1@tsn%9U*S CW^oIENDB`tipp10-2.1.0/img/key4_8.png000066400000000000000000000004501274324046000152150ustar00rootroot00000000000000PNG  IHDRZ( ztEXtSoftwareAdobe ImageReadyqe<IDATxM 0~ Nvȃd!ȁ3#\N?v]xlHLd-D$BNs^yΡ\CI_;"X o88888pc o#.v}Y4McX!^ip)/%UCUUX8\8te"`CWIENDB`tipp10-2.1.0/img/key4_9.png000066400000000000000000000070771274324046000152320ustar00rootroot00000000000000PNG  IHDR(P\Q pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE݌׆|pҾlʶdҀ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~M^IDATx10 C@Kf)Sj!Fɲ,a"EYaoT?A|Tam<^ۖ\D Mnb\IENDB`tipp10-2.1.0/img/keyboard_border.png000066400000000000000000000003271274324046000172520ustar00rootroot00000000000000PNG  IHDR'KʜgAMA7tEXtSoftwareAdobe ImageReadyqe<PLTE~rJ|8tRNS0JIIDATx! " Ò"9DնꐊO915s>Գ*8NAs\?~K\OBIENDB`tipp10-2.1.0/img/keyboardbg.png000066400000000000000000000011161274324046000162230ustar00rootroot00000000000000PNG  IHDRb 8gAMA7tEXtSoftwareAdobe ImageReadyqe<PLTEYztRNS0JIDATxٱ 1 1k?HU!G0'@ŮK`t#mLbĐ!1$CbHLbH Đ!1$CbHLbH Đ!1$&1$@bH Đ!1$&1$@bH ĐCb 1$@bH ĐCb 1$@bH I !1Cb 1$@bH I !1Cb 1$$ĐH !1Cb 1$$ĐH !1CbĐH !1Cb 1$$ĐH !1Cb 1$CbH $ĐH !1!1$CbH $ĐH Đ!1$CbHLbH Đ!1$Cb 1$@bH ĐCb 1$@bH ĐH !1Cb 1$$ĐH !1Cb 1$!&2ʁIvbYX;f`';Pk\IENDB`tipp10-2.1.0/img/lesson_done_multiple.png000066400000000000000000000003471274324046000203420ustar00rootroot00000000000000PNG  IHDR gAMA7tEXtSoftwareAdobe ImageReadyqe<yIDATxb?5z5?1|&b QF芛9;;; R Ɵu p3Rb@PCw! r5 `QSLOѼ9ah @pQIENDB`tipp10-2.1.0/img/logo_orange.png000066400000000000000000000004511274324046000164060ustar00rootroot00000000000000PNG  IHDR" 9gAMA7tEXtSoftwareAdobe ImageReadyqe<PLTE~ѦtRNS0JIDATx EV[&SE.ظd^˂7litזoeӐM9cUNAM#[>j @>9Fsi{3v/L/3 ga.y]D3`5IENDB`tipp10-2.1.0/img/logo_white.png000066400000000000000000000004511274324046000162530ustar00rootroot00000000000000PNG  IHDR" 9gAMA7tEXtSoftwareAdobe ImageReadyqe<PLTE.ttRNS0JIDATx EV[&SE.ظd^˂7litזoeӐM9cUNAM#[>j @>9Fsi{3v/L/3 ga.y]D3`5IENDB`tipp10-2.1.0/img/menu_del.png000066400000000000000000000007431274324046000157070ustar00rootroot00000000000000PNG  IHDR pHYs  ~gAMA: cHRMt}/BkIk7-rYIDATxĕ1n0?WH,Hl=pf8@ 10pz 8 cw Cp Z'q`iUtz~CTsď5"f]ޯk t49'* *a!"w-19PA=LiT·6<$i 5N5H8;yY,8zn[3k-rI 7upu<yJoXy Nu8_94ׄ-].4 YeѨ»oNDJm(ʲd4M]CƥW:ԊO/|>7p|"TbCIENDB`tipp10-2.1.0/img/menu_donate.png000066400000000000000000000062771274324046000164250ustar00rootroot00000000000000PNG  IHDR pHYs  ~ OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATxڤ1l@dEC3e`DbʒvBղ%K$ԤB02TH-KU21t3UtlM[4|;%")=`g7MMLZ<ƽ%`vf &x56ԕ'AE$CQ U5z䰳2jIN~Ba4*Wށ^ `dM~5O{gŪ[ ;pjBgv| 9 `@`j{8By$[#/}| +&и~َ3<4%Yٍͣ 0A#sX //f ^rȶdKKy2 a7b_ IENDB`tipp10-2.1.0/img/menu_download.png000066400000000000000000000070101274324046000167440ustar00rootroot00000000000000PNG  IHDR pHYs  ~ OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_F3IDATxڔmhWϓ祶Iu vsZutll 8(E0*c/`pX/~}9~r`3YnLh}mKIW楶iԧCkI{ϽsWB IB-SbH }ܤT.5B Vaa Y;udlח,x/Խjf^߉,0G(ذx Em8ɞSl}gV ~RS3Je;::.;F_oyWc6gl]Dbw!+m<ىz eʏeGLkNFf^ sc<5K+KoX[9U'Y;'1+9>ߛEWr(-M;*2-OO~!YJP(z"~oTCʏCU_P_߻O?AZvsi~h>وo ai};i~wөL2CaܪD"\=jֲ"b@ X;q!@ߠIENDB`tipp10-2.1.0/img/menu_edit.png000066400000000000000000000010711274324046000160630ustar00rootroot00000000000000PNG  IHDR pHYs  ~gAMA: cHRMt}/BkIk7-rIDATxڜNP? qp*O ܺɅ'30Ɓ8LKEjrY؀še4C"Փޛ_so[*4) w3u H"A0f1V"B!0q'GUmt| 86%@ C cRJ4G "a(H(*LŤѿ[d&9*򐵇qDZR 5'7E]-AX69Kkɾ&/:-5p[,[hcg ^2G`Vì?JYf 뺜-5"\-^;I9AKeNsLZ[hDV;,.dsI6b⸐r`8,f6>*L۵rovi%|a?q.؃vXIENDB`tipp10-2.1.0/img/menu_evaluation.png000066400000000000000000000060111274324046000173040ustar00rootroot00000000000000PNG  IHDR pHYs  ~ OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F$IDATxڬ1n0@JbK=\`)# UJH)s`.YI'2`G%7cQUlMt%[g L06ޓKn}0 *Js4cs\y ɱY|S~TDTUUD{,"bk>YK0ƨ1b%jXmwQKfh% -3Z[R*h%ً#zCDV~)`k͵dUxh忞։r4|V@_~g637 CDCIENDB`tipp10-2.1.0/img/menu_export.png000066400000000000000000000060721274324046000164650ustar00rootroot00000000000000PNG  IHDR pHYs  ~ OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FeIDATxڤ1n0WEmu "cN)P:{0[3'됀;~)~qQUD$2z C3`BuHT-酵k-yl-!'!aYsp2Ɯǫj)=)~TUBCXkGPe}z/CA)]魡hkV!8u?>J$1i}FR?;CأB/]ZԉFz1eNWׅj9\Qt"[=J:-X f #5U5㣀(TlZ<`T&f Ōv]\!i6Y%])aVct:|>w\ǠuŠַ)pn?}ĆJv]=[Vt5iHhܨꏍ61؟'jM/nIENDB`tipp10-2.1.0/img/menu_help.png000066400000000000000000000064171274324046000160770ustar00rootroot00000000000000PNG  IHDR pHYs  d_ OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F*IDATxڴ1kA=Bb;!H*}U&0$]6t)ҤX@LDssQ I!q,`aٝyfvfΨ*0TM`@2 /9ԀW("=p<-Bc.hZ-XkI<㽧TCDeFkus_ Rt:Ӌ[sN;:*<)+ 5ll飗icegg8ҁ1f<Zf20D?;㌫hs_ 7)E$KZϪHim8 k-"`sKdFL,[*9`+@""EiqkI\d$ "s.ܫ1cҦ9<_i5|#k<!E(إtE܄9"#`; XyEc8Na~ۥ/r }`tW[42z+zfYV&okMTW 4M] y GwIENDB`tipp10-2.1.0/img/menu_import.png000066400000000000000000000061661274324046000164620ustar00rootroot00000000000000PNG  IHDR pHYs  ~ OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATxڤn0,fq ֐/Ps_@^'Мtn9$B&OEAݱdN $]hAdF8u )@)12~q-BК@rDC:;M_~$"HV:pao݆Z"( iֺgYn7TD\v9'ͺc_HFEQPUUU ꧵&(GQwwjPJuanil6aerh1pZG?~ ^xwlV@x) pTGʧ:٬=eYJY=O>=\"bǯy{^<<j/1I4N? Ղ_oG9ܢCapN"yNqv=0yxL&]|sp>O|(IENDB`tipp10-2.1.0/img/menu_new.png000066400000000000000000000006171274324046000157340ustar00rootroot00000000000000PNG  IHDR pHYs  ~gAMA: cHRMt}/BkIk7-rIDATxĕ0EW9(taT2|YNtB..e `Ȳ|ɂ1x,+@)eo.Y$*'Aqzf#@]6_&c#UUTƘ}kA ~PDQ !}sȼ֊HYF1FRJv3uepJ˥zڨSu1fiLivz#m=}Ӣϫ0wavv6an(8µ d2l.4? ho1`A\to" _x1 01 C61M. H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F[IDATxڔk@?M'dI{K2u'OЖ; J. iR  u,9?z H` nk|L - g PJFD~$ ݻ5#`_D=i)@D>5h Xs`ynRXﵳG5 fYf-Җei!QQ Wj$KPJOp$Hwl\*1PBi,ђdQlv%1R8&w|7ss3JD8qbk&R"_i@;pi@|cZ XfC_*00ƘJs͍{`XF`E Yi#1&t sL{54\"kⲠ^cxw3zfu@ӂR~c (KIENDB`tipp10-2.1.0/img/menu_website.png000066400000000000000000000055161274324046000166100ustar00rootroot00000000000000PNG  IHDR pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FyIDATx1 o~C-VS!*4l2U,3^l]DC|90@1̐E$hes;(]uX٣wwlc#ʘ=wIENDB`tipp10-2.1.0/img/numpadbg.png000066400000000000000000000005201274324046000157050ustar00rootroot00000000000000PNG  IHDRtEXtSoftwareAdobe ImageReadyqe<PLTEYztRNS0JIDATxֹ 0 1{T=7|gL$IACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCђ/Dr&:N]iC7c}IENDB`tipp10-2.1.0/img/statusbg.png000066400000000000000000000005031274324046000157450ustar00rootroot00000000000000PNG  IHDRbGgAMA7tEXtSoftwareAdobe ImageReadyqe<PLTEA4tRNS@fIDATx 0 DQ7K ~>"gi BYd1CP(l"g䝝;Ws O.Xf hb8*(M۷;B 1C 1C 1C 1C 1C 1GTgQzi^XK żKwI) 110`y)Bq;hzIENDB`tipp10-2.1.0/img/tab_open.png000066400000000000000000000061001274324046000156770ustar00rootroot00000000000000PNG  IHDR pHYs  ~ OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FkIDATxԔ1K@QE?c!~ b\&֡:/Af nRDM:KĤR?޽ǻwJDHu|GгɎ@Tu]r]J|h ] 󊵪r {7uI|F:>xv9R}MOlh+rXDzU]̆.E$kaЭɦ9k(65@f? š`PQ{@ ZuS)M!&`@ wc  Ns `zʁ(b&.!KwpLf7.0Ƈ] 3?g!R|̶~ʿ.XIENDB`tipp10-2.1.0/img/tab_own.png000066400000000000000000000057551274324046000155600ustar00rootroot00000000000000PNG  IHDR pHYs  ~ OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATxڬӱJ1oJczO.B_M\|zEsE. ^%@ɟ|AQ"Bza΀}D@D&_sZɮ-5)?I{9֚ϗk4pi`cQQZ˱ Mؗj˱cv&܅V0kb?.vX\,$<8A; Xk/HBc0jAQX6 -d,~p^1~5DgIENDB`tipp10-2.1.0/img/tab_training.png000066400000000000000000000065031274324046000165600ustar00rootroot00000000000000PNG  IHDR pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FnIDATxڬKAu. A⊱8EDLceh!Vv)HS `xpp$W:;)vi{y#sO:8Ch[ p 4s$89RF`XUJU`e43F \VA0LO ,YJԚ~W`sYUB)o{S'&o1 P# ΥRfu:E|V˚W kI_P"Xtb((zVJM.'n%WcԤbHhyR-f`IU"R<ޗ;*/KC]%9N$$k1^>26F셍lĜ.Hs1d<sJ{x~lQqD,\`w({ ý> ^]^}GoCA l;@e|+q+*tϽ`gY-eY `:OL(' ށN}zf\}2 j~mk5i J)1*q| c3:GIENDB`tipp10-2.1.0/img/tickerbg.png000066400000000000000000000004421274324046000157050ustar00rootroot00000000000000PNG  IHDRb?tTgAMA7tEXtSoftwareAdobe ImageReadyqe<PLTEZtRNS0JIDATxٱ K{6PqFatg.Cb 1$@bH I !1Cb 1$@bH I !1Cb 1$$ĐH !1CbPI >b"h'1eI4KUS#cIENDB`tipp10-2.1.0/img/tipp10.icns000066400000000000000000002773501274324046000154160ustar00rootroot00000000000000icns~is32 ĭᷭڷҶдβ˯ɭ=ƫèÿݿ ߀Ĭνȸ³嘹յгܗͱڮˮ֑ȭ=ԦūЍèͥ¿ݿ ހì:|CrJx?l=zì􎰐?شlϳḆrʮ=Ȭ=fŪ:}§v¾۾ s8mkil32u ǭ ѷ ƻȻȻȻȻȻȻ Ȼ Ȼ Ȼ Ȼ Ȼ Ȼ Ȼ Ȼ Ȼ Ȼ Ȼ Ȼ Ȼ Ǽ Ǽْ ȼГɼƓǼĸ ǭ ѷƻȻ䶶ή涶ή涶ȻprrssrrpȻprruurrpJȻ䶶ή鰰ͮ涶Ȼ͋Ȼqq Ȼ΋ Ȼ毯 Ȼrr Ȼrr Ȼ毯 Ȼ΋ Ȼqq Ȼ͋ Ȼ氰 Ȼss Ȼqq Ȼ䶶 Ȼ Ǽ Ǽْ ȼГɼƓǼĸ ǭ ѷƻȻ{{v{{v{{ȻzllllzȻzllllzJȻ{{vllv{{Ȼ%%Ȼhh Ȼ%% Ȼll Ȼzz Ȼzz Ȼll Ȼ%% Ȼhh Ȼ%% Ȼll Ȼzz Ȼzz Ȼ{{ Ȼ Ǽ Ǽْ ȼГɼƓǼĸl8mkit32Kˆ Ŷ ɶн ø Ҿ ɷ Ļ ÿƿ  ¿  ¿¿ ¿ ¿ ¿ ÿ¿  ¿ ¿¿/¿¿ ¿¿/¿ ¿¿-¿¿ ¿  ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿р¾̀ ÿ Ҁ΀ſ ĿʀĿ ɀĀ ¿ ¿ɽ׿ Ϳ ¼ ƽ߻ɿˆ Ŷ ɶн ø Ҿ ɷ Ļ ÿƿ  ¿  ¿¿ ¿ ¿ ¿ ÿ¿ ¿~~~~}}~~~~~}}~~~~¿}~}~}}~~}~}~~}}~}~~}¿}~~~}~~~~~~}}~~~~~~}~~~}¿~}~}~~}~}~}~~~~}~}~}~~}~}~¿~}~}~~~}~}~}}~}~}~~~}~~}~ ¿} ~~}}~|}}~~}}~~}}~~ }}|~}}~~}~}¿}/}}~}~|}}~~}~~}}~}}~}~~}}|}~}}}¿~}~~}~~~}~}~}}~}~}~~~}~~}~ ¿~}~}~~}~}~}~~~~}~}~}~~}~}~¿}~~}~~~~~~}}~~~~~~}~~}¿}~~}~}}~~}~}~~}}~}~~}¿~~~~}}~~~~}}~~~~¿   ¿¿~~}~ ¿}~~} ¿}~} ¿}}~~}~~}} ¿~}~~~~}~ ¿~}}~ ¿~}~~}~ ¿ ~}||}~ ¿ ~~~~~~~ ¿~}}~ ¿}}~}} ¿~~}~ ¿ ¿ ¿ ~}~~}~}~ ¿}~}} ¿~}~ ¿~}~ ¿~}~ ¿~}~ ¿~}~ ¿~}~ ¿~}~ ¿~}~ ¿}~} ¿~}~}~ ¿ ¿ ¿~~}~~ ¿ }}~~~}} ¿~}}~ ¿ ~~~~~~~~ ¿ ~}||}~ ¿~}~~}~ ¿~}}~ ¿~}~~~~}~ ¿}}~~}~~}} ¿}~} ¿}~~} ¿~~}}~}~~ ¿ ¿ ¿ ~~~~~ ¿~}~}~ ¿~~}}~~ ¿ }~~~~} ¿~}}~ ¿ ~}}~~}}~ ¿~~}}~}}~ ¿~}}~ ¿ }~~~~} ¿~~}}~~ ¿~}~}~ ¿ ~~~~ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿р¾̀ ÿ Ҁ΀ſ ĿʀĿ ɀĀ ¿ ¿ɽ׿ Ϳ ¼ ƽ߻ɿˆ Ŷ ɶн ø Ҿ ɷ Ļ ÿƿ  ¿  ¿¿ ¿ ¿ ¿ ÿ¿¿¿ ¿¿¿¿¿¿¿¿¿ ¿¿¿¿ ¿ ¿  ¿ ¿ ¿  ¿ ¿  ¿ ¿ ¿  ¿ ¿ ¿ ¿ ¿  ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿  ¿ ¿ ¿  ¿ ¿  ¿ ¿ ¿  ¿ ¿ ¿ ¿ ¿ ¿  ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿  ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿р¾̀ ÿ Ҁ΀ſ ĿʀĿ ɀĀ ¿ ¿ɽ׿ Ϳ ¼ ƽ߻ɿt8mk@ic08F jP ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cOQ2R \ PXX`XX`XX`XXXPPXdKakadu-v5.2.1 EAue Z[0iZ95eP@Y*̨~J߂3Gafw"n:hXkBk߂k^8'ϕ/gHi:3Pic#\HiEꡬ+J*7r& MᝓEcMq/H1_%#t;D,ʲ.qb0p s k{N,pD~wNj7XǏZ}l?kAjaa7hhsNC=m&QZ:dQVStP"j/&=6S.= $ r "Nʲdx09>%rn# N'Z[!Ubq^[/}O2dw8o8vCa+D@=WLFG ֑̏7#%$3m^"; hW[֕0q',f ϒRCbQ d(S68gjY*)h`7 QZa.)!UU уDלyVC!͔_SX|ڶtJIiל%ߒkCxw|wTOX  K\㬏iQRg^X*iS!#?16(cVV>3NE0(l}kU#+ M+ T1,4$ٛ)2#`hL2U: u _7WȑJ֗wX!ܢʇ0tGJF?XwUmJ fh +#|Hgd&{uc7 ƍL\(,Xlb/s<ZΝݾG6*evV :JP؍u H,iN#Qy z^"o^#;p;f9㆙MhqωOsVwQe%řs0/3YiLrzXǢ)] qDHGXSÎ3.Ps!wO$yߌVZRM %=js NQ#Qys(ҩHg1Aw]> GNw:A eM` >3?j&NvY1;öC' .:&Aϧи 4k{d^OMX㘠 8-h|#D1< -ˁ<,^>8C$r*aߺQ.^f7@ӞE01mN寤, mxeM r% څ N>!HDywXV@VyhOB{vvgun&TnIτ ݍBC{^ukHez1f3}{:Q*yYN'![GDEM4/7k@JbaVW)juӘ DB-Sv"G\|?;rےI$I9&NXCrNW*k&AU0^śqII'Hi`}V^R4> T #] zWT|F Wh ZLg X\XV3`.ʐ~]b06<ѧeS>x.F21rǡٮQ-J谹{p.Hy#YW3a^Gnh@_Iew7Uj e$8%)㹸`gAZ~AcUJK` r'duTtcq91r!]jlhk- fqZ xҡZ}![>8C$r)RmtsSDY}ED>4<>ug:l[d3?'89U![/$GkLw\\^",lH] hvg&*͡ݡ:Φ+/DprdCnyꨩU0>d4.d jFf B=c};\r N!a_odvP"akꪪ>J?0$8GWQ.;,w.5Wu>n 3ϸ\A,(Z ~!Wf|}&f;)gd8z0Jgmթ;{Kn2RXwlIm+g6"CC\R]IyԌ-' Qɪ2GL@GeLj?P:@ʥlFn&|w?sAXw}g7{Amp?`4^^i;1Q>b+*0K^e(;sG\/)OxZoh딼/!!c#zĩvdGaxԨę+/ DP\s<Ūy# ih%=DκTW*XeРɿ3Dh:*k! kcS Zcb┓ iGo/JoW}[ֆbC> kD-rHb*LV/ 0e>Ek>r uDop}mXS%QwFS@iי6=`#601;Y.R*A;v`yw.~юwo9'Yލ1`44oQPS—jךm`j /m*nߟAY:q=Yiw*ϣ"ragehQ4WﴅfP2sppfw/MȊc#= KSgZWZ10'yB)ъ:ަb˺o-9鞯`lWk- #|reFMD]dv*e ~5 f?cP  MXǺ~asjȗeNnysNuE6݃ƃ '!n8^•-xz~a?ԏᤄoE{Ă 2newDQ1[+#qcګl(.0z8wPjN{?$`'`!RJVR W3/Xw 138K,MՆ9},I>S`3i?/?NMZ1 TQIe"{5q:w$502 oT/WNp/jT=uݪ٣^l6Zk[44=̦&[%wW`夹fN| ϘjS@m lBo$<>w!+ڄa,Rf'DifO((bG4=c1jU LM۟Fc|HkNÁ#`JX16ϊݾgm^v%|_EcB`H7&٤$~4hOe/9tBatjЅ +QZ|+:" )..SkH]+)0 z_Bt)ZBdH(#ɂ*Ԯ ~5M8c6Jaf!ATn'2 hIʶ}`=^I~BmaʤBq[s8AZal _qR <9h<:62lб+>G^] 6 Qw @,|\K Q'LuEע.lM&@ôkNzvܡ"]gʐR]QƼuCk YfLJ'݇Eȅ+,w'I$I$I$I$6E e:T$mk-/m(o,2U2~ 4 KN̅Mgi-m`?1 _:ϘiN2ay!dloX|wmGE&{aͭ")+KhXɯr겗NDw`Vy=Q*@pe@ಛ/>/Qc%o|b$&(6iߝA;#Mv܅6,>saړ<"t't1 ~pd9B&)4%awlQxԆe9ْ:yn!m]?J"^\!4lj0FrE.pщ<󠒡P#гm=pHLɐSwR,PaU_&WaD9a<㜄'3©ӛ-rS5c|׶lD:`ATV͵ o &PuKC`eey\Ze GǢ&v_3wݖcp*s6Q@Z,l gn9Gt}3E"Ha^JS;~i 2F Чo7 % ՛ƥK|<]W녎2Q D䯼M395L}9#2œ1i|Ij"''OY[Wb#{oa)RډSwIuɚhx1>%^_߹ĩe۱p4oiObU>~$Ȝ4RSx0`&YJV,$V5es crJ|2)TfTVNV_ ,x IŶj=Pau,Vbl7 (̨o#l@YBwXs/~>5eC#Lo j/轋DYDc A`_6¼c;sd< b*]-}( jU(A*Ugh@W~ߴ\%@6ig ʢooى R9b1 s9[=ALM ɞ0!.5f+Zs;L:5Eް0!޸m#Hx)"XĘJTZ($l5Ȟ,^$""W͞;{!c1s[EAW]F.s%d[6=hf'`J$K+YFi:xaGR<))A>Yv^c~Jn}׶d~0~]-a[oǨ~C m$*J*J*J3t(܇zu^R򗔼/)yK^R_>e-w&z^>R򗔼/)yK^RKn@\`tCq Jʌ>R򗔼/)yK^RPta*tJ&[~"1iaJ迢}P=_|gk<Е0Ìa L}n0mᇽRs%@7^vx})L&5FdKP O] DJʇ$8dӟ2Yr!;(Y6Zogsվq1> }V|[g]8_?b+kV7O|s@w%UZG)z͵#i iZk=;p\@#ʬ8ZN^F(D#7Oo#{Dw dE\>уe9c܃ܼaė!B%EP)Ƈ[_v5+Fr ^9G!0C\8nwOx>=|5lJIc=tn/FaODoP QS kcY BH Xl(s&~^cz/_iGB!3X='tIcOێcHhA(mmբ荭A% 'œD7`YWȿ61-9i`dйMzv=#<kw&(ᰒ*UیFqoyckm%&YMei lX3TU* j6ǐIM/W/j\y18;y^TXmf4_/L, 2k mOgeq̼ @l vJ׆2#^n: "7~ _#ZZzw+LoOF@2@T_H =źI]U>B6Z9:ә%O>ArPszXzDl?ڈD6~Vb$4gҳ|_ M6\I/[ %^k}1!J]U@ I pK9 v_|`b ЌEM0B},ti$6[/_;M6HȠWVo'&q]A߂@fF U;',Dol;Ȁ Y^ X'&E<+9$l-eRbؕPIw]}00`KnLVȕnaHhP_ӤA5~u"݃Ƌ.E>:=.G͔F~W1>uk9HUJ2KA4&bM3Dg`D*c&ڀV ‹FnaYAQKuÅK4JITӷ<`.[,U5 K~bi]Kݤl7eq^|+ ݩ[FX~Ce& TsD쿒p ::Q@\\(L|Z8_XBv:Ac= N2Pd-([tog `w'kT|w-():F/K[35ɍK%Y@xr"z0ET^I)<ѻ'MqLq^ CIo nKdPy/4W͆C]k5/\dkeRtc㈏%]`oDOL$'BC*isg9g/֞)cG*$YpwP1"/NR|@c>(F-dR~R'Ve{{p_4z Mo@ٖcfW-ŲD[n.2L{X0ao8͆ű8yIxU\aJ)Pe٘z_ueћK8>wİcE͇Dmujr\3V( I-VI} I8LAY3,z\P9g=!äA1A DJmp̎#] 4! y`4$WQ'X7 1ŕygDODd1 FҖyZ LQ7k u+V7uS@zZ)'%$jryQd:Z>p"H{#?t&R~pJ2k?Yg`Ngu5CX.W9^Q) A47Cz9QΦx$^:Lkln_?`\uc#F҂4붐sH-={^sXj`/<Ԑ=-;qvC_{wamZ'g#wzASOE6],Q]Է|e4 &@\ TBMC8F3X z7véɨ6JZ:n @Pc7DEO0' } ~zQ3 ZZ<8df&R{j'h?YOf螵IɹS=g!hM~l5%gƀHZKF^E.鲿۸@Y-;.6ĉx >7Ytq`֯y>{*Njou"%ء@y8ݾl9ڔOEA}joT@nX6q;?g,990{KB>`ZTʩ?j~!3^kly?v:2zw׹{F|SHg )Jn=XY*ݎDs0T' 4d1L8; (Ao&lsakʔBW[-˼e]>E?iKn{Hvkܣ:^ywY2 h>t:3dWB ޻inSGǛp^rȡH?8Xꖉ.W98T{Wϛxi ;g$(T2C]Ԁev]=EJ`ړFt^>0Ж9Le?۵NuZJGE k||˝D=|WӁtwM2>=VRt?^C*&!?>'K'^t/ [G= :$oN±xa%S7渷j>8LkuOFo[J;Miʠl X7/ %V•a<(QPhyaYRN :v}KپH <>5EiccV;FdY *BVv"6aICNUjl=$B/7bJQ#)!3 ~x<ΟUd@Λ:l{O`KqoFS*P:Փڬ~|ViCb0g$h P6lF/ҡE BbN4z'ܸ2ޒ_Vu7Y|/T􎃠OlB+ҢyQ* _3|6>\aZ* fvQiSRD<F1y+mmHS"NFZ>K HVbr5;}JI yt) E*}%) XjwG 3.Ǔ*׊=THdc BX^^L9Ovj„TĿ ٍ~K C >ِט"@ Z&SCS~XsoגS5k2yѴPeH7t`[MID\i~XB́3NReǞTm?{XFd!+v2; jwjC׫ y5[*; Tۅpeu)"T9ؕ=18Pk/1P&IWk)oء1o޶As0r$imq>$h4z:",F4 [c+u& #.kwV jaB[6$an])KKb:́4rϔy YΗ(nL%ygN=?Q fI-w^H_2Ss~/'bSN}&)}%:ȩ4n?И(V=Z{ը}/2Mɺ.\o5Y<'DF6 1GAhK䣥j;)sZ_7n%wm^)|$ H:5@Z|&EZmzG ϛ-vW,ٟH,8`N~\ fꙝcke :ٙ,Z|Fx˪@%h~ Mf42Ih!}2Dpy2:i BD;E,zҌ.:Q]Gn̟FxP3ؕEnLvVec<O8%\K>j>,1ks/)^+!^L|'akFY#7t5?J?DA(N 8FR: Y<"_zPޮO "z+HR"ˢ^^?L(m9(]0]Q|w8RS/m^4v1I 6W#&H/:=W?QIqw|Kt3PֽNh'*9'^@%4p縿LĀ @5R񹩀_(jsPҝM(֩(˘[j&=I.^ "Tzed<^Nf3%b6@/>g\F)"@ aPKuf@% gHNMM[{ټj7ҭW` e]{r}W7 {1GE{ BPJToHa(3z:¨XSrWMܲX@`RDڍz">K Z'gFC5ilq74KZ!0F Eh8+d(kS<~=w"]%ӲV^ Kە$h\/#ER5L@E-< 'Oqvՙv,:K4g4`[ 0?9_@a4R'WdԲAy7&|agT 4L޷: S;,W /kL&Q2Q+8F`d=[gWnJ³ Aaji #\N![2F1a~\FՁ/1Xo;vQ8*iRbsx1`M8$ C[WmLE47>66w.CH7"hT5NRP4ˤ%+h88E$5J/m3E*/<p^_j? O;:/P@*0I,~o1X#7{ m!r*K y8'ۃ ̗0'cg:9Qc=/ j i TyzSDۊ%A_6Λ>f,5,E(Jic097 jP ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cOQ2R \ PXX`XX`XX`XXXPPXdKakadu-v5.2.1 JRmf[lKfEp{nKl8I؂ٚL;]a6=:sOFrU6b2Y$+Z+L9id{O™ ɌU׌Rϭ6P(Exo|yf})쎣mIEaoa ]lxmUUUfJ6PC vJm&HLK8 | }&mjHm!@oa ]^Rs:Lc>lF8"QC6xںtK ڷt),?bMH4#[0:0-Vʑҳ 1@9'AFxJ jv6"]k\Q 1}#nzI LP4#f2&d*G1Ә//XaO~k~^/~"=sLƮպ&u-bE>8>ES8,I,;::&N GMYjGmBC/GbVv:mdާ{ߏ>F'cC,܇!= UdRZN|"sSbI(2 w'&Pr=ACډڂtJ'WtE_6`폳&EO 2pĐZnSHƜ& -VhH4#f 2:o%hl8Hj.s O!l./ؓr^\}Ǝ .P[frmyBHzOWM Jn,F r"sIfÓq߾皐iGڋچs'WtEImf-3wa<4tB<̢zkȼ '4)1%wq3gpeRw~ X?9}m+Pq5^kk,Fyh6 :R6K/ ْ?N<#0!*}3#}}o.G {K!xQ& <>vOT?]@Gdow늠viYM>[O'~B#v?;/!\H'}bX v O1!V5<}]@/^Mg #~}!+P'ֹ̙*?8kFaAf-"4 &G3իSTQѧDH x$EmgD32VOdEp~@QjֺN1Gwv/jk P0K_ ess\P.FjKjElΰ%$ =Y\g{dV4$m &3i?7ۍzY7seDrRFUE!.Kޟ< >,9"C?`[Τgev:K2DCs~Ru>8C$o/3)2&%7 Q@hj+$"J8_c0z_9A@5qX 4tO7OZǘc"&TcǛI]<##A]j BiZ? ݢkaԐ>Pznj H*]N x84t}~z uq1(rrNP :JxOft7U#ΝJb,9|z-&SCk?G>)J+d˻ ~#:C%R{JWֆ*m7$oۉWd+xA|Ǐ!-ڶe@K\h ~=1JH -D,Zo]4*Pii۝ѕ=;7`tcRN;TUa}L,f/<^|!0NJbq'veP^(x< ){-:IJ0]54X@%4joM!e>vn)@1qd<>D6y(>߱eXU^Z^k9.C`݈~hw @Y `sz[oX ӥcxDD/K47И8_.b.pUuĆyiX5T V[K4Onb.2a^mQ + |fP?H pql!^(^>RF8=bsQ?eCa򗔽'!J嘯ȣ3:d)KVʀ &n]ٲxW2TO2wLd!'FO"9%r$(:^RCyqѨ HTW#GzYUg+JZ oXP>ֆbClox-N?VL=Y}qRmQ;X<&-VZ!N3sb;ܨͽQD>@xW䗾x32EKSSENZg㳞z}"b+lm}kbtˆ2&$J ޱ'nxO[f!+ZrhӮ|P ]Ҹc0DJ Iqy^ݑ@OC%$h-ɨ^s"LI-Ϫcs¾:AusN}aEd(B`C{EP^⫴E|h}" $16ԡ㙋F Jjyq{VP@{]+BE+ZB|O%xjpcВ>rIyIӚ/g`Ss9 |/k# KH }r4py RϧEb{-^wLa~HL# cj _tbCp74^ 7tebӯaSsVg2 Z1bky֊8s @SPz#}opz nk5cГKM&9'UMK")ϧ aa@asڑo&+9&4?W̶5XOva3v(āFir_R hCoYM", qIGY^(x!o_C夹fN| ϖ/ eRe#;Cj>٧P |j3wRv*W@o{FrmoB<%JHH/pcjiUn؞3;SQ:uS-#$*fEMsVO2~:ZDrmޱd`Z(Y"mޏ'28kER/j=d5H{H՜t4M1g"a2ɰRckF'փ.lcy_rR(Wi*{ײ աm xTpZG:J3!5`1ڥa sXf  })web]-4 X.L1Xf!&}& dx%oȑ[gyPw fc9򄕾7ݻ#ޤŬFk"2_=Fj1{)-A)DUz_nrA望Rb+pPFJ+ϊ%#&p*54(v5>5@GNFJT=Dixx+S}Dg;vƌ& _gh^#fiLrI$I$I$I$I3_Kemzp%"Mj&M?3BLhQ7$vY A`K M_ r}:QN~jA+@rUԠ?d%GUK&Jr/"+d!- !V/:VT8J`%a k)7q/lB%"m'zDΘ%QWC`]D Zmw^GF (5^iDAr#pk)gsMy5yBto{|;J&Jzo! cV8t0fHjG>WQ9%!!TsAg!Cw\fb^qk)UJ!`კ?k}SM __$߳E.!di dBv3G^IGD"K[-ClqtKB響u4O J沼h:0UylHhQEj@;T#gfڈ}ib&bCp˃-~Nb _wJ}3qAZi/P{0iSLPVjؾߗC~Dc8WBOnKM3]G7ĸ0mwM<+=*Æ!njFx;E`s/]+"$u7`z57zKez&lS*mEKڤ?=Zuݯ1Wa7  "njx.Niz3*`Ȕe9aGXξK;SoKeಟ:U}hZD.!I^047d{P?B#Fd(Qjg G"fYV0>Σ"Ѳ|c'>AR 5# yYg(/bω]V]Rg,%L2Ջ=-abzk"UJ -kɞvHފ84OΠ o.Pi(%hFeo&6=`Eo֥>=6w=4x":6И40H;'%^% &}>襦]9&ɾ fUB(\8ӌ7C׃D1Բy=R@2*\[oFaELNOUWtTŹZjb|YI2\3e!ji%T7tЍ[.fFQh{tqkCitdQka[4CW3m԰ݻ?e/m|Lk+#axrq/5j=>-ճ5`JC Hv}رDGBJ@if}K@?n { ?L:-V/ +uvWClL xm5Łb 3ŗ;,O -Zڋw$O pڢ-P[ 0N\;ַUT@Fo(]4 ta%=H"rf{׺%`Ð ΆJ sr(}w۲@`ͪa240X ~M*\~ko ubC~ekk- ׺?04{?-/{ vhI滶)34GQ,5V_,nF~ݙPifdV~@Gs^,⢈QoT\0Bb XU)| ' gMT9b[ʱe f ,[gVS g67[xGB4*-(]E`0 L_"ˋO }ީsöMDSrӗE_اL͹yB9٠:&(,aHb40a^SNw⫯]/zݘz͂=hF/ t]_į5MŘ1Û{GT|܏fg:mՉM&p9 .U&o &_ii \MIcp L8q^ `]3uKNk }]|ٰl$"3L'` :Au~kX>`{"5ऴ/y>u@m֋OqZl}tQrF )f# `kI!unE`$cb ßNsSw08Sاxyw9[XC  L6B+"^D;#,}*2WQ0c ާ1PK+  QQ gG jfj_F<H֫5XC\0W?F`qNkB,ߣ0OrƣXr9>54pgP 8xThbց2'WŖ0ks/U9k"0!٪Jі|;yƍ{%n6H 0?>..]lJ`;?_Uf4téUBsE_+HR /Ӟ֩B):l=^e<;4fE.j3hA579<[ [bbKtus4H O/h*3fZVp?pT(E>vWKn=8_:00@0K{pK+f'`˙ˀ_U.]iY38B5yF=_T6@V"X$@8tUPM`QL1m!u+QQJ)"=J>]c`nvOVXrUQ|K,3F1`//2#/)yK^R򗔼~Ϗ`cK^R򗔼/)yK ~[0yMp%hiwG\/)yK^R򗔼/!*tJ&[3O׼-¼;I"'bGWZRNDێ 4 %R霐^PdlƗRSKI&-I7MB3G5XAԻf#5,ǃ'{#k.ooB:óB]([Zo[ ooգx/oϲ>al4ܡu%d ȉےme>sHvKN9b_os^NhV/.FL"&dO {/5}\. Q31r(6*3A^MF*`-]Oy]L|Fna5Cde`q6+7Ec.uli"YMV#|̰ޖ|~Jg!mZ`\ϰ3{hu~Y5 8if/S+ź:;\ܻQ_.D}J58bm=x]2YJnCkb5S^"Q;>ZI<}.4?Gl5WGv fsJ$.L+ſ2t{saCBoCQfD,̨#d^Jg$ O:A:7WjoQW[/`h]FOT ]Dj5 4q )!`U$xhtegG ~͠Zݯ6e3eId%lB>֡D^Cj RL6Z GϚeM\ #GO)Aӊyvڵć$yqkuWEAa:|CEUKςGignakz FҪ(%q5gSh E]̔{ɀt|Z }@ GI|,5?ۦ_ 86 XVA)ށzyVL?vGGp(htqKۇ$P@:JYVڠhԽ%>&E}fG4)Z~P/](xz#$%PjvVCˢuO,?a^r_sS,C'шj701T4ucjpކDMX#΅]?sDwDZF.F-$ĭו ʦ!;K]Xf^;R7;IGe/C4ݺ}A+:v;YwV%RKyu'_$clF%1OAJS1VN a$+x8U,b(k̂vcX3%#op^wNwL0PRUC.I< 7 d2\ !𬞪rS1ȕrxx HޮF_1Ծ1c=ߥWx@nXIW2_^:v)DJwXy{'H,ᡰ %d`R@4QtP&MZLM3o*k-1m7zEϦ#R./?kGҴsuQ=>"پ {oݟqg>guD{;wi}?[:=1?F'+D=K:tYǮj ,XX9}%M6CXHIQAa@) )ź?R ܞdbb e{@KїY:*HU3BJ@Umz]U?`Y6!p?m΍ج% e^G,*T|1eI kochBdp7 VCX\]1L ;:ǔSI )Z8*P-L4JZ7٥ 1jR;PJ81R/+=*fmkB˳<83sB3X(ޕwM+| =.,y\*O('a)Bh2B\C[[Vj;( Wcc [PRJH/ddE &~jɀrѨRƭn:ÔGȠ"1FGCUy dnr%HBZ#u0 }"bY6[L$2>xJP5,ȢDHq C_=IxVC`Z`%'Xm!|'* ҈KGEc%cbRрilK|te{V~z_םZ[#î}0M%1Hdg Q?w#Un?Vr c+u-j\N@⍯J|uUM|᳘Zp(tQ[ Ro: r'3g0_AocQ MJ\. +OA&'<eC)&I>wF|i~t|"»ˠF+tQ"󀒎"sox#KrՐR?є?V0_ *Wra ,MJk4;^s=:̂Jg߽)P1 y ܣtXA>#&doR߲.S,lwN,ыWk726Ld:: # ͆"7|^.l/Kp l{ԑݼGIyՑ[7RUP`[GRߪ~NNKxJ14ϋETb"5# o\vLSY$} 0bC_=a'#Ee?!v fd8/' 0.;קIF=Q:gapr'{gBGjb 2:a=kSܼ2|)=A*໰rk~P4|X@Xr z_ʯflt**2" MĻJtDvFQMn%ɿc*뇾WߌVA+od7/[葴Q\Nb1x`훐ptĻiZ?o0Ǻ1{TC0گX܃~Ü$UOD 0-. \SٛנۛW{Nh BWRie!1R*ܺXEFW8@pO ԩNY@{߄4#1lnyETxq>B:am~.+fr<,6hh1B-nN4)mfW҆ gVDGbCn$9,1O. E(r1<7,Eaq 0|:L,O쉅df1V۫x0{갦@6II݁]Ҭ F<1/H%8{p{Fu9m֡L5ST6@IwS__Q2\(N9QWKC=,۟` jH.LSU'"}TF\ /1WNU* t ZaRCE))S#8.[`8Ü6/CSzizSsfF>cq5_OIJ[lxP~+DŽA JM nH)%%Gt>2:2T !يYk$718"3EFq[mp&S8n`N-&8i̘9_Ͻ5Ǧ=nӱL@͑0?OϺF+7TB^3Cdslk%w$ s0w,t"#g[5 :Vڮ#IjaΣFUyqID'D>$C>Y}G SV$܅+CH hNa:Ua#1qf-Uy9beTѥy)1TwBBؽ el]ǝ2g*)I)YX~ 1_b\ \TȌR8"F&i`q⾢hOxLBeTF +Y?] Gd|]W@L6 GHoQcfÄau)[%2L#/V݃/JQiO)z:BH6=ÎaR9fv?)u=j%ҕ{d<9)P:kw¥BS6 y<˵ &D%*>MbP0ҙx(=CqiF4C'dȮzs4d+PXa+?kG=/L-Q[29#K|Oߣg oHXmY4pzkcW@UD5sC< &BPwPvU^*[ONUhet ^*W9Lkgx z*0æ}8>_D5^MML$<u}Kt%nGQrOhkYKw*gi*߾-DO6rRmV( @,5ߴ)u1$qA +7%s0h#G'St`b;C=c"4x ~GI?F0z Tt*#Ҽ! ` GV9ą] :*a5Htz'Vt#Hb*Cg\wU!Э/J%P%C/A=rxô&GHT>GPnR̚.l%鉍ff!iGŤ&C I8VHg" >k Hy]\f# cPH+*sU(K`s2v goOl;l|4҄2lqPAk ؚ'> wuƃNnS$P2Ls4?7Fss%loUͲZod4TۥC˙4?@o6EIS({E*K"-U&I'e?FNotF)'>ծZ̾w 2'0|2Z訿)j3|GfwV(CNoEAؖCՃ^>a;=sp"n 4;iuu݀hfuzx`0Z eFk@Vmv?)H9JK3 =GSEC"?~%'eC~_ko'ׁywE|ڣaiȽ=m[ճ*gn!tpR{4Q?Oɫ3uЗhG^2yt ?YJWB aߣJh,iR̻LH^V%gҖϫn>2=^}ݒP;];ր#c侴J/Θޝ>~Jޤ}q'8ME"t{RS@b(PaZ*L3X2 77dT:"4w`o5!P^'z`2p0e QaEee\u<5M,_S-P5~dAHE'A~9I\/R.Z%9M@6D̩υBN_sv Ȗz_}VZjGՙ7O߹XEn#~\ AY:$tJwqW䈙讪ϠpF,6'&ȚAgk /cܒ ֧dE.`QĂx,`Au˞~$IKdXb6ʱ}7f'UZ,nHMYZpm\5R7c̃uB2{MN#]ϿIH1fƵ6m%+Z޼[&_#VLJ ?l lҮz XKjʻ dqIcW+|X(bh(eZ+.[B& j N ZdzRlzə<0xP&m{ im;opD^T D53KV!6+vۍ,)6F՝+J;-Q%i4/w4F:w:b~9؇!Xﳖcr%qOf|,б26NpB6_bj:/ŭ{J'A _F.$$,>M3vP8+(I\Aͮ+ {/,RjMe CAm)K#!;"yb(d0{Õ2 ݦ2!q,[`ыL6 \5C#}"̪I &Kvh#."@v|/imO1 v~CֺfNG\9Ć,LUhk"+Vo@ǠzM@zʟLPįɛ%ķf;.-mc3>аv[TaqȂuTV3?g!` PHnM%)tqqcd#^K20:;I݆4&]sA%>n~&wE,ߣY;;T߲/@Ūx<|wJv= _+{] NA0?:|C6 >jz5]Vgq UVEVMQE9k~ 1Rk׻j[/͇6إLG^11rA29au4~g ~j+]|ͤa[7ec6P)nU}!|=y> C_*[4l K!F7?P^`j4oB'{ӆkXn!Ǻ_C`\m|7|7qy$f%ol6 al6%lJooW /iTXZDiǵ*W0ROpXRF8u5'3ȁR!n`Pj_ӝ6d r#̺#RT*7noooP̴ooov_7|7|7p"\/1v׍Aw5||9]p 0K*l]>U,PH[?6#=CyFyPsol'+:| @}-+DB-\4 $!ClJ $!iq(ǫ|sIG:|e ZV 2.Q8 x/ .>B(HSPCEo B`*ISMϓyգH#T 5w'>Mu^|`ϓt0O7@p'.Ϯ]qk,wxQ_ϭ+Ώklxh.=sB8`/b rH9/dQ Σt A N-%; yU1=10I=~8i rD33b Sbܻ?` ׾K''K~o?Oi2BN`Ͽ?0>|=%OjNCyB`,`V'NzJ,@3w)<.tݑU0OkϛC,5^٥EL{F`caȬ}+eKW1Jm΅)Xؾ{uu:eTv1Ǜ3:<"tV+Q[eFPz1%<71Rxr0]Y$ϮX쇸8~sP`+/8AT:Ts)A/@tx̀K2d:6i/ө?9(vƃ[jì>ʽXe#á8U$2_{S:^6~R*ch8p&*,6)p|]M!ϓyP_۴t5ˇ`Zs4ŨdKhjJqe00ȫ&ԗG[t\i02Ӈ'pMlQ~!Y((j64&a3EAuڧ9\-6}BԂ=>p1ޡuGee  O9|f-͜hfɦqeOB%BF紵4=ţاjܶ4c5?H*a h"R_(^^ ش^ ׫=DAF~6q:䝺;}Q3pU@5K&DUg_1b_\X>w$M]{޽f1 +l<ilWt׼n  9)CC?p׭褡-u&ٓ%/ԴdPHeI(%;P75 Iwq*> &@?3 iWXPm4"k>`/Kg:ifHp"sji[yzweP֚jeUu칊Ct_(uik|` dqP*[ˊRf|c`jt%\L&&NI%i02S`w9}"VW um^K7PB[.,%! 2ҋ3zA+/5$Oa7c%&*鈓;{n{$I; J+J{)ՋpBH]yv 1#So: ]}/󑈼*ƣhJ.57vȒ{mG~0sU(` !>(iX0>g]mU Uނ'rt)WA_6K>hnsbVR5 B혈,E?,B|L,'w΍9Ơ*Ɲ 1ft O< .xt:n#S m'^1ܐyMU1 rAݏ"tkLuVYLFo1ONB_H궶o32qa}5}5 R%J SjxG=k; Nur;DE}u[$W~[뼜0fH"F_ޑTFܬ+!.Pе1l(켊LJnE*}B"Ha`ׁXrH瓣lM/-3^_,8( {;2v WIMZ DG=6XF;ʖfGЈ G"-텯Bή|y6RÐ%b:EGd &1O|Vl 㴄rλlmĊK4,%8VH%AFH}zARGF=P~~${(C26+cVP^i6ڎ}\sE/]vd !C99Iv6/hoRj8*0'cxM/TX *aW+NNV @x\T-*鏔8喠Թѓ?B'`VyC4Hk8zh DInJq|poU95f--' #.FhŕlC4Hxc-Fm5e*i V߲B\hg($xKWNrBe5dşU_y͚r/|᮴*i8 :߲BZG|{Wsg)5-R G2Gf!UR]G /Q,E0m4xQo~4yKM*-n\쑰tuJUogWGB}dβmAq(JljUAUe݆iaAvT OMfU99Y"u^_;VU;GA2p\ažd\(#j)/׀C&,*>9=v`twU6+ ⸨UwL@8*geߣ UoFsK9o>Iw\" jOQtRȌ3d=֛."_.qjS~qpb&*8Ihˈ &&Yd-$w<۾L6Mdptv W`fm aFo.}a)BmşUZ lbm 8yIѕ;OM'&l-!L*bA_gY?рdg}:7倉k_Fp5}wTcFϗɔ^:1È,^ݝt;7{?f~bR5LcԪF7L?]39ډMs6q:Y;q+\Hwp*r(!Ϧp.&2*UM4p.|C):=νևnWRڲF{0@_ # :-O'qDa/_N'f䅜)tfU'xsf&ankB]1Fr'jT^.Mf׷ж+H_%n84-Q}տq]3Lm(L6(ha{ԣ0*0Pg%8%R[rV+C(DӰqh eZʜ:.?b!*fMU%V4yϐ=4lYH+|yŊ'21TKS: ZQoc_x`%1ʈb_E)Ec@.H11_r?QgjղskoecIt(}GwVNZȑK5'D(1+.Dg|ᐧ~ uַV[ݛ_f uu",~~{窩:݇.@ $%FS~țr&@q:v}窩:݇.@ $%+Im ?lF2F|m-z5hhs@(窩o)+DzgX^e8-/܌! P,J;'osH2&8JǨkd75iRH"jB3ʽ;u{g gx2` E٭ɂ2,ġs]4̇ڲUxnm<5($aDyfBz^o4[uK6$TH7)" s?(ŪcK,v] aޙ0`ԪSFAYGvL"S%sߘt ITmae׀ܐS`m 0 f?vp)2h7vUȕ ۿ2`=~[}DyW9|.PP:ۿ#rE rc}uOAH v6(x2 PQ󃜕ޑ2iQ/0|#J2C*=`j`l}aYb~׿-_'Mx@+O.fųwϐ,}6 }DkD@0j"qΧ_s4(4ˬ" \JY &.e@lK=Y2ExWUskZLC~c& h-7k(Q⏯J&>сM q{Zg)aq%hmzxtyv?QQeK oc,52dҳb{mHrsRذpCɿ܃žLyEظ py= h'|;ymS ( D&7ż< 0H5CCo:i5{Wtl{C\hw'ʃ}+QCZ5En|C򒓐e8nay 8g; F,*ce[,o#FOB넅QW-h~;m( V93*>.3p8UV|"e,M|<o}7_/,h&ڹ&߃-7KЋNFdݙܻ[TJoMi8Y=qr/gCa]REA}ai=G3XҾJD# Ro}t2)@J"$tXJs{=}n}=6{\Jii% Myoru+G8a:1#r_j*'"QޕA@Fmu%,H,|Zku"@r0eֻR J@!ah"U(&8_5c2%RN>f֊и/]f ] A"e[.6'Fan(uˮG.8r$:T>ȪpI{|MOKpމulK@կjsf<@cl%0kb⪧(m::bH0Lg` 4ڲa[Bn(ǼBqd>ݔ1:0fz3 1F}/`'n J=vOܴzT;)%A)P_̼9H\tH1 K& [>eep r}k[]\ N[ç}?lJ*0O0r;tVVЊgm%ը)lD1nzPAu3M>>Ѯ}kV5 ($Z_&O%R^M^D,{9puc˕: l#^dWHxނH܇R|ip*(*Cd5p=tB+\wO}7+vro .ozJi59(EdV?Ӗy,5xo)Ķ>27!;]`98(Py̦ h~Ghd,YuEq,1Nˬ'rZ`Adyu!Uۮ'{I!" _W -[|؛=Ȱ ހҟIFAdž{$V %sX7,j҆xNPЃoM%P%q(^k\T} ;,M"b(n1w@";Rsu0wT \4Li*ȀPF{;)͏A_D4Б!t,>n { o>C,]BpO27zOh@.$ge9YYHYG%qA`0C6'_֗{W`!m׌{j\J $bbfu|$Ş,ETϋtaNR{9ͼ/GU_؏j`or@۴xdʐ"cFnt7K**%^bdלXQm#FP s|/Mo%/1{q&4D43&p1kBsNyq Yd_=%BS>qռU* + V{+4lwk Jv&za\Od#WkVb画P#?-g.I>ݘu#`ҥ}([>|Z)%7 F9?@|穫Ed5wkIՐgGoY"Q5aYngʈeeQq`;J'MjvRq3fB ܁Td[ x'|}ZȳmیqއUUlFCCĴ?K5G[Fi9R`]`aP@y8QD& 5D)x(?[X $(՜E^C2NP}3Q4b8O4 [ ؂Q6/7~,/5pְ;בM߰5~qPUdd0_F#Ƀ>(Tn-[z?^u8Y(ܳA>(sLBv@ 2AWJftZ|duH~u3U4 b >p0 wQhIvz@65`DU}Ǒ*%KQq9K;kuL}]y-`9rëGd5t ,CGu: ]_pRkZ"+įI1Dp9 AU@\}!{E3}tw20\aSb ؘ'۰߬6ti{qH#jĉLɴk>Ymo^[@qlu/s\۪yąz!6;<*g!w*S^&)Oo 2vĀ@(Z/a2lzdlt8 6+nW<|=(>{?Sanu?kw/-bdR0ēasVV=y[7.yHGy`]ak\`< t͔pӢjBw̼E~LR{P0Qrͼkyq )Գ&ڭ h%Wqk:~У7h-QEy#_=!b J5S[𵤑1!š|B\, X\DYw #m A ~ǔHRA'VTu4_3|ƣ @]_,R_V2ue]͚pKlFa_\0|A+]@D^[m mB&mxaHSdΥ1a~koUXeء/^rk_P(/54rbWYP*ZVb5"d܇S=>f ́!/1!c:hQ&Ix-"FBw/J5X6G'r'<!LFDGCy 늑EԽN6iw#9`J☚ ECYc_G{#X,Au!q<)1\NJ$mSU|m, ҉&/I6IԭAC\lV^whêw eL9rg+#e]̝?9E0 ڂ8)Zz|e:h\fK?v!~*#Ɋ 5g +T/~mOatxp$M D/1x8q~e8a]?g5*b& 3 V#,䷂/}`wHi)0~>W]\zVwc|U0*?4 7 }dѽ׏ZVu*YV"B'ʢyڷY70`Q{WMb^W}O}Nm̸]Ar%i k$ڹ?77JW?_otdMM)ѿthvKzN'6U{:ASJ"ʤJW #xv?[idٌ3ǿ u_ҩ9xp~.c%rqxbxK]sH -+"u a85?~d>$p,]ۿk\U?ޖvb`m*{9_#+r, (#uh9)9M'z1^#L,m֙8nX B@nNQ 5]K;NrlkR=$g͕^N䆹,k1t"C%Bw<f?̀f:j=|AzTԻ2+k&#LDWƔu_-1$B4SVUۮAѰ]UbS.~6uEOJot5gGFmDwyW zA$ќtӉp#:o =Qg<[^P2NX |%zf#v$syPTߛR6U/r{/UA' JK(ȉ⒭' uw͍8K&A92,L$%Sg 50:q}vGxwlX̊z5A֫ ʻSՖqx8Ws_!}'G+/gsl`6X9prփ5+Fu#9c m )U~ͱHrC(b+eFDX[ںk&S*^aZZ=4B.r57E/'Xs8s䟵| 2UU&45Jeѣ\Kjz]Zj{PhwǏfpԁ$+V錯Z喡ǹG|,i^pߐ$x}t_XmsxZr\2* |ĥNn!D{! =v𖸆I96f ز86^ޖ9yL5}]-qxIȾƃ۵/D`V)h Si']|{TZAö#B)xF pXYVKABR.D; e,~YL9 o^{#ֱCT!{<30(QD,&G %GkXOEb{n9E7uOƈ@疈 RE16Ǽɐg\ZL_z}K3-}V rTRIE+EDfp57o0x}W|olxvqC2i&M(0sbgr Q.|bY&Pz,>jQ z#㢆4?6M-ۍGU7XaT߱usӫ--v25I6Mk,yf{eؘ+Wo ӛ4y֡xXbu$g2*k?ьQJ bJxeXt{X\h7nx-ՔgO\!cm'0܅iPhk T6?/(dzRpXz-rATJL"8*.ldli|?P1 @īؐ^Ϛd!.5hOu)Xr['D&fT ?ePÈa(J "B֟xx4PJS.9!}]LdAx xEv JmX[^@a5;,m8< !&ŗR֔OR'8y>;Ū !KrmTz*Z+&`)ĺJwE(̀Zw#Ec֋>mrf^Z>D}mYUClr;&1l azJ"XbV!ّYMc~lED6x72b/v^9h<> kGؙ1PVVTôѬ,d|$ 7nf%'GO63l +},!^_~w74'Gjw|n~w!9oP=<۩_0iB|,&9`4.S fyЂjenP v 0ߴ h\u{g8WЪ|Ap"]d YF``-LP,ZDD,蛝xٱ+fV 9LZOdI_kS&&xGikttPAÄ5E,!jܽ\cQ1~8:)é6K49QRW&wI{4P2'`<ϑ%uʩj# Qdie" "n.Icv;ê+/B*KtiJ\+J@LyÂS'5#dWżSc31)$'$\UU܇tmY z!'㛯*F=#"U:txL&4OC;ρ˔"v}305 &%Dpt.H.h!5$6W y `#V2Bv}{(0/B5}8.RRH2H_hA;_wEЎB?I'% ?)@ LK)52ƕa$_" ex=1P[04lwfS9 pD+H U#&!Fg .O‹Ѭ$A [j6T˦Z'D5/_41̟5/_41̟0F{$J9Dw-t a3h}wI($[1À2z MjхoQ#Kع r P1 '"[3㢤 2LQHIv W RF %AhR<8 LJ5QY{{nо++ 8g1ƿñ@hI*stl2+i"͆{spи(nV&w %_qj:wň!:f<_[SUTR%eh&2|_ysӮicnV tipp10-2.1.0/img/tt_logo.png000066400000000000000000000004451274324046000155650ustar00rootroot00000000000000PNG  IHDRW?tEXtSoftwareAdobe ImageReadyqe<-PLTE3mIDATxڜQ CSuKǝIa,g8̉p:R^hY $ ! % ;{{>2j4gf>36 %6~`xo22GPu^_X78 -m2"vfIENDB`tipp10-2.1.0/img/us_numpad_mac.png000066400000000000000000000076711274324046000167410ustar00rootroot00000000000000PNG  IHDRtq pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~$tRNS0JIDATxn0 @ћ=04 CrjChLN  *TPg yBKjǯB^ͫ!m}?o/\gcڛ9a f[z *TP,)<vD.su` 70rXNa@dC *Tlr!BpI χz *TPBO~ ^|Z-IENDB`tipp10-2.1.0/img/us_numpad_win.png000066400000000000000000000077301274324046000167720ustar00rootroot00000000000000PNG  IHDRtq pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~$tRNS0JIDATxn Et:Q! #wWJ%WY2ƀ"DPgM&i#خjH/lLΕpɭ1 o&?y@fla~[^ ̌G١M7L'>ęhSuV?Ěyݫp!B"D!BFqdyJ6* "<;78`[k|?:79h Cz"D!‹,o$<]oF"$"D!B(@f>0]J߯Eը8^ic+f|4셷[5U!B"D!B"D!a|?Uz%A8+^[.)SZE[y\/:U!B"DxYS c"2xm]]ep0} eҖ5[& "D_BB/mBU !W="D!,~E|H16,bIENDB`tipp10-2.1.0/img/us_qwerty_mac.png000066400000000000000000000031501274324046000167740ustar00rootroot00000000000000PNG  IHDRO3tEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0JIDATx풤6 FJOFnd- d#|'O'.bO vl5>Y3JO%?O}d؇OCJ$ESR~#>u(}J݁tTzԕOcOG+d@|<w}cEΑ*)L}|jʌ [[9>ZW}j.O rFzx|=vygEnpOʪ4r}c#?(䉕>h; @##\?' |>O' |>O' |g0>i@>Oŧf(V>O}>Ӓ |CTKkTxOxWew[!> \7aI&DZyϕL8YE^=:~|ͧ-T,~:ߧ@->ǧR@S)|hZ'42/'.hO}pnH^?7[Χw7> |§g;_n>O' |>O' |>O'a'l'' O 0ק4:z n'P<`}W~W{t4)]{}nʧG tOzn 7K5s{ku.{[OK꧍So/ki~tex4T;e)dV4a3֍6oqwhNU>ֆN̂t=> >O' >|' >|', j'|B\oO4p亨iZ'ıӺl_Of [Ҋ)7*aQw\ѵlriS>^2Û)}hLҼ@Xt؍{iMWXNrSG(Vdm}ϽTo}.p3+5>U:l8Vɪr ΌH_Z?KiiO^ONӚif2|zNf|JtO3"M|XD'>O`2' |>O' |>O' |>OKNȨ|lO7qiF;vNO|)?ܧO{|ʘG'N|ӈ뙩͡Qxh9 w|j$z[#y+@Ya̍R e|'O |' 0Y ǟv IENDB`tipp10-2.1.0/img/us_qwerty_win.png000066400000000000000000000032471274324046000170400ustar00rootroot00000000000000PNG  IHDRO3tEXtSoftwareAdobe ImageReadyqe<PLTEٟtRNS0J)IDATx읁 mI.Q[aUj%0^]OO|o;9Kc:_Q dO>4O K4E'-;h$&gh򕿄Ov1ȧcơroEyt׊=e_ވ$wtʧRmt>| Ԕ=oPvOZ|_p 3 ">ArwNqnpoU8r7i]>e=>4'{8ok**J| xŧkO(Yu}'(S~s}C|ڑ: #}Rçj[y @ >>>>>>>>kS:'|'8O؅OaP-uID|$ Vȟܽ_W{yq. }O>Ϋs>In5Wԡ1G(o>Si(|oS} O-\w~ E"O'y!0IҀMN>ݶUtu%:3- vAfi}pn'I%gy1o9!x ; ϴO)^'4>>>>>>>>>1O 8 OOOp'Slg!K,0nwBd!0 V:)W|V{ԂqKìOBtiW8T}rwlF. fI?VO۝gKOC>tdSޡB:y;,>FzO h?эj[4jWZ$ :>\ 0OOOOOOOOOO0pP%|3+># *waŧel*9nTi\Gcǧqm6҈ⲋQY  fF:jYOZe!>w){xK}j>ֲV_=VɎYjO~1t-SW};bòJJV2#}h䧦§#=>V /_]tƼ*,  `g^'I?>SF|X 0 6N|kO§6zopop>'p_gR݂*WQҗ/ӝwĎe6)0^bnnE7 7Vd[l~^*'O>@Oqo|S㳟}ڰY|zL'~ynÇOT@[WiK|_}O_OrJ>O?y}HU*~ }'^ >y`>[O [/43'>>>>>%A'Yu7IENDB`tipp10-2.1.0/languages/000077500000000000000000000000001274324046000145775ustar00rootroot00000000000000tipp10-2.1.0/languages/qt_de.qm000066400000000000000000002540661274324046000162470ustar00rootroot00000000000000 l>\oR>w^?m|{y?@W@}2A2Av.ARBOB dCyCD1iDurEq E"lFs)G -GW/=NG1$G5~H< I1?NINkyJ]J`KK`K"L\LMMUM)Na6O6OJO^OP9PpP=PQ?~.QwQR8RERS%{Su8ASAS[yTgLTU7nV VZVWtXXYMYMYEZ#EZwZw[,[f!e[&\i)]*/e]O5];^By_/F_O_Zf`V``cփafajCb}qbu(cclc~dL d$f$f^fg(gd^gֈ7h{ nh,ijY;yk%kykAk&Hl.mg/n'IxSnR>o8YMpYMpyh^piq sscrws8st ۊtNu]uSIuIuIuIv.IvgIvIvIwIwJnw~IwYwix/yxixxyyQyyIyz9zszz{!uD{[uD{D|LL|~o|,},}6,}h,},}}ɘe~:5$~jfR~fR~NEyc^Pq*VfR0f %C?"KN\MR8]]Sky^#{yxFG%3صiǥ+Atw{yrv%C-5oƨƨ˾7ҝziէ?Z>f 7~b~boZ!+3/6 YDGGbLAUPѧ_SnUBUZZ(Z^Z[]k*^n4ei.iqkQoNrgy;{}u}w}wG&tt2.o.PDKtt*t_ FVʢʢnddd,d59Q֣UcBwQ +@26 DKU|YartB}wZ~}$}$ZhK<f /E}@5u.%5Ti~O%w.5kEXU 'bDwbGgAmi$x1 z*2dU5z҉mqnb>Cvʴ5ʴ5 ԄVDdpF5?YzIIOAs  }$p qe ڤ` E EÙ Ac Acā 35 C K!?ƃ bb b`ǯ i3 la la0 lff xqə |P t t= .˂ . l ͫ O >Π / l ˰Ђ K a %' Ҙ x =ӵ $ ) */Z 7uՓ ; =׀ B Rۮc T^ ]6 `پ `] c( d7 ek e۟ f1 g@ gn k,` rD"ݦ t m` w yr+ d H H> { $ .@H } i n JD J  t.c k$ Ӈt  N> ̺ -D . k U) < 0T   = xH . 7F0 > > >R > > >@ > > DT: I RV RV S.D S Y [ j7o pS . B ) T T T T   .   > )d  . - . " . . . a yp % ҂ q   t\ a :b2 ʜ  r" +> 0EW ;ɾ? Pt Pt ^+d fe g iFCM i i n ui u wN w w} w}A |[ X  ^ }N R  - X &! D! t5" t5"W " " )#. #'$ T$$gT%*%*%/E&)=B&I_'.XRu'[ (ia.)nyG)jvɅ)y$*~*T*S+I^+B,--ݖ.[y/ /\ /0"#0y$U0%41S%41-v10i)2[021c22wT33D3kH4Jd5L$.5ba6c56yC6{~a7`8![8r899N:/ky;LJ;P;t2<,<=:=i>e**QWidget++ QShortcutAMAM QDateTimeEditOKOK Q3TabDialogOKOK QAxSelectOKOK QColorDialogOKOKQDialogButtonBoxOKOK QMessageBoxOKOK QPrintDialogOKOKQPrintPropertiesDialogPMPM QDateTimeEditNeinNo QShortcutNeinNoQSqlHochUp QShortcutamam QDateTimeEditpmpm QDateTimeEditbisto QPrintDialog&OK&OK Q3FileDialog&OK&OK QErrorMessage &Nein&No Q3FileDialog &Nein&NoQDialogButtonBoxAltAlt QShortcutF%1F%1 QShortcutEntfDel QShortcutVerzeichnisDir Q3FileDialogEndeEnd QShortcutEscEsc QShortcut EinfgIns QShortcutTabTab QShortcut AnfangTop QScrollBarXIMXIM QInputContextJaYes QShortcutJaYesQSqlFehler: Fatal Error: QErrorMessage&Ja&Yes Q3FileDialog&Ja&YesQDialogButtonBox ZurckBack Q3FileDialog ZurckBack QFileDialog ZurckBack QShortcut AnrufCall QShortcut&AusschneidenCu&t Q3TextEdit&AusschneidenCu&t QLineEdit&AusschneidenCu&t QTextControl DatumDate Q3FileDialogStrgCtrl QShortcutAndockenDock QDockWidget FertigDoneQWizard RunterDown QShortcutBeendenExitQMenuBar DateiFile Q3FileDialog DateiFile QFileDialog DateiFile QPrintDialogUmdrehenFlip QShortcut HilfeHelp Q3TabDialog HilfeHelpQDialogButtonBox HilfeHelp QMessageBox HilfeHelp QShortcut HilfeHelpQWizardPos1HomeQObjectPos1Home QShortcutArtKind QDirModelArtKindQFileSystemModel LinksLeft QShortcutWenigerLessQDoubleSpinBoxWenigerLessQSpinBoxMenMenu QShortcutMetaMeta QShortcutMehrMoreQDoubleSpinBoxMehrMoreQSpinBoxNameNamePPDOptionsModelNameName Q3FileDialogNameName QDirModelNameNameQFileSystemModel ffnenOpen Q3FileDialog ffnenOpen QComboBox ffnenOpenQDialogButtonBox ffnenOpen QFileDialog ffnenOpenQMenu ffnenOpen QPushButton ffnenOpen QToolButtonBild aufwrtsPgUp QShortcut WiederherstellenRedo QUndoGroup WiederherstellenRedo QUndoStackBeendenQuitQMenuBarBeendenQuitQWizardSpeichernSaveQDialogButtonBoxSpeichernSaveQPrintPropertiesDialog GreSize Q3FileDialog GreSize QDirModel GreSizeQFileSystemModelSortierenSort Q3FileDialogAbbrechenStop QShortcutWahrTrue Q3DataTableWahrTrue QComboBoxTypType Q3FileDialogTypType QDirModelTypTypeQFileSystemModelRckgngigUndo QUndoGroupRckgngigUndo QUndoStack"A6 (105 x 148 mm)A6 (105 x 148 mm) QPrintDialog\Es konnte keine SSL-Sitzung erzeugt werden: %1Error creating SSL session: %1 QSslSocket\Es konnte keine SSL-Sitzung erzeugt werden, %1Error creating SSL session, %1 QSslSocket %1 GB%1 GBQFileSystemModel %1 KB%1 KBQFileSystemModel %1 MB%1 MBQFileSystemModel %1 TB%1 TBQFileSystemModel&Kopieren&Copy Q3TextEdit&Kopieren&Copy QLineEdit&Kopieren&Copy QTextControl&Schriftart&Font QFontDialog &Hilfe&HelpQ3Wizard &Hilfe&HelpQWizardVer&schieben&Move QMdiSubWindowVer&schieben&Move QWorkspace&Weiter&NextQWizard&ffnen&Open Q3FileDialog&ffnen&Open QFileDialog &Rot:&Red: QColorDialog"Wieder&herstellen&Redo Q3TextEdit"Wieder&herstellen&Redo QLineEdit"Wieder&herstellen&Redo QTextControl&Sttigung:&Sat: QColorDialogS&peichern&Save Q3FileDialogS&peichern&Save QFileDialog &Gre&Size QFontDialogGre &ndern&Size QMdiSubWindow&Gre ndern&Size QWorkspace&Rckgngig&Undo Q3TextEdit&Rckgngig&Undo QLineEdit&Rckgngig&Undo QTextControl&Helligkeit:&Val: QColorDialogbEs wurde die ungeparste Entity '%1' referenziert."Reference to unparsed entity '%1'. QXmlStreamFLegal (8,5 x 14 Zoll, 216 x 356 mm)%Legal (8.5 x 14 inches, 216 x 356 mm) QPrintDialogAbbrechenAbortQDialogButtonBoxInfoAboutQMenuBarAnwendenApply Q3TabDialogAnwendenApplyQDialogButtonBoxAnkreuzenCheck QCheckBoxAnkreuzenCheck QRadioButtonLschenClear Q3TextEditSchlieenClose Q3TitleBarSchlieenClose QComboBoxSchlieenCloseQDialogButtonBoxSchlieenClose QDockWidgetSchlieenClose QMdiSubWindowSchlieenCloseQMenuSchlieenClose QWorkspaceLaufwerkDrive QFileDialog EnterEnter QShortcut FalschFalse Q3DataTable FalschFalse QComboBox FehlerError Q3FileDialogHerauslsenFloat QDockWidgetFarb&ton:Hu&e: QColorDialogMinimierenMinimize Q3TitleBarMinimierenMinimize QMdiSubWindowMinimierenMinimize QWorkspace@Konnte nicht geffnet werden: %1Could not open %1 Q3LocalFsr'%1' ist kein gltiges Zeichen in einer public-id-Angabe./Unexpected character '%1' in public id literal. QXmlStream QDialQDialQDialAlles drucken Print all QPrintDialog ffnenOpen  Q3FileDialog PausePause QShortcutSonstigesOther QPrintDialogDrckenPress QToolButtonDruckenPrint QPrintDialog DruckPrint QShortcutZurcksetzenResetQDialogButtonBoxWiederholenRetryQDialogButtonBox RechtsRight QShortcutEinrichtenSetupQMenuBarUmschaltShift QShortcutAnzeigen Show  QFileDialog Gre:Size: QPrintDialogLeertasteSpace QShortcutfDas Zeitlimit fr die Operation wurde berschrittenNetwork operation timed outQNativeSocketEngineWertValuePPDOptionsModelBUngltige Namensraum-Deklaration.Illegal namespace declaration. QXmlStreamhDer entfernte Rechner hat die Verbindung geschlossen%The remote host closed the connectionQNativeSocketEngineDirekthilfe What's This?QDialogDirekthilfe What's This?QWhatsThisActionpDas Protokoll `%1' untersttzt nicht das Laden von Files0The protocol `%1' does not support getting files Q3UrlOperatorzDer Inhalt des Verzeichnisses kann nicht angezeigt werden: %1Listing directory failed: %1QFtp

About Qt

%1

Qt is a C++ toolkit for cross-platform application development.

Qt provides single-source portability across MS Windows, Mac OS X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qtopia Core.

Qt is a Trolltech product. See www.trolltech.com/qt/ for more information.

 QMessageBox\Konnte Datei oder Verzeichnis nicht lschen %1%Could not remove file or directory %1 Q3LocalFs VoreinstellungenRestore DefaultsQDialogButtonBoxSchreiben: %1 Write: %1 Q3FileDialogAufzeichnen Media Record QShortcut"B6 (125 x 176 mm)B6 (125 x 176 mm) QPrintDialogDie Transaktion konnte nicht durchgefhrt werden (Operation 'commit' fehlgeschlagen)Unable to commit transaction QDB2DriverDie Transaktion konnte nicht durchgefhrt werden (Operation 'commit' fehlgeschlagen)Unable to commit transaction QIBaseDriverDie Transaktion konnte nicht durchgefhrt werden (Operation 'commit' fehlgeschlagen)Unable to commit transaction QIBaseResultDie Transaktion konnte nicht durchgefhrt werden (Operation 'commit' fehlgeschlagen)Unable to commit transaction QMYSQLDriverDie Transaktion konnte nicht durchgefhrt werden (Operation 'commit' fehlgeschlagen)Unable to commit transaction QODBCDriverDie Transaktion konnte nicht durchgefhrt werden (Operation 'commit' fehlgeschlagen)Unable to commit transactionQSQLite2DriverDie Transaktion konnte nicht durchgefhrt werden (Operation 'commit' fehlgeschlagen)Unable to commit transaction QSQLiteDriverHRechner konnte nicht gefunden werdenHost not foundQAbstractSocketHRechner konnte nicht gefunden werdenHost not foundQHostInfoAgent8Ungltiger Socket-DeskriptorInvalid socket descriptorQNativeSocketEngine$Bildschirm drucken Print Screen QShortcut8Eigene Farben &definieren >>&Define Custom Colors >> QColorDialogPapierquelle: Paper source: QPrintDialogVOperation unmap fehlgeschlagen fr '%1': %2Could not unmap '%1': %2QLibraryB8 (62 x 88 mm)B8 (62 x 88 mm) QPrintDialogCOM-&Objekt: COM &Object: QAxSelect~nicht-analysierte Entity-Referenz im falschen Kontext verwendet*unparsed entity reference in wrong contextQXmlA8 (52 x 74 mm)A8 (52 x 74 mm) QPrintDialogTDer Zielrechner kann nicht erreicht werdenHost unreachableQNativeSocketEngineB9 (44 x 62 mm)B9 (44 x 62 mm) QPrintDialogHDas Protokoll wird nicht untersttztProtocol type not supportedQNativeSocketEngine<b>Der Name "%1" kann nicht verwendet werden.</b><p>Versuchen Sie, die Sonderzeichen zu entfernen oder einen krzeren Namen zu verwenden.oThe name "%1" can not be used.

Try using another name, with fewer characters or no punctuations marks.QFileSystemModelT'autocommit' konnte nicht aktiviert werdenUnable to enable autocommit QODBCDriverA9 (37 x 52 mm)A9 (37 x 52 mm) QPrintDialog*Nach &Gre sortieren Sort by &Size Q3FileDialog&B0 (1000 x 1414 mm)B0 (1000 x 1414 mm) QPrintDialog*Nach &Datum sortieren Sort by &Date Q3FileDialog(Nach &Name sortieren Sort by &Name Q3FileDialogVErstellen des Verzeichnises schlug fehl: %1Creating directory failed: %1QFtpJKonnte Verzeichnis nicht erstellen %1Could not create directory %1 Q3LocalFs'%1' ist schreibgeschtzt. Mchten sie die Datei trotzdem lschen?9'%1' is write protected. Do you want to delete it anyway? QFileDialog&Neues Verzeichnis 1 New Folder 1 Q3FileDialogTDer Datensatz konnte nicht abgeholt werdenUnable to fetch row QSQLiteResultDAktiviert das Programmhauptfenster#Activates the program's main window QApplication*Details einblenden...Show Details... QMessageBox"A5 (148 x 210 mm)A5 (148 x 210 mm) QPrintDialog,Tabloid (279 x 432 mm)Tabloid (279 x 432 mm) QPrintDialogHRLE Start of right-to-left embedding$RLE Start of right-to-left embeddingQUnicodeControlCharacterMenu.Im &Vordergrund bleiben Stay on &Top QMdiSubWindow.Im &Vordergrund bleiben Stay on &Top QWorkspaceFDiese Meldung noch einmal an&zeigen&Show this message again QErrorMessage.Ungltiges XML-Zeichen.Invalid XML character. QXmlStream8falsche Syntax fr Lookaheadbad lookahead syntaxQRegExprin der DTD sind keine externen Entity-Referenzen erlaubt ;external parsed general entity reference not allowed in DTDQXml B10 (31 x 44 mm)B10 (31 x 44 mm) QPrintDialog,Windows-EingabemethodeWindows input method QInputContextQLibrary::resolve_sys: Das Symbol "%1" ist in %2 nicht definiert (%3)7QLibrary::resolve_sys: Symbol "%1" undefined in %2 (%3)QLibraryJDer BLOB konnte nicht geffnet werdenUnable to open BLOB QIBaseResultLDie Allokation des Befehls schlug fehlUnable to alloc statement QOCIResultXfalscher Wert fr die Standalone-Deklaration&wrong value for standalone declarationQXml&Dekrementieren Step &downQAbstractSpinBox Keine Verbindung Not connectedQFtpHhen - Treble Down QShortcut|Das Datagram konnte nicht gesendet werden, weil es zu gro istDatagram was too large to sendQNativeSocketEngine\Verbindung fr die Daten Verbindung verweigert&Connection refused for data connectionQFtp$XIM-EingabemethodeXIM input method QInputContextfehlende Encoding-Deklaration oder Standalone-Deklaration beim Parsen der XML-DeklarationYencoding declaration or standalone declaration expected while reading the XML declarationQXml"B2 (500 x 707 mm)B2 (500 x 707 mm) QPrintDialogdas Verzeichnis the directory Q3FileDialogRDie Variable konnte nicht gebunden werdenUnable to bind variable QDB2ResultRDie Variable konnte nicht gebunden werdenUnable to bind variable QODBCResult@Es wurden Zeichendaten erwartet.Expected character data. QXmlStreamDatei&typ: File &type: Q3FileDialogDatei&name: File &name: Q3FileDialogDatei&name: File &name: QFileDialogDer Wert fr das 'Standalone'-Attribut kann nur 'yes' oder 'no' sein."Standalone accepts only yes or no. QXmlStreamvDie Datei oder das Verzeichnis konnte nicht gefunden werdenNo such file or directory QIODeviceSchl&ieen&Close QMdiSubWindowSchl&ieen&Close QWorkspace"PPD-EigenschaftenPPD PropertiesQPrintPropertiesDialog2Anmeldung schlug fehl: %1Login failed: %1QFtpEinf&gen&Paste Q3TextEditEinf&gen&Paste QLineEditEinf&gen&Paste QTextControl0Eingabemethode auswhlen Select IMQMultiInputContextAuswahl Selection QPrintDialog:Ungltige XML-Versionsangabe.Invalid XML version string. QXmlStream&Nach links scrollen Scroll LeftQTabBar*Rollen-Feststelltaste Scroll Lock QShortcut&Nach unten scrollen Scroll down QScrollBar Hierher scrollen Scroll here QScrollBar&Nach links scrollen Scroll left QScrollBar <leer> QUndoModel%1 lschen Delete %1 Q3FileDialogNHerunterladen der Datei schlug fehl: %1Downloading file failed: %1QFtp"A3 (297 x 420 mm)A3 (297 x 420 mm) QPrintDialogJKann nicht zum nchsten Element gehenUnable to goto next QOCIResultOhne Schlssel kann kein Zertifikat zur Verfgung gestellt werden, %1,Cannot provide a certificate with no key, %1 QSslSocketAuswahl druckenPrint selection QPrintDialogRDer Befehl konnte nicht ausgefhrt werdenUnable to execute statement QDB2ResultRDer Befehl konnte nicht ausgefhrt werdenUnable to execute statement QMYSQLResultRDer Befehl konnte nicht ausgefhrt werdenUnable to execute statement QOCIResultRDer Befehl konnte nicht ausgefhrt werdenUnable to execute statement QODBCResultRDer Befehl konnte nicht ausgefhrt werdenUnable to execute statementQSQLite2ResultRDer Befehl konnte nicht ausgefhrt werdenUnable to execute statement QSQLiteResult%1 - [%2] %1 - [%2] QMdiSubWindow%1 - [%2] %1 - [%2] QWorkspace<Verbindung mit Rechner bestehtConnected to hostQFtp<Verbindung mit Rechner bestehtConnected to hostQHttpAusrichtenLine up Q3MainWindowAusrichtenLine up QScrollBar\Die Daten konnten nicht geschrieben werden: %1Unable to write data: %1 QSslSocket*ZWSP Zero width spaceZWSP Zero width spaceQUnicodeControlCharacterMenubDer Name der Prozessing-Instruktion ist ungltig.$Invalid processing instruction name. QXmlStreamLautstrke - Volume Down QShortcutTon aus Volume Mute QShortcutRStellt ein minimiertes Fenster wieder herPuts a minimized back to normal Q3TitleBarEs wurde versucht, einen IPv6-Socket auf einem System ohne IPv6-Untersttzung zu verwenden=Attempt to use IPv6 socket on a platform with no IPv6 supportQNativeSocketEngine"B4 (250 x 353 mm)B4 (250 x 353 mm) QPrintDialogSchieberegler SliderHandleQDialXEs konnte keine Transaktion gestartet werdenCould not begin transaction QPSQLDriverJDiese Plattform untersttzt kein IPv6#This platform does not support IPv6 QUdpSocketvDie Ergebnisse des Befehls konnten nicht gespeichert werden!Unable to store statement results QMYSQLResultVorherigerMedia Previous QShortcutbDer Namensraum-Prfix '%1' wurde nicht deklariert"Namespace prefix '%1' not declared QXmlStream%1 byte%1 bytesQFileSystemModelnEs trat ein Fehler im Ablauf des SSL-Protokolls auf: %1Error during SSL handshake: %1 QSslSocketStartseite Home Page QShortcutjQLibrary::load_sys: %1 kann nicht geladen werden (%2)'QLibrary::load_sys: Cannot load %1 (%2)QLibraryJDie Entity '%1' ist nicht deklariert.Entity '%1' not declared. QXmlStreamEs kann keine Verbindung aufgebaut werden weil der Treiber die bentigte Funktionalitt nicht vollstndig untersttztCUnable to connect - Driver doesn't support all needed functionality QODBCDriverkein Fehlerno error occurredQRegExpkein Fehlerno error occurredQXmlBFehler beim Parsen einer Referenz&error occurred while parsing referenceQXmlPapierformat Paper format QPrintDialogLautstrke + Volume Up QShortcut~fehlende Standalone-Deklaration beim Parsen der XML DeklarationAstandalone declaration expected while reading the XML declarationQXmlDrucken Print dialog QPrintDialogDie Transaktion konnte nicht rckgngig gemacht werden (Operation 'rollback' fehlgeschlagen)Could not rollback transaction QPSQLDriverpEs konnte keine Beschreibung des Befehls erhalten werdenCould not describe statement QIBaseResult|Die Datei %1 existiert bereits. Soll sie berschrieben werden?/%1 already exists. Do you want to overwrite it? QPrintDialog"A1 (594 x 841 mm)A1 (594 x 841 mm) QPrintDialogFarbauswahl Select color QColorDialogDrucker: Printer info: QPrintDialogjDas lokale Zertifikat konnte nicht geladen werden, %1#Error loading local certificate, %1 QSslSocket~Es konnte keine Beschreibung des Eingabebefehls erhalten werden"Could not describe input statement QIBaseResultt%1 ist kein gltiger Name fr eine Prozessing-Instruktion.-%1 is an invalid processing instruction name. QXmlStreamLDie Allokation des Befehls schlug fehlCould not allocate statement QIBaseResultRZu benutzerdefinierten Farben &hinzufgen&Add to Custom Colors QColorDialogDas Standalone-Pseudoattribut muss dem Encoding unmittelbar folgen.?The standalone pseudo attribute must appear after the encoding. QXmlStream0Verbunden mit Rechner %1Connected to host %1QFtp0Verbunden mit Rechner %1Connected to host %1QHttpMehr...More... Q3ToolBarDas Protokoll `%1' untersttzt nicht das Umbenennen von Dateien oder Verzeichnissen@The protocol `%1' does not support renaming files or directories Q3UrlOperatorMehrfachumschalter fr Eingabemethoden, der das Kontextmen des Text-Widgets verwendetMMultiple input method switcher that uses the context menu of the text widgetsQMultiInputContextPlugin*Eine Zeile nach unten Line down QScrollBarLVerbindung mit Rechner schlug fehl: %1Connecting to host failed: %1QFtpDie Spalte konnte nicht fr den Stapelverarbeitungs-Befehl gebunden werden'Unable to bind column for batch execute QOCIResult Bla&u:Bl&ue: QColorDialogLTRQT_LAYOUT_DIRECTION QApplicationEndeBottom QScrollBarAbbrechenCancel Q3FileDialogAbbrechenCancelQ3ProgressDialogAbbrechenCancel Q3TabDialogAbbrechenCancel QColorDialogAbbrechenCancelQDialogButtonBoxAbbrechenCancel QPrintDialogAbbrechenCancelQProgressDialogAbbrechenCancelQSqlAbbrechenCancelQWizardDurchsuchenBrowse QPrintDialogStart (6) Launch (6) QShortcutStart (7) Launch (7) QShortcutStart (8) Launch (8) QShortcutStart (9) Launch (9) QShortcutStart (2) Launch (2) QShortcutStart (3) Launch (3) QShortcutStart (4) Launch (4) QShortcutStart (5) Launch (5) QShortcutStart (0) Launch (0) QShortcutStart (1) Launch (1) QShortcutStart (F) Launch (F) QShortcutStart (B) Launch (B) QShortcutStart (C) Launch (C) QShortcutStart (D) Launch (D) QShortcutStart (E) Launch (E) QShortcutStart (A) Launch (A) QShortcutNRechner %1 konnte nicht gefunden werdenHost %1 not foundQFtpNRechner %1 konnte nicht gefunden werdenHost %1 not foundQHttpAnwendenCommitQWizardKonfigurationConfigQMenuBar Anzahl ExemplareCopies QPrintDialogLschenDelete Q3DataTableLschenDelete QLineEditLschenDelete QShortcutLschenDeleteQSqlLschenDelete QTextControlQuerformat Landscape QPrintDialog EscapeEscape QShortcutErne&ut ladenR&eload Q3FileDialog"Neues Verzeichnis New Folder Q3FileDialog"Neues Verzeichnis New Folder QFileDialogAuflegenHangup QShortcut4bergeordnetes VerzeichnisParent Directory QFileDialogDas Protokoll `%1' untersttzt nicht das Auflisten von Verzeichnissen6The protocol `%1' does not support listing directories Q3UrlOperator$B1 (707 x 1000 mm)B1 (707 x 1000 mm) QPrintDialog Die Datei konnte nicht gefunden werden. Stellen Sie sicher, dass der Dateiname richtig ist> File not found. Please verify the correct file name was given QFileDialogFHochladen der Datei schlug fehl: %1Uploading file failed: %1QFtpIgnorierenIgnoreQDialogButtonBox$&Neues Verzeichnis &New Folder QFileDialogEinfgenInsert Q3DataTableEinfgenInsert QShortcutEinfgenInsertQSqlvZeigt den Namen des Fensters und enthlt Befehle zum ndernFDisplays the name of the window and contains controls to manipulate it Q3TitleBar(Folio (210 x 330 mm)Folio (210 x 330 mm) QPrintDialogPDer BLOB konnte nicht geschrieben werdenUnable to write BLOB QIBaseResult(unbekannt) (unknown) Q3UrlOperator\Die Ausgabewerte konnten nicht gebunden werdenUnable to bind outvalues QMYSQLResulthDie Datenbankverbindung konnte nicht geffnet werdenUnable to open connection QTDSDriverBass-Boost Bass Boost QShortcut<Umschalter fr EingabemethodenMultiple input method switcherQMultiInputContextPluginXEs konnte keine Transaktion gestartet werdenCould not start transaction QIBaseDriverXEs konnte keine Transaktion gestartet werdenCould not start transaction QIBaseResultBild abwrtsPgDown QShortcutVollbildmodusMakes the window full screen Q3TitleBar$DLE (110 x 220 mm)DLE (110 x 220 mm) QPrintDialogLschenRemove QFileDialog ReturnReturn QShortcutBeispielSample QFontDialog<Initialisierung fehlgeschlagenUnable to initialize QOCIDriver&AufrollenSh&ade QWorkspace SuchenSearch QShortcutAuswhlenSelect QShortcut&Unsortiert &Unsorted Q3FileDialog$C5E (163 x 229 mm)C5E (163 x 229 mm) QPrintDialog"B5 (176 x 250 mm)%B5 (176 x 250 mm, 6.93 x 9.84 inches) QPrintDialog SysReqSysReq QShortcut SystemSystem Q3TitleBarUmschaltenToggle QCheckBox2fehlende linke Begrenzungmissing left delimQRegExp*Zahlen-FeststelltasteNumLock QShortcutAktualisierenUpdate Q3DataTableAktualisierenUpdateQSqlTDer Befehl konnte nicht geschlossen werdenUnable to close statement QIBaseResultSu&chen in: Look &in: Q3FileDialogPUngltige oder leere Schlsselliste (%1)!Invalid or empty cipher list (%1) QSslSocket2Diesen Datensatz lschen?Delete this record?QSqlfIm Inhalt ist die Zeichenfolge ']]>' nicht erlaubt.&Sequence ']]>' not allowed in content. QXmlStreamVDie Nachricht konnte nicht empfangen werdenUnable to receive a messageQNativeSocketEngineV%1 ist kein gltiger Name fr das Encoding.%1 is an invalid encoding name. QXmlStreamMein Computer My Computer QFileDialogMein Computer My ComputerQFileSystemModel8Voransicht des Datei-InhaltsPreview File Contents Q3FileDialogDie erforderlichen Informationen zur Abfrage sind nicht verfgbarCould not get query info QIBaseResultRDas Ergebnis konnte nicht abgeholt werdenUnable to fetch resultsQSQLite2ResultBereich drucken Print range QPrintDialog*Rollen-Feststelltaste ScrollLock QShortcut@erwartet, stattdessen erhalten ' , but got ' QXmlStreamPndern des Verzeichnises schlug fehl: %1Changing directory failed: %1QFtpComputerComputerQFileSystemModelRDie Datenbank kann nicht verwendet werdenUnable to use database QTDSDriver0Schlieen ohne SpeichernClose without SavingQDialogButtonBox>Das Plugin wurde nicht geladen.The plugin was not loaded. QPluginLoader$Zugriff verweigertPermission denied QIODevice$Zugriff verweigertPermission deniedQNativeSocketEngineKontext1Context1 QShortcutKontext2Context2 QShortcutKontext3Context3 QShortcutKontext4Context4 QShortcut WeiterContinueQWizardSuche in:Look in: QFileDialogdkein gltiger Name fr eine Processing-Instruktion'invalid name for processing instructionQXml(Neues Verzeichnis %1 New Folder %1 Q3FileDialog Rechner gefunden Host foundQFtp Rechner gefunden Host foundQHttp6ffnendes Element erwartet.Start tag expected. QXmlStream4Ungltige Zeichenreferenz.Invalid character reference. QXmlStream"Anzahl Exemplare:Number of copies: QPrintDialoglDie Datenbankverbindung konnte nicht geffnet werden 'Unable to open database ' QMYSQLDriverOptionenOptionsQMenuBarBild aufwrtsPage Up QShortcut(Eine Seite nach obenPage up QScrollBar(Eine Seite nach obenPage upQSlider6Die Datei existiert bereits File exists QPrintDialogvIm Attributwert wurde die externe Entity '%1' referenziert.5Reference to external entity '%1' in attribute value. QXmlStream4Konsument lste Fehler auserror triggered by consumerQXml.Mac OS X-EingabemethodeMac OS X input method QInputContextfDie 'select'-Abfrage konnte nicht ausgefhrt werden"Unable to execute select statement QOCIResultHochformatPortrait QPrintDialogPositionPosition QScrollBarPositionPositionQSlider@falsche Syntax fr Zeichenklassebad char class syntaxQRegExpBFehler beim Parsen eines Elements$error occurred while parsing elementQXml*Verbindung verweigertConnection refusedQAbstractSocket*Verbindung verweigertConnection refusedQHttp*Verbindung verweigertConnection refusedQNativeSocketEngineEs wurde  Expected  QXmlStreamffne URLOpen URL QShortcutLEs konnten keine Daten abgeholt werdenUnable to fetch data QMYSQLResultdDer nchste Datensatz konnte nicht abgeholt werdenUnable to fetch next QDB2ResultdDer nchste Datensatz konnte nicht abgeholt werdenUnable to fetch next QODBCResultXDer Befehl konnte nicht initialisiert werdenUnable to prepare statement QDB2ResultXDer Befehl konnte nicht initialisiert werdenUnable to prepare statement QMYSQLResultXDer Befehl konnte nicht initialisiert werdenUnable to prepare statement QOCIResultXDer Befehl konnte nicht initialisiert werdenUnable to prepare statement QODBCResultJDas Feld konnte nicht gefunden werdenCould not find array QIBaseResultEigenschaften Properties QPrintDialog*nderungen speichern? Save edits?QSqlbDer Schreibvorgang konnte nicht ausgefhrt werdenUnable to writeQNativeSocketEngine(unerwartetes Zeichenunexpected characterQXml8Logon-Vorgang fehlgeschlagenUnable to logon QOCIDriverDas Plugin '%1' verwendet eine inkompatible Qt-Bibliothek. (%2.%3.%4) [%5]=The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5]QLibrarybDie Daten des Feldes konnten nicht gelesen werdenCould not get array data QIBaseResultHProxy-Authentifizierung erforderlichProxy authentication requiredQHttpDebug-Ausgabe:Debug Message: QErrorMessageRLschen des Verzeichnises schlug fehl: %1Removing directory failed: %1QFtpXElement-Tags sind nicht richtig geschachtelt tag mismatchQXmlLesen/Schreiben Read-write Q3FileDialogFeststelltaste Caps Lock QShortcutnDie Datenbankverbindung konnte nicht geschlossen werdenError closing database QSQLiteDriverNur Lesen Read-only Q3FileDialogSeitengre: Page size: QPrintDialog,Eine Seite nach rechts Page right QScrollBar,Eine Seite nach rechts Page rightQSliderDruckerPrinter QPrintDialogN&ein zu allem N&o to AllQDialogButtonBoxLdeaktivierte Eigenschaft wurde benutztdisabled feature usedQRegExp(Doppelseitiger DruckDouble side printing QPrintDialog$A0 (841 x 1189 mm)A0 (841 x 1189 mm) QPrintDialog6HTTP-Anfrage fehlgeschlagenHTTP request failedQHttpSchrifts&til Font st&yle QFontDialog2Farbdruck (falls mglich)Print in color if available QPrintDialog>Datei kopieren oder verschiebenCopy or Move a File Q3FileDialog(Ungltiger DateinameInvalid filenameQFileSystemModel direkt verbundenlocally connected QPrintDialogv<qt>Sind Sie sicher, dass Sie %1 "%2" lschen mchten?</qt>1Are you sure you wish to delete %1 "%2"? Q3FileDialog*Ledger (432 x 279 mm)Ledger (432 x 279 mm) QPrintDialog(Ungltiges Dokument.Invalid document. QXmlStreamDie Anzahl der ffnenden Elemente stimmt nicht mit der Anzahl der schlieenden Elemente berein. Opening and ending tag mismatch. QXmlStream*ungltiger Oktal-Wertinvalid octal valueQRegExp"Dateien des Typs:Files of type: QFileDialogSystem RequestSystem Request QShortcuthDie Prfdaten des Plugins '%1' stimmen nicht berein)Plugin verification data mismatch in '%1'QLibraryBKonnte Verzeichnis nicht lesen %1Could not read directory %1 Q3LocalFszDer Stapelverarbeitungs-Befehl konnte nicht ausgefhrt werden!Unable to execute batch statement QOCIResultFeststelltasteCapsLock QShortcutRck-TabBacktab QShortcutX'autocommit' konnte nicht deaktiviert werdenUnable to disable autocommit QODBCDriver Bass +Bass Up QShortcuthDie Datenbankverbindung konnte nicht geffnet werdenError to open databaseQSQLite2DriverWarnung:Warning: QErrorMessagepQLibrary::unload_sys: %1 kann nicht entladen werden (%2)+QLibrary::unload_sys: Cannot unload %1 (%2)QLibrary&SchriftsystemWr&iting System QFontDialogAnpassen... Customize... Q3MainWindowAktualisierenRefresh QShortcut%1 beendenQuit %1QMenuBarAlles speichernSave AllQDialogButtonBox"Wieder&herstellen&Restore QMdiSubWindow"Wieder&herstellen&Restore QWorkspaceZFehler beim Parsen des Inhalts eines Elements$error occurred while parsing contentQXmlFFehler beim Parsen eines Kommentars$error occurred while parsing commentQXmlin einer DTD ist keine interne allgemeine Entity-Referenz erlaubt4internal general entity reference not allowed in DTDQXmlMaximierenMaximize Q3TitleBarLEs konnte keine Abfrage erzeugt werdenUnable to create query QPSQLResult$Verzeichnis suchenFind Directory Q3FileDialog$Verzeichnis suchenFind Directory QFileDialogAttribute Attributes Q3FileDialogZDer Datensatz %1 konnte nicht abgeholt werdenUnable to fetch record %1 QDB2ResultXDas Ergebnis konnte nicht gespeichert werdenUnable to store result QMYSQLResult*Unbekannter AdresstypUnknown address typeQHostInfoAgent^Auf diesem Port hrt bereits ein anderer Socket4Another socket is already listening on the same portQNativeSocketEngineJDer Wert konnte nicht gebunden werdenUnable to bind value QMYSQLResultJDer Wert konnte nicht gebunden werdenUnable to bind value QOCIResult8&Versteckte Dateien anzeigenShow &hidden files Q3FileDialog8&Versteckte Dateien anzeigenShow &hidden files QFileDialogTDie Nachricht konnte nicht gesendet werdenUnable to send a messageQNativeSocketEngineDie Zertifizierung des ffentlichen Schlssels durch den privaten Schlssel schlug fehl, %1/Private key does not certificate public key, %1 QSslSocketZSind Sie sicher, dass Sie %1 lschen mchten?!Are sure you want to delete '%1'? QFileDialog@Unicode-Kontrollzeichen einfgen Insert Unicode control characterQUnicodeControlCharacterMenu$Nach oben scrollen Scroll up QScrollBarDas Protokoll `%1' untersttzt nicht das Lschen von Dateien oder Verzeichnissen@The protocol `%1' does not support removing files or directories Q3UrlOperatorber QtAbout QtQMenuBarber QtAbout Qt QMessageBoxber %1About %1QMenuBarpEs wurde Inhalt mit einer ungltigen Kodierung gefunden.(Encountered incorrectly encoded content. QXmlStream\Die angegebene Adresse ist bereits in Gebrauch#The bound address is already in useQNativeSocketEngineSpeichern unterSave As Q3FileDialogSpeichern unterSave As QFileDialoghDie XML-Deklaration enthlt ein ungltiges Attribut.%Invalid attribute in XML declaration. QXmlStreamAlias: %1 Aliases: %1 QPrintDialog%1 Das Verzeichnis konnte nicht gefunden werden. Stellen Sie sicher, dass der Verzeichnisname richtig ist.K%1 Directory not found. Please verify the correct directory name was given. QFileDialoghDas Zeitlimit fr die Verbindung wurde berschrittenConnection timed outQNativeSocketEngineNetzwerkfehler Network errorQNativeSocketEngineTDie Parameter konnte nicht gebunden werdenUnable to bind parameters QSQLiteResultGesperrt Inaccessible Q3FileDialogRDer Befehl konnte nicht ausgefhrt werdenUnable to execute query QIBaseResultTDie Abfrage konnte nicht ausgefhrt werdenUnable to execute query QMYSQLResultEinstellungenSettingQMenuBarXEnthlt Befehle zum ndern der Fenstergre *Contains commands to manipulate the window Q3TitleBarFLRO Start of left-to-right override#LRO Start of left-to-right overrideQUnicodeControlCharacterMenuHLRE Start of left-to-right embedding$LRE Start of left-to-right embeddingQUnicodeControlCharacterMenu%1 Datei konnte nicht gefunden werden. berprfen Sie Pfad und Dateinamen.+%1 File not found. Check path and filename. Q3FileDialogStart Mail Launch Mail QShortcut<Redefinition eines Attributes.Attribute redefined. QXmlStreamDie Transaktion konnte nicht durchgefhrt werden (Operation 'commit' fehlgeschlagen)Could not commit transaction QPSQLDriver In Datei druckenPrint To File ... QPrintDialogRcktaste Backspace QShortcut rekursive Entityrecursive entitiesQXml.Das Plugin '%1' verwendet eine inkompatible Qt-Bibliothek. (Im Debug- und Release-Modus erstellte Bibliotheken knnen nicht zusammen verwendet werden.)WThe plugin '%1' uses incompatible Qt library. (Cannot mix debug and release libraries.)QLibrary(Schriftart auswhlen Select Font QFontDialogJUS Common #10 Envelope (105 x 241 mm)%US Common #10 Envelope (105 x 241 mm) QPrintDialog^%1 ist keine gltige Angabe fr eine PUBLIC-Id.#%1 is an invalid PUBLIC identifier. QXmlStream Bass - Bass Down QShortcutDNichtuntersttztes Socket-KommandoUnsupported socket operationQNativeSocketEnginehDie Datenbankverbindung konnte nicht geffnet werdenError opening database QIBaseDriverhDie Datenbankverbindung konnte nicht geffnet werdenError opening database QSQLiteDriverSortierenCollate QPrintDialogBesttigenConfirmQSql Liste List View Q3FileDialog Liste List View QFileDialog8Verbindung mit %1 verweigertConnection refused to host %1QFtphDise Operation wird auf dem Socket nicht untersttztSocket operation unsupported QTcpServer>mehrere Dokumenttypdefinitionen&more than one document type definitionQXmlSpezialattributSpecial Q3FileDialogBOperation von Benutzer angehaltenOperation stopped by the userQ3NetworkProtocol<Authentifizierung erforderlichAuthentication requiredQHttp<Authentifizierung erforderlichAuthentication requiredQHttpSocketEnginehOperation kann nur auf einen Socket angewandt werdenOperation on non-socketQNativeSocketEngineVDer Befehl konnte nicht initalisiert werdenCould not prepare statement QIBaseResultxDas Protokoll `%1' untersttzt nicht das Speichern von Files0The protocol `%1' does not support putting files Q3UrlOperatorNur Schreiben Write-only Q3FileDialog&Abbrechen&CancelQ3Wizard&Abbrechen&Cancel QAxSelectdie Verknpfung the symlink Q3FileDialogXDer Befehl konnte nicht zurckgesetzt werdenUnable to reset statement QMYSQLResultXDer Befehl konnte nicht zurckgesetzt werdenUnable to reset statement QSQLiteResult&Auswhlen&Choose QFileDialogStandbyStandby QShortcut&Inkrementieren&Step upQAbstractSpinBox&Lschen&Delete Q3FileDialog&Lschen&Delete QFileDialogAktivierenActivate QApplication&Unterstrichen &Underline QFontDialogAb&schlieen&FinishQ3WizardAb&schlieen&FinishQWizard2Verbindung mit %1 beendetConnection to %1 closedQFtp2Verbindung mit %1 beendetConnection to %1 closedQHttpBfalsche Syntax fr Wiederholungenbad repetition syntaxQRegExp &Grn:&Green: QColorDialog Alle Dateien (*) All Files (*) Q3FileDialog Alle Dateien (*) All Files (*) QFileDialog`Das nchste Element konnte nicht abgeholt werdenCould not fetch next item QIBaseResultVerzeichnisse Directories Q3FileDialogVerzeichnisse Directories QFileDialogBLschen der Datei schlug fehl: %1Removing file failed: %1QFtpVerwerfenDiscardQDialogButtonBox8Verknpfung mit SpezialdateiSymlink to Special Q3FileDialoglDer Broadcast-Socket konnte nicht initialisiert werden%Unable to initialize broadcast socketQNativeSocketEngineDie Anwendung '%1' bentigt Qt %2; es wurde aber Qt %3 gefunden.,Executable '%1' requires Qt %2, found Qt %3. QApplicationnEs konnte keine SSL-Kontextstruktur erzeugt werden (%1)Error creating SSL context (%1) QSslSocket4Whlen Sie ein VerzeichnisSelect a Directory Q3FileDialog&Weiter >&Next >Q3Wizard&Weiter >&Next >QWizardJa zu &allem Yes to &AllQDialogButtonBoxZEs ist keine Information zum Befehl verfgbarCould not get statement info QIBaseResultbKein freier Speicherplatz auf dem Gert vorhandenNo space left on device QIODeviceT'autocommit' konnte nicht aktiviert werdenUnable to set autocommit QDB2Driver$Alle Dateien (*.*)All Files (*.*) Q3FileDialog`fehlende Version beim Parsen der XML-Deklaration2version expected while reading the XML declarationQXml Wiederherstellen Restore up Q3TitleBarLesen: %1Read: %1 Q3FileDialogTachometer SpeedoMeterQDial|

This program uses Qt Open Source Edition version %1.

Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.

Please see www.trolltech.com/company/model/ for an overview of Qt licensing.

 QMessageBox&Umbenennen&Rename Q3FileDialog&Umbenennen&Rename QFileDialog &Alles auswhlen &Select AllQAbstractSpinBoxBKonnte Verzeichnis nicht lschen.Could not delete directory. QFileDialogHhen + Treble Up QShortcutRKonnte nicht umbenannt werden: %1 nach %2Could not rename %1 to %2 Q3LocalFs"A4 (210 x 297 mm)%A4 (210 x 297 mm, 8.26 x 11.7 inches) QPrintDialogAlles auswhlen Select All Q3TextEditAlles auswhlen Select All QLineEditAlles auswhlen Select All QTextControlVerzeichnis: Directory: Q3FileDialogVerzeichnis: Directory: QFileDialogZberzhliger Inhalt nach Ende des Dokumentes.!Extra content at end of document. QXmlStream(QODBCResult::reset: 'SQL_CURSOR_STATIC' konnte nicht als Attribut des Befehls gesetzt werden. Bitte prfen Sie die Konfiguration Ihres ODBC-TreibersyQODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration QODBCResult(Nach rechts scrollen Scroll RightQTabBar(Schliet das FensterCloses the window Q3TitleBarDefaultsDefaults Q3TabDialogVDie Datei '%1' ist kein gltiges Qt-Plugin.'The file '%1' is not a valid Qt plugin.QLibraryEffekteEffects QFontDialog Durch&gestrichen Stri&keout QFontDialognDie dynamische Bibliothek konnte nicht gefunden werden.!The shared library was not found.QLibrary(Nach rechts scrollen Scroll right QScrollBarnDer Inhalt (chunked body) der HTTP-Antwort ist ungltigInvalid HTTP chunked bodyQHttpRStellt ein maximiertes Fenster wieder her&Puts a maximized window back to normal Q3TitleBar*Zahlen-FeststelltasteNum Lock QShortcut&Rechner %1 gefunden Host %1 foundQFtp&Rechner %1 gefunden Host %1 foundQHttp*Zahlen-Feststelltaste Number Lock QShortcut,Ungltige LngenangabeWrong content lengthQHttpGrundfar&ben &Basic colors QColorDialog^ein Buchstabe ist an dieser Stelle erforderlichletter is expectedQXml$Unbekannter Fehler Unknown errorQFtp$Unbekannter Fehler Unknown error QHostInfo$Unbekannter Fehler Unknown errorQHostInfoAgent$Unbekannter Fehler Unknown errorQHttp$Unbekannter Fehler Unknown error QIODevice$Unbekannter Fehler Unknown errorQLibrary$Unbekannter Fehler Unknown errorQNativeSocketEngine$Unbekannter Fehler Unknown error QPluginLoader6%1, %2 sind nicht definiert%1, %2 not definedQ3AccelLschenUncheck QCheckBoxUnbekanntUnknown QFileDialogunbekanntunknown QPrintDialog*nderungen verwerfen?Cancel your edits?QSqlSeiten von Pages from QPrintDialog&Herabrollen&Unshade QWorkspace,RLM Right-to-left markRLM Right-to-left markQUnicodeControlCharacterMenu|Die Datei %1 existiert bereits. Soll sie berschrieben werden?-%1 already exists. Do you want to replace it? QFileDialog4&Benutzerdefinierte Farben&Custom colors QColorDialogDie Transaktion konnte nicht rckgngig gemacht werden (Operation 'rollback' fehlgeschlagen)Unable to rollback TransactionQSQLite2DriverDEs konnte kein BLOB erzeugt werdenUnable to create BLOB QIBaseResult6unerwartetes Ende der Dateiunexpected end of fileQXmlREs kann keine Verbindung aufgebaut werdenUnable to connect QDB2DriverREs kann keine Verbindung aufgebaut werdenUnable to connect QMYSQLDriverREs kann keine Verbindung aufgebaut werdenUnable to connect QODBCDriverREs kann keine Verbindung aufgebaut werdenUnable to connect QPSQLDriverN<qt>Soll sie berschrieben werden?</qt>%Do you want to overwrite it? QPrintDialogHDer BLOB konnte nicht gelesen werdenUnable to read BLOB QIBaseResult`Der erste Datensatz konnte nicht abgeholt werdenUnable to fetch first QDB2ResultNExecutive (7,5 x 10 Zoll, 191 x 254 mm))Executive (7.5 x 10 inches, 191 x 254 mm) QPrintDialog|Der nichtblockierende Socket konnte nicht initialisiert werden(Unable to initialize non-blocking socketQNativeSocketEngine<PDF Pop directional formattingPDF Pop directional formattingQUnicodeControlCharacterMenuDie Transaktion konnte nicht rckgngig gemacht werden (Operation 'rollback' fehlgeschlagen)Unable to rollback transaction QDB2DriverDie Transaktion konnte nicht rckgngig gemacht werden (Operation 'rollback' fehlgeschlagen)Unable to rollback transaction QIBaseDriverDie Transaktion konnte nicht rckgngig gemacht werden (Operation 'rollback' fehlgeschlagen)Unable to rollback transaction QMYSQLDriverDie Transaktion konnte nicht rckgngig gemacht werden (Operation 'rollback' fehlgeschlagen)Unable to rollback transaction QODBCDriverDie Transaktion konnte nicht rckgngig gemacht werden (Operation 'rollback' fehlgeschlagen)Unable to rollback transaction QSQLiteDriver2Die Adresse ist geschtztThe address is protectedQNativeSocketEngine*Minimiert das FensterMoves the window out of the way Q3TitleBarEinstellungen PreferenceQMenuBar(Ungltiger XML-Name.Invalid XML name. QXmlStreamEinstellungen PreferencesQMenuBarAusfhrenExecuteQMenuFKonnte nicht geschrieben werden: %1Could not write %1 Q3LocalFs.internes Limit erreichtmet internal limitQRegExpDBeim Lesen trat ein Fehler auf: %1Error while reading: %1 QSslSocketTDer Kopfteil der HTTP-Antwort ist ungltigInvalid HTTP response headerQHttp2ActiveX-Element auswhlenSelect ActiveX Control QAxSelectDie Socks5-Verbindung zu einen Socks-Server hat das Zeitlimit berschritten/Socks5 timeout error connecting to socks serverQSocks5SocketEngineA&lphakanal:A&lpha channel: QColorDialogin einem Attribut-Wert sind keine externen Entity-Referenzen erlaubtGexternal parsed general entity reference not allowed in attribute valueQXml,&Link-Adresse kopierenCopy &Link Location QTextControlM&inimieren Mi&nimize QMdiSubWindowM&inimieren Mi&nimize QWorkspace,Umgekehrte ReihenfolgePrint last page first QPrintDialogLinker Rand Left edge QScrollBarHLetter (8,5 x 11 Zoll, 216 x 279 mm)&Letter (8.5 x 11 inches, 216 x 279 mm) QPrintDialogFavoriten Favorites QShortcutVorwrtsForward QFileDialogVorwrtsForward QShortcut>Vorzeitiges Ende des Dokuments.Premature end of document. QXmlStreamBild abwrts Page Down QShortcutjDer private Schlssel konnte nicht geladen werden, %1Error loading private key, %1 QSslSocket*Eine Seite nach unten Page down QScrollBar*Eine Seite nach unten Page downQSlider*Eine Seite nach links Page left QScrollBar*Eine Seite nach links Page leftQSliderDie XML-Deklaration befindet sich nicht am Anfang des Dokuments.)XML declaration not at start of document. QXmlStream$Verbindung beendetConnection closedQFtp$Verbindung beendetConnection closedQHttp*Details ausblenden...Hide Details... QMessageBoxDas Plugin '%1' verwendet eine inkompatible Qt-Bibliothek. Erforderlicher build-spezifischer Schlssel "%2", erhalten "%3"OThe plugin '%1' uses incompatible Qt library. Expected build key "%2", got "%3"QLibrary4ZWNJ Zero width non-joinerZWNJ Zero width non-joinerQUnicodeControlCharacterMenuXEs wurde eine rekursive Entity festgestellt.Recursive entity detected. QXmlStream,Ein Verzeichnis zurckOne directory up Q3FileDialogRDiese XML-Version wird nicht untersttzt.Unsupported XML version. QXmlStream@Voransicht der Datei-InformationPreview File Info Q3FileDialogMa&ximieren Ma&ximize QMdiSubWindowMa&ximieren Ma&ximize QWorkspace Wiederherstellen Restore Down QMdiSubWindow Wiederherstellen Restore Down QWorkspace\Mehrdeutige %1 knnen nicht verarbeitet werdenAmbiguous %1 not handledQ3Accel Wiederherstellen Restore down Q3TitleBarPDer Name des XML-Encodings ist ungltig.Invalid XML encoding name. QXmlStreamNicht verbundenSocket is not connectedQAbstractSocket ZurckGo BackQWizardfDas Zeitlimit fr die Operation wurde berschrittenSocket operation timed outQAbstractSocket< &Zurck< &BackQ3Wizard< &Zurck< &BackQWizardBDas Netzwerk ist nicht erreichbarNetwork unreachableQNativeSocketEngineTOperation mmap fehlgeschlagen fr '%1': %2Could not mmap '%1': %2QLibrarylFr die Verbindung wurde kein Server-Rechner angegebenNo server set to connect toQHttpFRLO Start of right-to-left override#RLO Start of right-to-left overrideQUnicodeControlCharacterMenuhFehler in der Text-Deklaration einer externen Entity3error in the text declaration of an external entityQXmlNicht speichern Don't SaveQDialogButtonBox8Ungltig an dieser Stelle '  Unexpected ' QXmlStreamdie Dateithe file Q3FileDialog"unerwartetes Endeunexpected endQRegExphDer Server hat die Verbindung unerwartet geschlossen%Server closed connection unexpectedlyQHttp In Datei drucken Print to file QPrintDialog2Zu viele Dateien geffnetToo many open files QIODevice%1 ist ein Verzeichnis. Bitte whlen Sie einen anderen Dateinamen.7%1 is a directory. Please choose a different file name. QPrintDialogRDas Protokoll `%1' wird nicht untersttzt"The protocol `%1' is not supported Q3UrlOperator*ZWJ Zero width joinerZWJ Zero width joinerQUnicodeControlCharacterMenu>Die Adresse ist nicht verfgbarThe address is not availableQNativeSocketEngineDie Datei %1 ist schreibgeschtzt. Bitte whlen Sie einen anderen Dateinamen.=File %1 is not writable. Please choose a different file name. QPrintDialog"B3 (353 x 500 mm)B3 (353 x 500 mm) QPrintDialog,Neuen Ordner erstellenCreate New Folder Q3FileDialog,Neuen Ordner erstellenCreate New Folder QFileDialog.Ungltiger Entity-Wert.Invalid entity value. QXmlStreamFDie Anzahl der Parameter ist falschParameter count mismatch QSQLiteResult*Verknpfung mit DateiSymlink to File Q3FileDialognderungsdatum Date Modified QDirModelnderungsdatum Date ModifiedQFileSystemModel,LRM Left-to-right markLRM Left-to-right markQUnicodeControlCharacterMenuWiedergabe Media Play QShortcut Stopp Media Stop QShortcut2Keine Resourcen verfgbarOut of resourcesQNativeSocketEngineNchster Media Next QShortcut Das Protokoll `%1' untersttzt nicht das Kopieren oder Verschieben von Dateien oder VerzeichnissenIThe protocol `%1' does not support copying or moving files or directories Q3UrlOperator6Verknpfung mit VerzeichnisSymlink to Directory Q3FileDialog2Anfrage wurde abgebrochenRequest abortedQHttpXFehler beim Parsen der Dokumenttypdefinition5error occurred while parsing document type definitionQXml^<p>Dieses Programm verwendet Qt-Version %1.</p>'

This program uses Qt version %1.

 QMessageBoxRechter Rand Right edge QScrollBarDas Protokoll `%1' untersttzt nicht das Anlegen neuer Verzeichnisse;The protocol `%1' does not support creating new directories Q3UrlOperator$Start Media Player Launch Media QShortcut A7 (74 x 105 mm)A7 (74 x 105 mm) QPrintDialogLDas Encoding %1 wird nicht untersttztEncoding %1 is unsupported QXmlStreamxEine Parameter-Entity-Deklaration darf kein NDATA enthalten.&NDATA in parameter entity declaration. QXmlStreamAusfhrlich Detail View Q3FileDialogDetails Detail View QFileDialog%1 Die Datei konnte nicht gefunden werden. Stellen Sie sicher, dass der Dateiname richtig ist.A%1 File not found. Please verify the correct file name was given. QFileDialog"A2 (420 x 594 mm)A2 (420 x 594 mm) QPrintDialogFormat: Orientation: QPrintDialog B7 (88 x 125 mm)B7 (88 x 125 mm) QPrintDialog<Qt Bibliothek ist inkompatibelIncompatible Qt Library Error QApplicationXEs konnte keine Transaktion gestartet werdenUnable to begin transaction QMYSQLDriverXEs konnte keine Transaktion gestartet werdenUnable to begin transactionQSQLite2DriverXEs konnte keine Transaktion gestartet werdenUnable to begin transaction QSQLiteDrivertipp10-2.1.0/languages/tipp10_de.qm000066400000000000000000002537631274324046000167430ustar00rootroot000000000000002>, - j F"ޮ$2ɹ$$FB%P+~, m,Q-1I^-).}2YN/42YN/Dc/Dc0W$0FW$0yW$0[F0g1'mN1fr2A445`555616d66671n)7d9f9:S:°:°:J.;//=60N=޲>>?e?@0NAWAB CrѾD ܮDo/ADH GW G[ZH8b?HzI INJBK#kM0yNh@$N#OzOkOPP@#PzP!zQ3^S>:T0?`TGxUNmVOFWUWfXX)^Q XdZDdZze>Zj;\B|u]]þ_Z_*`P/e```Maңa(jb׎c]dR g Yuh$$3>it,k<kMQkT+kZn'coS|Rq|Rq|Rr4|Rro|Rr5rvivvz\z zJ@@rq涞 %3Z^**.|P8J=>NLM4TևV0Y:b07kOxUUANՓcϞS@ǯ> ϊϑn||p. rbZ/>YGmH0zJc2+$x9jÁ";\5K@\np>ݮtg)o Z ͡'(jW>uBZe>0=HHų8 !]! $,. &~ +j~ +R 4 >n >n5 GFy Gf Gf I^Za Y[ Y[V Y[ }* 9>Q 9> 9> 9> 9>O 9> 9> 9> 9>P 9> ~ > ! X> L| O z ; d :a í  %~] T .h dƯ d ,"ǰ /J Dʥ G; Yv lJf mΚ xy xy? y w y T ŀF T| %  N ;Q ŕ6 ɅKԏ ɦ ʀS= ̚q 8ի v4 ג *Lz /1 6G#١ = A-ܼ FF4 FHn݂ G G I c QL Q}. Y4\ $- P 8M ' 1 `o > x !   B V V V gG   &/ 4~ 8m' Bg& EpJk R ]؛+ f> g wt < C5 , ʽ& p . x  " $ -'N 6 ?* AJ T&, \ ~n ~^ v2 | N k X > '  v    U   8   S ٷ 97 z ?x#f(-N)"=ABBK3_MWbs˞ b:6=!s"+"є]#1NJ#u4$ܳ%-}%}%}&D+&i&i'*i'1^'(# ^($), N+,,2-!5t.k?/u?/D0IYN0rM|~0a*5dS6wdS67$37fЮ78p8p99]95;k<Z.>m>3?tx?^BRB{iH.. LessonResult::TrainingWidget % % CharSqlModel % % FingerWidget) )  ErrorMessage&Ja&Ja CharTableSql&Ja&Ja DatabasePage&Ja&Ja MainWindow&Ja&JaQObject&Ja&Ja StartWidget&Ja&JaTrainingWidget&Ok&Ok LicenseDialog&Ok&OkTxtMessageDialog...... DatabasePageAusAus TrainingPage Uhr Uhr LessonResult Uhr UhrLessonSqlModel Uhr UhrProgressionWidgetAlleAlle LessonResultAlleAlle StartWidget&Demo starten &Demo starten LicenseDialogInfoInfo MainWindowHier knnen Sie festlegen, ob ein Hinweis zu den Dateitypen vor dem Im- und Export angezeigt werden solliHier koennen Sie festlegen, ob ein Hinweis zu den Dateitypen vor dem Im- und Export angezeigt werden soll OtherPagetHier knnen Sie die Schriftfarbe der Laufschrift verndernDie absolvierten Lektionen wurden erfolgreich zurueckgesetzt!  DatabasePageDie Datei konnte leider nicht exportiert werden. Bitte berprfen Sie, ob es sich um eine beschreibbare Textdatei handelt. }Die Datei konnte leider nicht exportiert werden. Bitte ueberpruefen Sie, ob es sich um eine beschreibbare Textdatei handelt.  ErrorMessageFDas Diktat soll gefhrt werden als:$Das Diktat soll gefuehrt werden als: LessonDialogV6. Einmal mit dem Zehnfingersystem angefangen, solltest Du es tunlichst vermeiden wieder zu Deinem "alten System" zurck zu wechseln (auch wenn es mal schnell gehen muss).6. Einmal mit dem Zehnfingersystem angefangen, solltest Du es tunlichst vermeiden wieder zu Deinem "alten System" zurueck zu wechseln (auch wenn es mal schnell gehen muss).IllustrationDialogvDie Online-Versionsinformation konnte nicht gelesen werden.;Die Online-Versionsinformation konnte nicht gelesen werden. ErrorMessage&Sinnbild einblendenSinnbild einblenden StartWidgetNKeine Tippfehler-Definitonen vorhanden.'Keine Tippfehler-Definitonen vorhanden. ErrorMessageZur visuellen Untersttzung werden die virtuelle Tastatur und Statusinformationen angezeigt\Zur visuellen Unterstuetzung werden die virtuelle Tastatur und Statusinformationen angezeigt StartWidget$Sehr gute LeistungSehr gute LeistungEvaluationWidgetl4. Bleiben Sie whrend des Schreibtrainings entspannt.74. Bleiben Sie waehrend des Schreibtrainings entspannt.IllustrationDialog0X-Achse sortieren nach: X-Achse sortieren nach: ProgressionWidget$Lektion &editierenLektion &editieren StartWidget$Akustisches SignalAkustisches Signal StartWidgetAlle LektionenAlle LektionenLessonTableSqlAlle LektionenAlle LektionenProgressionWidgetHier knnen Sie die Farbe der Markierung fr das aktuelle Zeichen verndernNHier koennen Sie die Farbe der Markierung fuer das aktuelle Zeichen veraendern TrainingPageSoll-Fehler Soll-Fehler CharTableSql$&Schriftart ndern&Schriftart aendern TrainingPage*angezeigt werden sollangezeigt werden soll OtherPage4SQL-Datei herunterladen...SQL-Datei herunterladen... UpdateDialog&Die Datei konnte leider nicht importiert werden, weil sie leer ist. Bitte berprfen Sie, ob es sich um eine lesbare Textdatei mit Inhalt handelt. Die Datei konnte leider nicht importiert werden, weil sie leer ist. Bitte ueberpruefen Sie, ob es sich um eine lesbare Textdatei mit Inhalt handelt.  ErrorMessage befindet sich bereits auf dem aktuellsten Stand. Es stehen derzeit keine Aktualisierungen zur Verfgung.j befindet sich bereits auf dem aktuellsten Stand. Es stehen derzeit keine Aktualisierungen zur Verfuegung. UpdateDialog.Trennlinie links/rechtsTrennlinie anzeigen StartWidget Zurck Zurueck HelpBrowserIst-Fehler Ist-Fehler CharTableSqlXDie Benutzertabelle mit den Fehlerdaten konnte nicht aktualisiert werden, weil kein Zugriff auf die Datenbank mglich ist. Falls dieses Problem erst auftrat, nachem der Schreibtrainer zuvor einige Zeit anstandslos lief, ist voraussichtlich die Datenbank beschdigt worden (z.B. durch einen Absturz des Computers). Um zu berprfen ob die Datenbank beschdigt wurde, knnen Sie die Datenbank-Datei testweise einmal umbenennen und die Software dann neu starten (es sollte dann auomatisch eine neue, leere Datenbank angelegt werden). Den Pfad zur Datenbank "2Die Benutzertabelle mit den Fehlerdaten konnte nicht aktualisiert werden, weil kein Zugriff auf die Datenbank moeglich ist. Falls dieses Problem erst auftrat, nachem der Schreibtrainer zuvor einige Zeit anstandslos lief, ist voraussichtlich die Datenbank beschaedigt worden (z.B. durch einen Absturz des Computers). Um zu ueberpruefen ob die Datenbank beschaedigt wurde, koennen Sie die Datenbank-Datei testweise einmal umbenennen und die Software dann neu starten (es sollte dann auomatisch eine neue, leere Datenbank angelegt werden). Den Pfad zur Datenbank " ErrorMessage (Fehlernummer:  (Fehlernummer:  ErrorMessageHilfestellungenHilfestellungen StartWidgetEs wird die gesamte (freie) Lektion von Anfang bis Ende diktiert@Es wird die gesamte (freie) Lektion von Anfang bis Ende diktiert StartWidget Programmversion Programmversion  MainWindowTemporre Datei konnte nicht erzeugt werden. Das Update wird abgebrochen.JTemporaere Datei konnte nicht erzeugt werden. Das Update wird abgebrochen. ErrorMessagedBitte geben Sie mindestens zwei Zeilen Diktat ein 2Bitte geben Sie mindestens zwei Zeilen Diktat ein  LessonDialog"Diktat blockierenDiktat blockieren LessonResult"Diktat blockierenDiktat blockieren StartWidget A/min A/minProgressionWidget A/min A/min TrainingPage Punkt Punkt LessonResult Punkt PunktLessonSqlModel Punkt PunktProgressionWidgetPrint page Seite drucken HelpBrowserVorkommen: Vorkommen: FingerWidget|Die Datenbank-Versionsinformation konnte nicht gelesen werden.>Die Datenbank-Versionsinformation konnte nicht gelesen werden. ErrorMessaget3. Lege die Oberarme am Krper an und lass die Schultern hngen. Die Unterarme bilden einen rechten Winkel zu den Oberarmen. Lege die Handgelenke nicht ab und lass sie nicht durchhngen.3. Lege die Oberarme am Koerper an und lass die Schultern haengen. Die Unterarme bilden einen rechten Winkel zu den Oberarmen. Lege die Handgelenke nicht ab und lass sie nicht durchhaengen.IllustrationDialog(Kleiner Finger linksKleiner Finger linksQObject0Alle Rechte vorbehalten.Alle Rechte vorbehalten.IllustrationDialog &Datei&Datei MainWindow &Hilfe&Hilfe AbcRainWidget &Hilfe&HilfeDownloadDialog &Hilfe&HilfeEvaluationWidget &Hilfe&Hilfe LessonDialog &Hilfe&Hilfe MainWindow &Hilfe&HilfeSettingsDialog &Hilfe&Hilfe StartWidget &Hilfe&HilfeTrainingWidget &Hilfe&Hilfe UpdateDialog>Hier knnen Sie smtliche gespeicherte Lektionendaten zurcksetzen (die Lektionen werden so in den ursprnglichen Zustand, wie nach der Installation, versetzt)Hier koennen Sie saemtliche gespeicherte Lektionendaten zuruecksetzen (die Lektionen werden so in den urspruenglichen Zustand, wie nach der Installation, versetzt) DatabasePageLektion:  Lektion:  LessonResult`Ein Tastatur-Bitmap konnte nicht geladen werden.0Ein Tastatur-Bitmap konnte nicht geladen werden. ErrorMessage &Pause&Pause AbcRainWidget &Pause&PauseTrainingWidgetLektionLektionLessonTableSqlLektionLektionProgressionWidget@2. Nehmen Sie eine aufrechte Haltung ein und vermeiden Sie es in jedem Fall auf die Tastatur zu sehen. Ihr Blick sollte stets auf den Bildschirm gerichtet sein.2. Nehmen Sie eine aufrechte Haltung ein und vermeiden Sie es in jedem Fall auf die Tastatur zu sehen. Ihr Blick sollte stets auf den Bildschirm gerichtet sein.IllustrationDialogZDas Programmlogo konnte nicht geladen werden.-Das Programmlogo konnte nicht geladen werden. ErrorMessage&Schlieen &Schliessen HelpBrowserDas Update konnte leider nicht durchgefhrt werden. Bitte berprfen Sie Ihre Internetverbindung und die Proxyeinstellung.}Das Update konnte leider nicht durchgefuehrt werden. Bitte ueberpruefen Sie Ihre Internetverbindung und die Proxyeinstellung. ErrorMessage- Hilfetext - Hilfetext LessonResultLektion konnte nicht erstellt werden. SQL-Statement fehlgeschlagen.CLektion konnte nicht erstellt werden. SQL-Statement fehlgeschlagen. ErrorMessage<Leertaste setzt das Spiel fortLeertaste setzt das Spiel fort AbcRainWidgetSchlieen Schliessen UpdateDialogGeben Sie hier an, wie oft pro Minute ein akustisches Signal ausgegeben werden sollSGeben Sie hier an, wie oft pro Minute ein akustisches Signal ausgegeben werden soll TrainingPagelAnalyse-Tabelle kann nicht mit Inhalten gefllt werden7Analyse-Tabelle kann nicht mit Inhalten gefuellt werden ErrorMessagePBitte geben Sie der Lektion einen Namen (Bitte geben Sie der Lektion einen Namen  LessonDialog*Lektion berprfen...Lektion ueberpruefen...DownloadDialog*Version berprfen...Version ueberpruefen... UpdateDialogDie Bewertung der Leistung errechnet sich wie folgt: ((Zeichen - (20 x Fehler)) / Dauer in Minuten) x 0.4 Beachten Sie, dass langsames Tippen ohne Fehler eine bessere Bewertung hervorruft, als schnelles Tippen mit vielen Fehlern!Die Bewertung der Leistung errechnet sich wie folgt: ((Zeichen - (20 x Fehler)) / Dauer in Minuten) x 0.4 Beachten Sie, dass langsames Tippen ohne Fehler eine bessere Bewertung hervorruft, als schnelles Tippen mit vielen Fehlern!LessonTableSqlBitte warten Bitte wartenSettingsDialogSchriftfarbe: Schriftfarbe: TrainingPage>Diktat (mindestens eine Zeile):Diktat (mindestens eine Zeile): LessonDialogBericht druckenBericht drucken LessonResultBei jedem Tippfehler wird das zur Taste entsprechende Sinnbild angezeigtHBei jedem Tippfehler wird das zur Taste entsprechende Sinnbild angezeigt StartWidgetIm Internet:  Im Internet:  MainWindow existiert, wird automatisch eine neue, leere Datenbank erzeugt.@ existiert, wird automatisch eine neue, leere Datenbank erzeugt. DatabasePageHDie Fehlerquote zeigt, welche Schriftzeichen Ihnen am meisten Probleme bereiten. Die Fehlerquote errechnet sich aus dem Wert "Soll-Fehler" und dem Wert "Vorkommen".Die Fehlerquote zeigt, welche Schriftzeichen Ihnen am meisten Probleme bereiten. Die Fehlerquote errechnet sich aus dem Wert "Soll-Fehler" und dem Wert "Vorkommen". CharTableSqlZur visuellen Untersttzung werden die verbleibenden Finger der Grundstellung farbig markiert^Zur visuellen Unterstuetzung werden die verbleibenden Finger der Grundstellung farbig markiert StartWidget4Lektion vorzeitig &beendenLektion vorzeitig &beendenTrainingWidgetA/min und A/min undEvaluationWidget$Mittelfinger linksMittelfinger linksQObject0Betroffener Kopierpfad: Betroffener Kopierpfad: QObject Minuten Minuten LessonResult Minuten Minuten StartWidgetMinutenMinutenEvaluationWidget&&Grundeinstellungen&Grundeinstellungen MainWindowFehlerquote:  Fehlerquote:  LessonResult" knnen Sie den Grundeinstellungen entnehmen. Wenn dieses Problem gleich nach dem ersten Start der Software auftrat, fehlen voraussichtlich die Schreibrechte auf die Datenbank-Datei. Bitte berprfen Sie diese. " koennen Sie den Grundeinstellungen entnehmen. Wenn dieses Problem gleich nach dem ersten Start der Software auftrat, fehlen voraussichtlich die Schreibrechte auf die Datenbank-Datei. Bitte ueberpruefen Sie diese.  ErrorMessage6Schriftzeichen zurcksetzenSchriftzeichen zuruecksetzen CharTableSqlNKurzbeschreibung (maximal 120 Zeichen):'Kurzbeschreibung (maximal 120 Zeichen): LessonDialog- Grundstellung- Grundstellung LessonResult 5. Versuchen Sie mglichst fehlerfrei zu tippen. Es ist deutlich ineffizienter schnell zu tippen, wenn Sie dabei viele Fehler machen.5. Versuchen Sie moeglichst fehlerfrei zu tippen. Es ist deutlich ineffizienter schnell zu tippen, wenn Sie dabei viele Fehler machen.IllustrationDialog"(gesamte Lektion)(gesamte Lektion) StartWidgetBenutzerdaten Benutzerdaten DatabasePagelBitte geben Sie den Speicherort fr eine Textdatei ein7Bitte geben Sie den Speicherort fuer eine Textdatei ein StartWidget6Die Anwendung wird beendet.Die Anwendung wird beendet. ErrorMessageWollen Sie die Lektion wirklich lschen und damit auch alle aufgezeichneten Daten, die im Zusammenhang mit dieser Lektion stehen? Wollen Sie die Lektion wirklich loeschen und damit auch alle aufgezeichneten Daten, die im Zusammenhang mit dieser Lektion stehen?  StartWidgetA/min: A/min:  LessonResultA/min: A/min: TrainingWidgetHinweis: Es knnen nur Textdateien im TXT-Format heruntergeladen werden.Weitere Informationen finden Sie in der Hilfe.Hinweis: Es koennen nur Textdateien im TXT-Format heruntergeladen werden. Weitere Informationen hierzu finden Sie auch in der Hilfe. StartWidget|Hier knnen Sie die Hintergrundfarbe der Laufschrift verndern@Hier koennen Sie die Hintergrundfarbe der Laufschrift veraendern TrainingPage6Leertaste startet das SpielLeertaste startet das Spiel AbcRainWidgetHier knnen Sie die Schriftart der Laufschrift verndern (eine Schriftgre ber 20 Punkte wird aus Formatierungs- grnden nicht empfohlen)Hier koennen Sie die Schriftart der Laufschrift veraendern (eine Schriftgroesse ueber 20 Punkte wird aus Formatierungs- gruenden nicht empfohlen) TrainingPage DaumenDaumenQObjectnAnzahl der Schriftzeichen, die ingesamt diktiert wurden7Anzahl der Schriftzeichen, die ingesamt diktiert wurdenLessonTableSql DiktatDiktat LessonResultSoundkarte Soundkarte TrainingPage FehlerFehlerLessonTableSqlREs stehen Updates fr %1 zur Verfgung...+Es stehen Updates fuer %1 zur Verfuegung... UpdateDialog FingerFingerEvaluationWidgetbBitte geben Sie mindestens eine Zeile Diktat ein 1Bitte geben Sie mindestens eine Zeile Diktat ein  LessonDialogIhre Daten wurden erfolgreich in die neue Datenbank bertragen! AIhre Daten wurden erfolgreich in die neue Datenbank uebertragen! QObjectDer Verlauf wird erst nach der zweiten absolvierten Lektion sichtbar.EDer Verlauf wird erst nach der zweiten absolvierten Lektion sichtbar.ProgressionWidget>Die Benutzer-Datenbank konnte nicht in Ihrem HOME-Verzeichnis angelegt werden. Eventell fehlen die Schreibrechte. Es wird nun versucht, die Original-Datenbank im Programmverzeichnis zu verwenden. Den Verzeichnispfad zur Datenbank knnen Sie anschlieend in den Einstellungen verndern. "Die Benutzer-Datenbank konnte nicht in Ihrem HOME-Verzeichnis angelegt werden. Eventell fehlen die Schreibrechte. Es wird nun versucht, die Original-Datenbank im Programmverzeichnis zu verwenden. Den Verzeichnispfad zur Datenbank koennen Sie anschliessend in den Einstellungen veraendern.  ErrorMessage ErsetzungsfilterErsetzungsfilter RegExpDialogEin "Soll-Fehler" entsteht, wenn ein anderes Schriftzeichen eingegeben wurde als das hier vorgegebeneeEin "Soll-Fehler" entsteht, wenn ein anderes Schriftzeichen eingegeben wurde als das hier vorgegebene CharTableSql5. Versuche mglichst fehlerfrei zu tippen. Es ist deutlich ineffizienter schnell zu tippen, wenn Du dabei viele Fehler machst.5. Versuche moeglichst fehlerfrei zu tippen. Es ist deutlich ineffizienter schnell zu tippen, wenn Du dabei viele Fehler machst.IllustrationDialog Level Level  AbcRainWidgetDie Datenbank Die Datenbank  ErrorMessage& Inhaltsverzeichnis Inhaltsverzeichnis HelpBrowserbIhre Version der Software ist veraltet und nicht mehr aktualisierungsfhig. Die neue Version erhalten Sie im Internet unter %1 Mchten Sie die neue Version jetzt herunterladen?Ihre Version der Software ist veraltet und nicht mehr aktualisierungsfaehig. Die neue Version erhalten Sie im Internet unter %1 Moechten Sie die neue Version jetzt herunterladen? UpdateDialogEin "Ist-Fehler" entsteht, wenn das Schriftzeichen trotz anderer Vorgabe eingegeben wurdeYEin "Ist-Fehler" entsteht, wenn das Schriftzeichen trotz anderer Vorgabe eingegeben wurde CharTableSqlEs werden alle aufgezeichneten Schriftzeichen (Fehlerquoten) des aktuellen Benutzers gelscht und die Zeichenliste in den urprnglichen Zustand versetzt!Wollen Sie den Vorgang wirklich fortsetzen?Es werden alle aufgezeichneten Schriftzeichen (Fehlerquoten) des aktuellen Benutzers geloescht und die Zeichenliste in den urpruenglichen Zustand versetzt! Wollen Sie den Vorgang wirklich fortsetzen?  DatabasePage Punkte Punkte LessonResult Punkte PunkteLessonSqlModel Punkte PunkteProgressionWidget PunktePunkteEvaluationWidget PunktePunkteProgressionWidgetBEs sollen Schriftzeichen vermieden werden, die das aktuelle Tastaturlayout nicht untersttzt. Daher wird auf alle bungstexte vor dem Training ein Filter in Form eines regulren Ausdrucks angewendet. Sie sollten nderungen nur durchfhren, wenn Sie sich mit regulren Ausdrcken auskennen.(Es sollen Schriftzeichen vermieden werden, die das aktuelle Tastaturlayout nicht unterstuetzt. Daher wird auf alle Uebungstexte vor dem Training ein Filter in Form eines regulaeren Ausdrucks angewendet. Sie sollten Aenderungen nur durchfuehren, wenn Sie sich mit regulaeren Ausdruecken auskennen. RegExpDialogZeichenlimit: Zeichenlimit: StartWidgetPC-LautsprecherPC-Lautsprecher TrainingPage"TIPP10 ist ein kostenloser 10-Finger-Schreibtrainer fr Windows, Mac OS und Linux. Die Software arbeitet intelligent - Schriftzeichen, die hufig falsch getippt werden, werden auch sofort hufiger diktiert. So lsst sich das Zehnfingersystem schnell und effizient erlernen.TIPP10 ist ein kostenloser 10-Finger-Schreibtrainer fuer Windows, Mac OS und Linux. Die Software arbeitet intelligent - Schriftzeichen, die haeufig falsch getippt werden, werden auch sofort haeufiger diktiert. So laesst sich das Zehnfingersystem schnell und effizient erlernen.IllustrationDialogSonstiges Sonstiges OtherPageSonstiges SonstigesSettingsDialogDie aufgezeichneten Fehlerquoten beeinflussen die Intelligenzfunktion und damit auch die Auswahl der Texte beim Schreibtraining. Wenn die Fehlerquote eines bestimmten Zeichens bermig hoch ist, kann es unter Umstnden sinnvoll sein, die Liste zurckzusetzen. Es werden nun alle aufgezeichneten Schriftzeichen gelscht. Wollen Sie den Vorgang wirklich fortsetzen?pDie aufgezeichneten Fehlerquoten beeinflussen die Intelligenzfunktion und damit auch die Auswahl der zu diktierenden Texte. Wenn die Fehlerquote eines bestimmten Zeichens uebermaessig hoch ist, kann es unter Umstaenden sinnvoll sein, die Liste zurueckzusetzen. Es werden nun alle aufgezeichneten Schriftzeichen geloescht. Wollen Sie den Vorgang wirklich fortsetzen?  CharTableSql Thema:Thema: StartWidget ber Ueber  MainWindow Lektion &lschenLektion &loeschen StartWidgetvDiese Spalte zeigt alle bislang eingegebenen Schriftzeichen;Diese Spalte zeigt alle bislang eingegebenen Schriftzeichen CharTableSql*Erreichte Punktzahl: Erreichte Punktzahl:  AbcRainWidget Zeit: Zeit: TrainingWidget(Willkommen zu TIPP10Willkommen zu TIPP10IllustrationDialog$Lektion downloadenLektion downloadenDownloadDialogABC-Spiel ABC-Spiel MainWindowDie Benutzertabelle mit den Fehlerdaten kann nicht geleert werden. SQL-Statement fehlgeschlagen.`Die Benutzertabelle mit den Fehlerdaten kann nicht geleert werden. SQL-Statement fehlgeschlagen. ErrorMessage Geschwindigkeit:Geschwindigkeit: TrainingPageFortgeschrittenFortgeschrittenEvaluationWidget:TIPP10 wird herausgegeben vonTIPP10 wird herausgegeben von MainWindow(&Bedienungsanleitung&Bedienungsanleitung MainWindow` erreicht, bei einer Schreibgeschwindigkeit von 0 erreicht, bei einer Schreibgeschwindigkeit von  LessonResultDie aufgezeichneten Schriftzeichen wurden erfolgreich zurckgesetzt! FDie aufgezeichneten Schriftzeichen wurden erfolgreich zurueckgesetzt!  DatabasePage"ZeichenbegrenzungZeichenbegrenzung RegExpDialogLizenznummer Lizenznummer LicenseDialog4GNU General Public LicenseGNU General Public License MainWindow(FenstereinstellungenFenstereinstellungen OtherPage*Kleiner Finger rechtsKleiner Finger rechtsQObject"Dauer der LektionDauer der Lektion StartWidget Portable VersionPortable Version MainWindowRAnalyse-Index kann nicht erstellt werden.)Analyse-Index kann nicht erstellt werden. ErrorMessage0Eigene Lektion erstellenEigene Lektion erstellen LessonDialogIm Demo-Modus knnen pro Lektion nur 10 Schriftzeichen eingegeben werdenIIm Demo-Modus koennen pro Lektion nur 10 Schriftzeichen eingegeben werden LicenseDialog8Leertaste startet das DiktatLeertaste startet das DiktatTrainingWidgetFNative Programmoberflche verwenden$Native Programmoberflaeche verwenden OtherPageComputerschreiben kinderleicht<br>durch multisensorisches Lernen@Computerschreiben kinderleicht
durch multisensorisches Lernen MainWindowDie Datei konnte leider nicht importiert werden. berprfen Sie bitte die Schreibweise der Internetadresse, es muss sich um eine lesbare Textdatei und um eine gltige URL handeln. berprfen Sie bitte auerdem Ihre Internetverbindung. Die Datei konnte leider nicht importiert werden. Ueberpruefen Sie bitte die Schreibweise der Internetadresse, es muss sich um eine lesbare Textdatei und um eine gueltige URL handeln. Ueberpruefen Sie bitte ausserdem Ihre Internetverbindung.  ErrorMessageSie haben  Sie haben  LessonResult.Grundstellung einnehmenGrundstellung einnehmenTrainingWidgetXTemporre Datei konnte nicht erzeugt werden.-Temporaere Datei konnte nicht erzeugt werden. ErrorMessage Tippfehler Tippfehler LessonResultDie Lektion konnte nicht gespeichert werden. SQL-Statement fehlgeschlagen.JDie Lektion konnte nicht gespeichert werden. SQL-Statement fehlgeschlagen. ErrorMessage3. Legen Sie die Oberarme am Krper an und lassen Sie die Schultern hngen. Die Unterarme bilden einen rechten Winkel zu den Oberarmen. Legen Sie die Handgelenke nicht ab und lassen Sie sie nicht durchhngen.3. Legen Sie die Oberarme am Koerper an und lassen Sie die Schultern haengen. Die Unterarme bilden einen rechten Winkel zu den Oberarmen. Legen Sie die Handgelenke nicht ab und lassen Sie sie nicht durchhaengen.IllustrationDialogHier knnen Sie die Geschwindigkeit der Laufschrift verndern (Der Regler ganz links bedeutet, das Laufband bewegt sich erst am Ende der Zeile. Der Regler ganz rechts entspricht einem schnellen Laufband.)Hier koennen Sie die Geschwindigkeit der Laufschrift veraendern (Der Regler ganz links bedeutet, das Laufband bewegt sich erst am Ende der Zeile. Der Regler ganz rechts entspricht einem schnellen Laufband.) TrainingPage(Lektion &exportierenLektion &exportieren StartWidget(Lektion &importierenLektion &importieren StartWidgetDas Diktat wird erst fortgesetzt, wenn die richtige Taste gedrckt wurdeIDas Diktat wird erst fortgesetzt, wenn die richtige Taste gedrueckt wurde StartWidget Seite &drucken Seite &drucken HelpBrowser:Filter fr das TastaturlayoutFilter fuer das Tastaturlayout RegExpDialogZBitte geben Sie ein vollstndiges Diktat ein .Bitte geben Sie ein vollstaendiges Diktat ein  LessonDialog(Tippfehler bergehenTippfehler uebergehen LessonResult im Internet im Internet MainWindowEinige der Einstellungen werden erst nach einem Neustart der Software wirksam. OEinige der Einstellungen werden erst nach einem Neustart der Software wirksam. SettingsDialog- Trennlinie - Trennlinie LessonResult LektionenverlaufLektionenverlaufEvaluationWidget&Lektion &downloadenLektion &downloaden StartWidgetZeitpunkt:  Zeitpunkt:  LessonResultR*Aktivieren Sie diese Option, wenn die Texte der Lektion nicht in ihrer vorgesehenen Reihenfolge diktiert, sondern in Echtzeit an die Tippfehler angepasst werden sollen.*Aktivieren Sie diese Option, wenn die Texte der Lektion nicht in ihrer vorgesehenen Reihenfolge diktiert, sondern in Echtzeit an die Tippfehler angepasst werden sollen. StartWidgetHier knnen Sie festlegen, ob ein Informationsfenster mit Ratschlgen beim Start von WHier koennen Sie festlegen, ob ein Informationsfenster mit Ratschlaegen beim Start von  OtherPage.Reaktion auf TippfehlerReaktion auf Tippfehler StartWidgetSchreibtrainingSchreibtrainingSettingsDialogIntelligenz* Intelligenz* StartWidget6Dauer der Lektion insgesamtDauer der Lektion insgesamtLessonTableSqlTippfehler in Abhngigkeit von der Diktatlnge (Tippfehler / Zeichen) Umso geringer die Fehlerquote, desto besser!tTippfehler in Abhaengigkeit von der Diktatlaenge (Tippfehler / Zeichen) Umso geringer die Fehlerquote, desto besser!LessonTableSqlTastaturlayout:Tastaturlayout: LanguagePage"Datenbankversion Datenbankversion  MainWindowhWollen Sie die Lektion wirklich vorzeitig beenden? 4Wollen Sie die Lektion wirklich vorzeitig beenden? TrainingWidgetx<u>Erluterung</u><br>&nbsp;<br>Jede Zeile (Zeilenumbruch am Ende) entspricht einer Einheit fr das Diktat. Das Diktat kann auf zwei Arten gefhrt werden:<br>&nbsp;<br><b>Satzdiktat</b> - die einzelnen Zeilen (Stze) werden wie hier eingegeben mit einem Zeilenumbruch am Ende diktiert.<br>&nbsp;<br><b>Wortdiktat</b> - die einzelnen Zeilen (Worte) werden mit Leerzeichen getrennt diktiert, ein Zeilenumbruch erfolgt automatisch nach mindestens Erlaeuterung
 
Jede Zeile (Zeilenumbruch am Ende) entspricht einer Einheit fuer das Diktat. Das Diktat kann auf zwei Arten gefuehrt werden:
 
Satzdiktat - die einzelnen Zeilen (Saetze) werden wie hier eingegeben mit einem Zeilenumbruch am Ende diktiert.
 
Wortdiktat - die einzelnen Zeilen (Worte) werden mit Leerzeichen getrennt diktiert, ein Zeilenumbruch erfolgt automatisch nach mindestens  LessonDialogDiktat beendetDiktat beendet TickerBoard"VergleichstabelleVergleichstabelleEvaluationWidget&Bearbeiten &Bearbeiten StartWidget"Hilfestellungen: Hilfestellungen:  LessonResult&Beenden&Beenden MainWindow&Beenden&Beenden StartWidgetnSollen die Ergebnisse der Lektion gespeichert werden? 7Sollen die Ergebnisse der Lektion gespeichert werden? TrainingWidgetBerichtBerichtEvaluationWidgetBerichtBericht LessonResult,2. Nimm eine aufrechte Haltung ein und vermeide es in jedem Fall auf die Tastatur zu sehen. Dein Blick sollte stets auf den Bildschirm gerichtet sein.2. Nimm eine aufrechte Haltung ein und vermeide es in jedem Fall auf die Tastatur zu sehen. Dein Blick sollte stets auf den Bildschirm gerichtet sein.IllustrationDialog>Leertaste setzt das Diktat fortLeertaste setzt das Diktat fort TickerBoardTippfehler mssen zustzlich ber die Rcklauftaste entfernt werdenGTippfehler muessen zusaetzlich ueber die Ruecklauftaste entfernt werden StartWidgetVorkommen Vorkommen CharTableSqlF&Absolvierte Lektionen zurcksetzen$&Absolvierte Lektionen zuruecksetzen DatabasePageLektion druckenLektion druckenLessonPrintDialogEs gehen alle Werte der laufenden Lektion verloren! Wollen Sie die Anwendung wirklich beenden? aEs gehen alle Werte der laufenden Lektion verloren! Wollen Sie die Anwendung wirklich beenden?  MainWindowbungslektionUebungslektionProgressionWidgetbungslektionUebungslektionQObject Schriftzeichen Schriftzeichen LessonDialogSchriftzeichenSchriftzeichen CharTableSqlSchriftzeichenSchriftzeichenEvaluationWidgetTBeachte dabei unbedingt folgende Hinweise:*Beachte dabei unbedingt folgende Hinweise:IllustrationDialogFreie LektionenFreie LektionenLessonTableSqlFreie LektionenFreie LektionenProgressionWidgetFreie LektionenFreie Lektionen StartWidget&Programmoberflche:Programmoberflaeche: LanguagePage&Abbrechen &Abbrechen CharTableSql&Abbrechen &Abbrechen DatabasePage&Abbrechen &AbbrechenDownloadDialog&Abbrechen &Abbrechen LessonDialog&Abbrechen &AbbrechenLessonPrintDialog&Abbrechen &Abbrechen MainWindow&Abbrechen &Abbrechen RegExpDialog&Abbrechen &AbbrechenSettingsDialog&Abbrechen &Abbrechen StartWidget&Abbrechen &AbbrechenTrainingWidgetAuf aktivierte Intelligenz beim Start einer freien oder eigenen Lektion hinweisenQAuf aktivierte Intelligenz beim Start einer freien oder eigenen Lektion hinweisen OtherPageA&bbrechen A&bbrechenTrainingWidgetpAnzahl der Tippfehler, die in der Lektion gemacht wurden8Anzahl der Tippfehler, die in der Lektion gemacht wurdenLessonTableSqlvEinmal pro Woche beim Programmstart auf neue Version prfen10-Finger-Schreibtrainer TIPP1010-Finger-Schreibtrainer TIPP10 LessonResult6 Datenbank aktualisieren... Datenbank aktualisieren... UpdateDialogMetronom: Metronom: TrainingPageDruckenDrucken LessonResult&Drucken&DruckenLessonPrintDialog &ber &Ueber  MainWindow&Teilen auf FacebookTeilen auf Facebook LessonResultT6. Einmal mit dem Zehnfingersystem angefangen, sollten Sie es tunlichst vermeiden wieder zu Ihrem "alten System" zurck zu wechseln (auch wenn es mal schnell gehen muss).6. Einmal mit dem Zehnfingersystem angefangen, sollten Sie es tunlichst vermeiden wieder zu Ihrem "alten System" zurueck zu wechseln (auch wenn es mal schnell gehen muss).IllustrationDialogDort finden Sie auch praktische Tipps und Hintergrundinformationen.CDort finden Sie auch praktische Tipps und Hintergrundinformationen.IllustrationDialoghDer Lauftext-Hintergund konnte nicht geladen werden.4Der Lauftext-Hintergund konnte nicht geladen werden. ErrorMessageFehler: Fehler:  LessonResultFehler: Fehler: TrainingWidgetEinfhrung EinfuehrungIllustrationDialog&Speichern &Speichern LessonDialog&Speichern &Speichern RegExpDialog&Speichern &SpeichernSettingsDialogLeistungLeistungEvaluationWidgetHintergrund: Hintergrund: TrainingPage.Fehlerquoten der FingerFehlerquoten der Finger FingerWidget^Die Benutzertabelle mit den Lektionendaten konnte nicht aktualisiert werden, weil kein Zugriff auf die Datenbank mglich ist. Falls dieses Problem erst auftrat, nachem der Schreibtrainer zuvor einige Zeit anstandslos lief, ist voraussichtlich die Datenbank beschdigt worden (z.B. durch einen Absturz des Computers). Um zu berprfen ob die Datenbank beschdigt wurde, knnen Sie die Datenbank-Datei testweise einmal umbenennen und die Software dann neu starten (es sollte dann auomatisch eine neue, leere Datenbank angelegt werden). Den Pfad zur Datenbank "5Die Benutzertabelle mit den Lektionendaten konnte nicht aktualisiert werden, weil kein Zugriff auf die Datenbank moeglich ist. Falls dieses Problem erst auftrat, nachem der Schreibtrainer zuvor einige Zeit anstandslos lief, ist voraussichtlich die Datenbank beschaedigt worden (z.B. durch einen Absturz des Computers). Um zu ueberpruefen ob die Datenbank beschaedigt wurde, koennen Sie die Datenbank-Datei testweise einmal umbenennen und die Software dann neu starten (es sollte dann auomatisch eine neue, leere Datenbank angelegt werden). Den Pfad zur Datenbank " ErrorMessageHilfetextHilfetext anzeigen StartWidgetDie Lektion konnte nicht angefordert werden. SQL-Statement fehlgeschlagen.JDie Lektion konnte nicht angefordert werden. SQL-Statement fehlgeschlagen. ErrorMessageAudioausgabe Audioausgabe TrainingPage@Bitte geben Sie Ihren Namen ein: Bitte geben Sie Ihren Namen ein:LessonPrintDialogPunkte: Punkte:  AbcRainWidgetTIPP10 comes with ABSOLUTELY NO WARRANTY; This is free software, and you are welcome to redistribute it under certain conditions;TIPP10 comes with ABSOLUTELY NO WARRANTY; This is free software, and you are welcome to redistribute it under certain conditions; MainWindowFDiese Software hilft Dir dabei, das mit "Computerschreiben kinderleicht durch multisensorisches Lernen" erlernte Zehnfingersystem zu trainieren und zu verfestigen.Diese Software hilft Dir dabei, das mit "Computerschreiben kinderleicht durch multisensorisches Lernen" erlernte Zehnfingersystem zu trainieren und zu verfestigen.IllustrationDialogLDiese &Information nicht mehr anzeigen&Diese &Information nicht mehr anzeigenTxtMessageDialognDiese Spalte zeigt die Namen der absolvierten Lektionen7Diese Spalte zeigt die Namen der absolvierten LektionenLessonTableSqlDiese Spalte gibt an, wie oft das Schriftzeichen ingesamt diktiert wurdeHDiese Spalte gibt an, wie oft das Schriftzeichen ingesamt diktiert wurde CharTableSql$Zeigefinger rechtsZeigefinger rechtsQObjectFehler:Fehler: FingerWidget0Eigene Lektion editierenEigene Lektion editieren LessonDialogDauer der Lektion automatisch auf "Gesamte Lektion" umstellen, wenn die Intelligenz deaktiviert wirddDauer der Lektion automatisch auf "Gesamte Lektion" umstellen, wenn die Intelligenz deaktiviert wird OtherPageFehlerquote Fehlerquote CharTableSqlnDie Verbindung zur Datenbank ist leider fehlgeschlagen.7Die Verbindung zur Datenbank ist leider fehlgeschlagen. ErrorMessageFDieses &Fenster nicht mehr anzeigen#Dieses &Fenster nicht mehr anzeigenIllustrationDialogV&Aufgezeichnete Schriftzeichen zurcksetzen,&Aufgezeichnete Schriftzeichen zuruecksetzen DatabasePage - Farbige Tasten- Farbige Tasten LessonResult$Betroffener Pfad: Betroffener Pfad: QObject,Hervorragende LeistungHervorragende LeistungEvaluationWidgetDie einzelnen Einheiten werden mit einem Zeilenumbruch am Ende diktiertGDie einzelnen Einheiten werden mit einem Zeilenumbruch am Ende diktiert LessonDialogfEs werden alle absolvierten Lektionen des aktuellen Benutzers gelscht und die Lektionenliste in den urprnglichen Zustand versetzt! Wollen Sie den Vorgang wirklich fortsetzen? Es werden alle absolvierten Lektionen des aktuellen Benutzers geloescht und die Lektionenliste in den urpruenglichen Zustand versetzt! Wollen Sie den Vorgang wirklich fortsetzen?  DatabasePageFehlerquote: Fehlerquote: FingerWidget&BeispielbewertungenBeispielbewertungenEvaluationWidgetDas Diktat wird nach einer festgelegten Anzahl korrekt getippter Zeichen beendetPDas Diktat wird nach einer festgelegten Anzahl korrekt getippter Zeichen beendet StartWidgetDie Fehlerquoten werden aus den Schriftzeichen und dem aktuell gewhlten Tastaturlayout berechnet.cDie Fehlerquoten werden aus den Schriftzeichen und dem aktuell gewaehlten Tastaturlayout berechnet. FingerWidgetEigene LektionEigene LektionProgressionWidgetDie Benutzertabelle mit den Lektionendaten kann nicht geleert werden. SQL-Statement fehlgeschlagen.cDie Benutzertabelle mit den Lektionendaten kann nicht geleert werden. SQL-Statement fehlgeschlagen. ErrorMessageHier knnen Sie ein Metronom whrend des Schreibtrainings aktivierenFHier koennen Sie ein Metronom waehrend des Schreibtrainings aktivieren TrainingPage&TIPP10 untersttzenTIPP10 unterstuetzen MainWindow,Aktualisierung startenAktualisierung starten UpdateDialog0&Schreibtraining starten&Schreibtraining starten StartWidgetFarbige TastenTasten farbig markieren StartWidget&Gehe zu&Gehe zu MainWindowErweitert Erweitert LanguagePageBewertung BewertungEvaluationWidgetBewertung BewertungLessonTableSqlBewertung BewertungProgressionWidgetAuswertung Auswertung LessonResultTastpfadeTastpfade anzeigen StartWidget*Die Texte der Lektion werden nicht in ihrer vorgesehenen Reihenfolge diktiert, sondern in Echtzeit an die Tippfehler angepasst.*Die Texte der Lektion werden nicht in ihrer vorgesehenen Reihenfolge diktiert, sondern in Echtzeit an die Tippfehler angepasst. StartWidget8Das Update wird abgebrochen.Das Update wird abgebrochen. ErrorMessageIm angegebenen Verzeichnis konnte keine Datenbank gefunden werden. Es wird nun versucht, eine neue, leere Datenbank in diesem Verzeichnis anzulegen. Den Verzeichnispfad zur Datenbank knnen Sie in den Einstellungen verndern. Im angegebenen Verzeichnis konnte keine Datenbank gefunden werden. Es wird nun versucht, eine neue, leere Datenbank in diesem Verzeichnis anzulegen. Den Verzeichnispfad zur Datenbank koennen Sie in den Einstellungen veraendern.  ErrorMessageDurch das Filtern auf zugelassene Schriftzeichen kann sinnloser Text entstehen (z.B. durch das Entfernen von Umlauten). Sie knnen hier Ersetzungen definieren, die vor der Zeichenbegrenzung auf den Text angewendet werden. Verwenden Sie dazu eine Form wie in nachfolgendem Beispiel, das alle deutschen Umlaute und Sz ersetzt:EDurch das Filtern auf zugelassene Schriftzeichen kann sinnloser Text entstehen (z.B. durch das Entfernen von Umlauten). Sie koennen hier Ersetzungen definieren, die vor der Zeichenbegrenzung auf den Text angewendet werden. Verwenden Sie dazu eine Form wie in nachfolgendem Beispiel, das alle deutschen Umlaute und Sz ersetzt: RegExpDialog$GrundeinstellungenGrundeinstellungenSettingsDialog im Programmverzeichnis konnte leider nicht gefunden werden. Sie muss existieren, um die Software starten zu knnen.u im Programmverzeichnis konnte leider nicht gefunden werden. Sie muss existieren, um die Software starten zu koennen. ErrorMessageZur Untersttzung werden die Tastpfade der Finger auf der Tastatur angezeigtMZur Unterstuetzung werden die Tastpfade der Finger auf der Tastatur angezeigt StartWidgetSpiel &beendenSpiel &beenden AbcRainWidgetAnhand der aktuellen Fehlerquoten aller Schriftzeichen werdendie Worte und Stze des Diktats in Echtzeit ausgewhlt.Ist die Intelligenz dagegen deaktiviert, werden die Texte der Lektionstets in der gleichen Reihenfolge diktiert.Anhand der aktuellen Fehlerquoten aller Schriftzeichen werden die Worte und Saetze des Diktats in Echtzeit ausgewaehlt. Ist die Intelligenz dagegen deaktiviert, werden die Texte der Lektion stets in der gleichen Reihenfolge diktiert. StartWidgetZWillkommenfenster beim Programmstart anzeigen-Willkommenfenster beim Programmstart anzeigen OtherPage@ wurde erfolgreich aktualisiert! wurde erfolgreich aktualisiert! UpdateDialog bungslektionen:Uebungslektionen: LanguagePageTippfehler:  Tippfehler:  LessonResultEs wurde keine Lektion selektiert. Bitte whlen Sie eine Lektion aus.FEs wurde keine Lektion selektiert. Bitte waehlen Sie eine Lektion aus. ErrorMessage&Mittelfinger rechtsMittelfinger rechtsQObjectvBitte geben Sie die Internetadresse zu einer Textdatei ein:;Bitte geben Sie die Internetadresse zu einer Textdatei ein:DownloadDialogdDie gewhlten bungslektionen sind nicht auf das Tastaturlayout abgestimmt. Sie knnen diese trotzdem trainieren, mssen aber unter Umstnden von Beginn an Tastwege zurcklegen. Die gewaehlten Uebungslektionen sind nicht auf das Tastaturlayout abgestimmt. Sie koennen diese trotzdem trainieren, muessen aber unter Umstaenden von Beginn an Tastwege zuruecklegen.  LanguagePage`4. Bleib whrend des Schreibtrainings entspannt.14. Bleib waehrend des Schreibtrainings entspannt.IllustrationDialog@ber einen Proxyserver verbinden!Ueber einen Proxyserver verbindenDownloadDialog@ber einen Proxyserver verbinden!Ueber einen Proxyserver verbinden UpdateDialogJErste Erfahrungen im Zehnfingersystem%Erste Erfahrungen im ZehnfingersystemEvaluationWidget"Name der Lektion:Name der Lektion: LessonDialogZur Untersttzung werden die zu verwendenden Finger in der Statusleiste angezeigtRZur Unterstuetzung werden die zu verwendenden Finger in der Statusleiste angezeigt StartWidget6 diktierten Schriftzeichen. diktierten Schriftzeichen. LessonDialogbungslektionenUebungslektionenLessonTableSqlbungslektionenUebungslektionenProgressionWidgetbungslektionenUebungslektionen StartWidget Tippfehlern Tippfehlern LessonResult Eigene LektionenEigene LektionenLessonTableSql Eigene LektionenEigene LektionenProgressionWidget Eigene LektionenEigene Lektionen StartWidget"Tastatur anzeigenTastatur anzeigen StartWidget4Startzeitpunkt der LektionStartzeitpunkt der LektionLessonTableSqlDie Lektion konnte nicht analysiert werden. SQL-Statement fehlgeschlagen.IDie Lektion konnte nicht analysiert werden. SQL-Statement fehlgeschlagen. ErrorMessage^Hier knnen Sie alle aufgezeichneten Tastendrcke und Tippfehler zurcksetzen (die Schriftzeichen werden so in den ursprnglichen Zustand, wie nach der Installation, versetzt)Hier koennen Sie alle aufgezeichneten Tastendruecke und Tippfehler zuruecksetzen (die Schriftzeichen werden so in den urspruenglichen Zustand, wie nach der Installation, versetzt) DatabasePageFehler in Fehler inEvaluationWidgetWhlen Sie diese Option, wenn Sie die Soundausgabe ber die Soundkarte erfolgen sollVWaehlen Sie diese Option, wenn Sie die Soundausgabe ueber die Soundkarte erfolgen soll TrainingPage"A/min" besagt, wie viele Schriftzeichen (Anschlge) durchschnittlich pro Minute eingegeben wurdenc"A/min" besagt, wie viele Schriftzeichen (Anschlaege) durchschnittlich pro Minute eingegeben wurdenLessonTableSqlDas Diktat wird nach einer bestimmten Anzahl korrekt getippter Zeichen beendetNDas Diktat wird nach einer bestimmten Anzahl korrekt getippter Zeichen beendet StartWidget&Einstellungen&Einstellungen MainWindowEinstellungen Einstellungen LessonResult.Schreibtrainer &startenSchreibtrainer &startenIllustrationDialogFreie Lektion Freie LektionProgressionWidget<b>Was passiert bei aktivierter Intelligenz?</b><br>Bei aktivierter Intelligenz werden die Zeilen nicht der Reihenfolge nach diktiert, sondern abhngig von den Tippfehler-Quoten die aktuell fr den Lernerfolg sinnvollste Zeile in das Diktat einbezogen. Die Intelligenz zu aktivieren macht nur bei Lektionen Sinn, die aus sehr vielen Zeilen bestehen.<br>cWas passiert bei aktivierter Intelligenz?
Bei aktivierter Intelligenz werden die Zeilen nicht der Reihenfolge nach diktiert, sondern abhaengig von den Tippfehler-Quoten die aktuell fuer den Lernerfolg sinnvollste Zeile in das Diktat einbezogen. Die Intelligenz zu aktivieren macht nur bei Lektionen Sinn, die aus sehr vielen Zeilen bestehen.
 LessonDialogBitte geben Sie Ihre Lizenznummer (ohne Leerzeichen) ein, die Sie im Arbeitsbuch (Schulbuch) auf Seite 3 finden:pBitte geben Sie Ihre Lizenznummer (ohne Leerzeichen) ein, die Sie im Arbeitsbuch (Schulbuch) auf Seite 3 finden: LicenseDialog$Fehler korrigierenFehler korrigieren LessonResult$Fehler korrigierenFehler korrigieren StartWidgetSchriftart: Schriftart: TrainingPageFBitte whlen Sie eine Textdatei aus$Bitte waehlen Sie eine Textdatei aus StartWidgetTSQL-String konnte nicht verarbeitet werden*SQL-String konnte nicht verarbeitet werden ErrorMessageTIPP10 &startenTIPP10 &startenIllustrationDialogZeichen:  Zeichen:  LessonResultZeichen:  Zeichen: TrainingWidget@Diktat (mindestens zwei Zeilen): Diktat (mindestens zwei Zeilen): LessonDialogBeachten Sie, dass langsames Tippen ohne Fehler bessere Bewertungen hervorruft, als schnelles Tippen mit vielen Fehlern!xBeachten Sie, dass langsames Tippen ohne Fehler bessere Bewertungen hervorruft, als schnelles Tippen mit vielen Fehlern!EvaluationWidgetHinweis: Es knnen nur Textdateien im TXT-Format importiert werden.Weitere Informationen finden Sie in der Hilfe.Hinweis: Es koennen nur Textdateien im TXT-Format importiert werden. Weitere Informationen hierzu finden Sie auch in der Hilfe. StartWidgetHinweis: Es knnen nur Textdateien im TXT-Format exportiert werden.Weitere Informationen finden Sie in der Hilfe.Hinweis: Es koennen nur Textdateien im TXT-Format exportiert werden. Weitere Informationen hierzu finden Sie auch in der Hilfe. StartWidget"&Download starten&Download startenDownloadDialogbHinweis vor Im- und Export von Lektionen anzeigen1Hinweis vor Im- und Export von Lektionen anzeigen OtherPage"Zeigefinger linksZeigefinger linksQObjectf1. Die Finger nehmen zunchst die Grundstellung ein (sie wird auch zu Beginn jeder Lektion angezeigt). Nach jedem Tippen einer Taste kehren die Finger in die Grundstellung zurck.1. Die Finger nehmen zunaechst die Grundstellung ein (sie wird auch zu Beginn jeder Lektion angezeigt). Nach jedem Tippen einer Taste kehren die Finger in die Grundstellung zurueck.IllustrationDialog6Entspricht zum Beispiel ...Entspricht zum Beispiel ...EvaluationWidget Die Lektion konnte nicht aktualisiert werden, weil kein Zugriff auf die Datenbank mglich ist. Falls dieses Problem erst auftrat, nachem der Schreibtrainer zuvor einige Zeit anstandslos lief, ist voraussichtlich die Datenbank beschdigt worden (z.B. durch einen Absturz des Computers). Um zu berprfen ob die Datenbank beschdigt wurde, knnen Sie die Datenbank-Datei testweise einmal umbenennen und die Software dann neu starten (es sollte dann auomatisch eine neue, leere Datenbank angelegt werden). Den Pfad zur Datenbank "Die Lektion konnte nicht aktualisiert werden, weil kein Zugriff auf die Datenbank moeglich ist. Falls dieses Problem erst auftrat, nachem der Schreibtrainer zuvor einige Zeit anstandslos lief, ist voraussichtlich die Datenbank beschaedigt worden (z.B. durch einen Absturz des Computers). Um zu ueberpruefen ob die Datenbank beschaedigt wurde, koennen Sie die Datenbank-Datei testweise einmal umbenennen und die Software dann neu starten (es sollte dann auomatisch eine neue, leere Datenbank angelegt werden). Den Pfad zur Datenbank " ErrorMessagetipp10-2.1.0/languages/tipp10_en.qm000066400000000000000000002347011274324046000167440ustar00rootroot00000000000000!,mjFޮ ɹ!!IFB!P'w~' m( (I^)0))2YN*2YN+ Dc+aDc+W$+W$+W$,,[F,dg,mN,r-/0=001181m112202cn)2404j45/°5d°5J.5/70N8.޲>8e9e::0N;9;nUH @W A6[ZAzb?BzBH CRNCDUkFNyG^@$G#GzHMHHI#ITI!zI3^L>:L|?`MGxMXNmNOFO@UOXP-^Q PdRdR:e>Rnj;S|uTU þVvV*W6/eWoWWMXңX(jYX׎Z-[ ^1 Yu^$3>_p,a<a7QaT+aZd=cd|RgR|Rg|Rg|Rg|Rh25hjkkl:oTo oJst@sqs涞t(t u93un^u**v.|vV8Jwg=>NwLMwTևx\V0xY:yb07ykOzIxUUzN{Փ{@{Ϟ{S|;@|ǯ>}ϊ}ϑn~d|~p+.xbf/>qGmH0Jjc$9jaÁF"\5@\n3pݮtg7)y Z ͡3(jW>u.eL>0H!HRų$\ !]Y $,. &~ +j~ +L 4 >n >n GFY Gf Gf I^Z) Y[ Y[ Y[Y }* 9> 9>, 9>e 9> 9> 9> 9>N 9> 9> 9> ~5 >, g X> L| O z{ d :c  %~U T . d= d ," / D G; Yv lJ m6 xy xy y  yC T ŀ T % ! Nb ; ŕ` ɅK ɦ ʀSO ̚ 8 v n *Lz} /1Ľ 6G#O =Ş A- FFv FHn G GP I ə QLT Q}8 Y4$ $ P΋ 8 '_ ϝ  ` >= xГ a C  N VԘ V V g9 | տ &- 4~ 8m_ Bg, EpJq R ]؛ f> gy w C ,  ʽl  .  " $ -'< 6 ?*m AJ T& \F ~n> ~^z v  N X > i v   W 8 ٷI 9 zZ ?#(-N)"AB4K3MWbks˞s:~=Gє]NJu4ܳ } } B} + i 3i |i 1^  Y ^ $ , Nn,25t??D:IYNM|~a*dS1dS3<Ю=pp 5Z. !M3!x"G^$iR$i*.. LessonResult::TrainingWidget % % CharSqlModel % % FingerWidget) )  ErrorMessage&Yes&Ja CharTableSql&Yes&Ja DatabasePage&Yes&Ja MainWindow&Yes&JaQObject&Yes&Ja StartWidget&Yes&JaTrainingWidget&Ok&Ok LicenseDialog&Ok&OkTxtMessageDialog...... DatabasePageOffAus TrainingPage o' clock Uhr LessonResult o' clock UhrLessonSqlModel o' clock UhrProgressionWidgetAllAlle LessonResultAllAlle StartWidget&Start Demo &Demo starten LicenseDialogInfoInfo MainWindowHere you can determine whether a notice to the file types should be displayed before the import and export iHier koennen Sie festlegen, ob ein Hinweis zu den Dateitypen vor dem Im- und Export angezeigt werden soll OtherPageDHere you can select the font colorDie absolvierten Lektionen wurden erfolgreich zurueckgesetzt!  DatabasePageThe file could not be exported. Please check to see whether it is a writable text file. }Die Datei konnte leider nicht exportiert werden. Bitte ueberpruefen Sie, ob es sich um eine beschreibbare Textdatei handelt.  ErrorMessage(Dictate the text as:$Das Diktat soll gefuehrt werden als: LessonDialog6. Once you have begun touch typing you have to avoid reverting back to the way you used to type (even if you are in a hurry).6. Einmal mit dem Zehnfingersystem angefangen, solltest Du es tunlichst vermeiden wieder zu Deinem "alten System" zurueck zu wechseln (auch wenn es mal schnell gehen muss).IllustrationDialogLCannot read the online update version.;Die Online-Versionsinformation konnte nicht gelesen werden. ErrorMessage Show key pictureSinnbild einblenden StartWidgetNCannot find typing mistake definitions.'Keine Tippfehler-Definitonen vorhanden. ErrorMessageFor visual support, the virtual keyboard and status information is shown\Zur visuellen Unterstuetzung werden die virtuelle Tastatur und Statusinformationen angezeigt StartWidget Very good skillsSehr gute LeistungEvaluationWidgetf4. Try to remain relaxed during the typing lessons.74. Bleiben Sie waehrend des Schreibtrainings entspannt.IllustrationDialog Order by x-axis:X-Achse sortieren nach: ProgressionWidget&Edit LessonLektion &editieren StartWidgetAudible SignalAkustisches Signal StartWidgetAll LessonsAlle LektionenLessonTableSqlAll LessonsAlle LektionenProgressionWidgetHere can select the color of the cursor for the current characterNHier koennen Sie die Farbe der Markierung fuer das aktuelle Zeichen veraendern TrainingPageTarget Errors Soll-Fehler CharTableSqlChange &Font&Schriftart aendern TrainingPage angezeigt werden soll OtherPage(Download SQL File...SQL-Datei herunterladen... UpdateDialogThe file could not be imported because it is empty. Please check whether it is a readable text file with content. Die Datei konnte leider nicht importiert werden, weil sie leer ist. Bitte ueberpruefen Sie, ob es sich um eine lesbare Textdatei mit Inhalt handelt.  ErrorMessage is already the latest version. There are currently no updates available.j befindet sich bereits auf dem aktuellsten Stand. Es stehen derzeit keine Aktualisierungen zur Verfuegung. UpdateDialog&L/R Separation LineTrennlinie anzeigen StartWidget Back Zurueck HelpBrowserActual Errors Ist-Fehler CharTableSqlThe user typing errors could not be updated because there is no access to the database. If this problem only occurred after the software had been running smoothly for some time, the database is expected to have been damaged (eg crashing of the computer). To check whether or not the database has been damaged, you can rename the database file and restart the software (it will create a new, empty database automatically). You can find the database path "2Die Benutzertabelle mit den Fehlerdaten konnte nicht aktualisiert werden, weil kein Zugriff auf die Datenbank moeglich ist. Falls dieses Problem erst auftrat, nachem der Schreibtrainer zuvor einige Zeit anstandslos lief, ist voraussichtlich die Datenbank beschaedigt worden (z.B. durch einen Absturz des Computers). Um zu ueberpruefen ob die Datenbank beschaedigt wurde, koennen Sie die Datenbank-Datei testweise einmal umbenennen und die Software dann neu starten (es sollte dann auomatisch eine neue, leere Datenbank angelegt werden). Den Pfad zur Datenbank " ErrorMessage (Error number:  (Fehlernummer:  ErrorMessageAssistanceHilfestellungen StartWidgettThe complete lesson will be dictated from beginning to end@Es wird die gesamte (freie) Lektion von Anfang bis Ende diktiert StartWidget"Software Version Programmversion  MainWindowXCannot create temporary file. Update failed.JTemporaere Datei konnte nicht erzeugt werden. Das Update wird abgebrochen. ErrorMessageNPlease enter at least two lines of text2Bitte geben Sie mindestens zwei Zeilen Diktat ein  LessonDialogDError Correction without BackspaceDiktat blockieren LessonResult&Block Typing ErrorsDiktat blockieren StartWidget cpm A/minProgressionWidget cpm A/min TrainingPage point Punkt LessonResult point PunktLessonSqlModel point PunktProgressionWidgetPrint page Seite drucken HelpBrowserFrequency: Vorkommen: FingerWidgetPCannot read the database update version.>Die Datenbank-Versionsinformation konnte nicht gelesen werden. ErrorMessager3. Bring your arms to the side of your body and relax your shoulders. Your upper arm and lower arm should be at a right angle. Do not rest your wrists and remain in an upright position.3. Lege die Oberarme am Koerper an und lass die Schultern haengen. Die Unterarme bilden einen rechten Winkel zu den Oberarmen. Lege die Handgelenke nicht ab und lass sie nicht durchhaengen.IllustrationDialog$Left little fingerKleiner Finger linksQObject(All rights reserved.Alle Rechte vorbehalten.IllustrationDialog &File&Datei MainWindow &Help&Hilfe AbcRainWidget &Help&HilfeDownloadDialog &Help&HilfeEvaluationWidget &Help&Hilfe LessonDialog &Help&Hilfe MainWindow &Help&HilfeSettingsDialog &Help&Hilfe StartWidget &Help&HilfeTrainingWidget &Help&Hilfe UpdateDialogHere you can reset all saved lesson data (the lessons will be empty as they were after initial installation)Hier koennen Sie saemtliche gespeicherte Lektionendaten zuruecksetzen (die Lektionen werden so in den urspruenglichen Zustand, wie nach der Installation, versetzt) DatabasePageLesson:  Lektion:  LessonResult@Cannot load the keyboard bitmap.0Ein Tastatur-Bitmap konnte nicht geladen werden. ErrorMessage &Pause&Pause AbcRainWidget &Pause&PauseTrainingWidget LessonLektionLessonTableSql LessonLektionProgressionWidget 2. Make sure your posture is straight and avoid looking at the keyboard. Your eyes should be directed toward the monitor at all times.2. Nehmen Sie eine aufrechte Haltung ein und vermeiden Sie es in jedem Fall auf die Tastatur zu sehen. Ihr Blick sollte stets auf den Bildschirm gerichtet sein.IllustrationDialog:Cannot load the program logo.-Das Programmlogo konnte nicht geladen werden. ErrorMessage &Close &Schliessen HelpBrowserCannot execute the update process. Please check your internet connection and proxy settings.}Das Update konnte leider nicht durchgefuehrt werden. Bitte ueberpruefen Sie Ihre Internetverbindung und die Proxyeinstellung. ErrorMessage- Instructions - Hilfetext LessonResult^Cannot create the lesson. SQL statement failed.CLektion konnte nicht erstellt werden. SQL-Statement fehlgeschlagen. ErrorMessage4Press space bar to proceedLeertaste setzt das Spiel fort AbcRainWidget Close Schliessen UpdateDialogPlease select how offen the metronome sound should appear per minuteSGeben Sie hier an, wie oft pro Minute ein akustisches Signal ausgegeben werden soll TrainingPageLCannot fill analysis table with values7Analyse-Tabelle kann nicht mit Inhalten gefuellt werden ErrorMessageHPlease enter the name of the lesson (Bitte geben Sie der Lektion einen Namen  LessonDialog$Checking lesson...Lektion ueberpruefen...DownloadDialog Check Version...Version ueberpruefen... UpdateDialogThe score is calculated as follows: ((Characters - (20 x Errors)) / Duration in minutes) x 0.4 Note that slow typing without errors results in a better ranking, than fast typing with several errors!Die Bewertung der Leistung errechnet sich wie folgt: ((Zeichen - (20 x Fehler)) / Dauer in Minuten) x 0.4 Beachten Sie, dass langsames Tippen ohne Fehler eine bessere Bewertung hervorruft, als schnelles Tippen mit vielen Fehlern!LessonTableSqlPlease wait Bitte wartenSettingsDialogFont Color: Schriftfarbe: TrainingPageFLesson content (at least one line):Diktat (mindestens eine Zeile): LessonDialogPrint ReportBericht drucken LessonResultFor every typing error the corresponding key picture is displayed on the keyboardHBei jedem Tippfehler wird das zur Taste entsprechende Sinnbild angezeigt StartWidgetOn the web:  Im Internet:  MainWindow^ exists, a new, empty database will be created.@ existiert, wird automatisch eine neue, leere Datenbank erzeugt. DatabasePage4The Error Rate shows which characters give you the most problems. The error rate is calculated from the value "Target Error" and the value "Frequency".Die Fehlerquote zeigt, welche Schriftzeichen Ihnen am meisten Probleme bereiten. Die Fehlerquote errechnet sich aus dem Wert "Soll-Fehler" und dem Wert "Vorkommen". CharTableSqlFor visual support, the remaining fingers of the home row will be colored^Zur visuellen Unterstuetzung werden die verbleibenden Finger der Grundstellung farbig markiert StartWidget$E&xit Lesson earlyLektion vorzeitig &beendenTrainingWidgetcpm and A/min undEvaluationWidget$Left middle fingerMittelfinger linksQObject(Affected directory: Betroffener Kopierpfad: QObject minutes Minuten LessonResult minutes Minuten StartWidgetminutesMinutenEvaluationWidget"&General Settings&Grundeinstellungen MainWindowError Rate:  Fehlerquote:  LessonResult8" in the General Settings. If this problem occurred after the first time the software was started, please check the write privileges on the database file." koennen Sie den Grundeinstellungen entnehmen. Wenn dieses Problem gleich nach dem ersten Start der Software auftrat, fehlen voraussichtlich die Schreibrechte auf die Datenbank-Datei. Bitte ueberpruefen Sie diese.  ErrorMessage Reset charactersSchriftzeichen zuruecksetzen CharTableSqlPShort description (120 characters max.):'Kurzbeschreibung (maximal 120 Zeichen): LessonDialog- Home Row- Grundstellung LessonResult5. Try to keep typing errors to a minimum. It is much less efficient to type fast if you are making a lot of mistakes.5. Versuchen Sie moeglichst fehlerfrei zu tippen. Es ist deutlich ineffizienter schnell zu tippen, wenn Sie dabei viele Fehler machen.IllustrationDialog(Entire Lesson)(gesamte Lektion) StartWidgetUser Data Benutzerdaten DatabasePageVPlease indicate the location of a text file7Bitte geben Sie den Speicherort fuer eine Textdatei ein StartWidget8The program will be aborted.Die Anwendung wird beendet. ErrorMessageDo you really want to delete the lesson, and all the recorded data in the context of this lesson?Wollen Sie die Lektion wirklich loeschen und damit auch alle aufgezeichneten Daten, die im Zusammenhang mit dieser Lektion stehen?  StartWidget Cpm: A/min:  LessonResult Cpm: A/min: TrainingWidgetNote: You can only download text files in TXT file format. (For more information, see the help in the manual.Hinweis: Es koennen nur Textdateien im TXT-Format heruntergeladen werden. Weitere Informationen hierzu finden Sie auch in der Hilfe. StartWidgetPHere you can select the background color@Hier koennen Sie die Hintergrundfarbe der Laufschrift veraendern TrainingPage0Press space bar to startLeertaste startet das Spiel AbcRainWidgetHere you can change the font of the ticker (a font size larger than 20 pt is not recommended)Hier koennen Sie die Schriftart der Laufschrift veraendern (eine Schriftgroesse ueber 20 Punkte wird aus Formatierungs- gruenden nicht empfohlen) TrainingPage ThumbDaumenQObject:Number of characters dictated7Anzahl der Schriftzeichen, die ingesamt diktiert wurdenLessonTableSqlDictationDiktat LessonResultSound Card Soundkarte TrainingPage ErrorsFehlerLessonTableSqlRThere are new updates for %1 available...+Es stehen Updates fuer %1 zur Verfuegung... UpdateDialogFingersFingerEvaluationWidgetLPlease enter at least one line of text1Bitte geben Sie mindestens eine Zeile Diktat ein  LessonDialogxYour data were successfully transfered to the new database! AIhre Daten wurden erfolgreich in die neue Datenbank uebertragen! QObject|The progress graph will be shown after completing two lessons.EDer Verlauf wird erst nach der zweiten absolvierten Lektion sichtbar.ProgressionWidgetCannot create the user database in your HOME directory. There may be no permission to write. TIPP10 is trying to use the original database in the program directory. You can change the path to the database in the program settings later. "Die Benutzer-Datenbank konnte nicht in Ihrem HOME-Verzeichnis angelegt werden. Eventell fehlen die Schreibrechte. Es wird nun versucht, die Original-Datenbank im Programmverzeichnis zu verwenden. Den Verzeichnispfad zur Datenbank koennen Sie anschliessend in den Einstellungen veraendern.  ErrorMessage$Replacement FilterErsetzungsfilter RegExpDialogdThe character was supposed to be typed, but wasn'teEin "Soll-Fehler" entsteht, wenn ein anderes Schriftzeichen eingegeben wurde als das hier vorgegebene CharTableSql5. Try to keep typing errors to a minimum. It is much less efficient to type fast if you are making a lot of mistakes.5. Versuche moeglichst fehlerfrei zu tippen. Es ist deutlich ineffizienter schnell zu tippen, wenn Du dabei viele Fehler machst.IllustrationDialog Level Level  AbcRainWidget2Cannot find the database Die Datenbank  ErrorMessage$ Table of Contents Inhaltsverzeichnis HelpBrowserzYour version of the software is outdated and there are no longer updates for it. The new version is available for free on the Internet at %1 Would you like to download the new version now?Ihre Version der Software ist veraltet und nicht mehr aktualisierungsfaehig. Die neue Version erhalten Sie im Internet unter %1 Moechten Sie die neue Version jetzt herunterladen? UpdateDialog,Character was mistypedYEin "Ist-Fehler" entsteht, wenn das Schriftzeichen trotz anderer Vorgabe eingegeben wurde CharTableSqlAll recorded characters (mistake quotas) of the current user will be deleted and the character list will return to its original state after initial installation! Do you really want to continue?Es werden alle aufgezeichneten Schriftzeichen (Fehlerquoten) des aktuellen Benutzers geloescht und die Zeichenliste in den urpruenglichen Zustand versetzt! Wollen Sie den Vorgang wirklich fortsetzen?  DatabasePage points Punkte LessonResult points PunkteLessonSqlModel points PunkteProgressionWidget PointsPunkteEvaluationWidget PointsPunkteProgressionWidgetYou should try to avoid using characters not supported by your keyboard layout. A filter as a regular expression is applied to all practice texts before the lesson begins. You should only make changes here if you are familiar with regular expressions.(Es sollen Schriftzeichen vermieden werden, die das aktuelle Tastaturlayout nicht unterstuetzt. Daher wird auf alle Uebungstexte vor dem Training ein Filter in Form eines regulaeren Ausdrucks angewendet. Sie sollten Aenderungen nur durchfuehren, wenn Sie sich mit regulaeren Ausdruecken auskennen. RegExpDialog Character Limit: Zeichenlimit: StartWidgetPC SpeakerPC-Lautsprecher TrainingPageTIPP10 is a free touch typing tutor for Windows, Mac OS and Linux. The ingenious thing about the software is its intelligence feature. Characters that are mistyped are repeated more frequently. Touch typing has never been so easy to learn.TIPP10 ist ein kostenloser 10-Finger-Schreibtrainer fuer Windows, Mac OS und Linux. Die Software arbeitet intelligent - Schriftzeichen, die haeufig falsch getippt werden, werden auch sofort haeufiger diktiert. So laesst sich das Zehnfingersystem schnell und effizient erlernen.IllustrationDialog Other Sonstiges OtherPage Other SonstigesSettingsDialog(Recorded error rates affect the intelligence feature and the selection of the text to be dictated. If the error rate for a certain character is excessively high it might be useful to reset the list. All recorded characters will now be deleted. Do you still wish to proceed? pDie aufgezeichneten Fehlerquoten beeinflussen die Intelligenzfunktion und damit auch die Auswahl der zu diktierenden Texte. Wenn die Fehlerquote eines bestimmten Zeichens uebermaessig hoch ist, kann es unter Umstaenden sinnvoll sein, die Liste zurueckzusetzen. Es werden nun alle aufgezeichneten Schriftzeichen geloescht. Wollen Sie den Vorgang wirklich fortsetzen?  CharTableSqlSubject:Thema: StartWidget About Ueber  MainWindow&Delete LessonLektion &loeschen StartWidgetZThis column shows all of the characters typed;Diese Spalte zeigt alle bislang eingegebenen Schriftzeichen CharTableSql$Number of points: Erreichte Punktzahl:  AbcRainWidget Time: Zeit: TrainingWidget"Welcome to TIPP10Willkommen zu TIPP10IllustrationDialogDownload LessonLektion downloadenDownloadDialogABC-Game ABC-Spiel MainWindowThe user table with error data cannot be emptied. SQL statement failed.`Die Benutzertabelle mit den Fehlerdaten kann nicht geleert werden. SQL-Statement fehlgeschlagen. ErrorMessage Speed:Geschwindigkeit: TrainingPageAdvanced levelFortgeschrittenEvaluationWidget,TIPP10 is published byTIPP10 wird herausgegeben von MainWindow&Manual&Bedienungsanleitung MainWindow, at a typing speed of 0 erreicht, bei einer Schreibgeschwindigkeit von  LessonResultfThe recorded characters were successfully deleted! FDie aufgezeichneten Schriftzeichen wurden erfolgreich zurueckgesetzt!  DatabasePage0Limitation of charactersZeichenbegrenzung RegExpDialogLicense Number Lizenznummer LicenseDialog4GNU General Public LicenseGNU General Public License MainWindowWindowsFenstereinstellungen OtherPage&Right little fingerKleiner Finger rechtsQObject$Duration of LessonDauer der Lektion StartWidget Portable VersionPortable Version MainWindow:Cannot create analysis index.)Analyse-Index kann nicht erstellt werden. ErrorMessage"Create own LessonEigene Lektion erstellen LessonDialogpIn demo mode you can enter only 10 characters per lessonIIm Demo-Modus koennen pro Lektion nur 10 Schriftzeichen eingegeben werden LicenseDialog0Press space bar to startLeertaste startet das DiktatTrainingWidget>Use native user interface style$Native Programmoberflaeche verwenden OtherPageComputerschreiben kinderleicht<br>durch multisensorisches Lernen@Computerschreiben kinderleicht
durch multisensorisches Lernen MainWindowVThe file could not be imported. Please check the spelling of the web address; it must be a valid URL and a readable text file. Please also check your internet connection. Die Datei konnte leider nicht importiert werden. Ueberpruefen Sie bitte die Schreibweise der Internetadresse, es muss sich um eine lesbare Textdatei und um eine gueltige URL handeln. Ueberpruefen Sie bitte ausserdem Ihre Internetverbindung.  ErrorMessage"You have reached  Sie haben  LessonResult,Take Home Row positionGrundstellung einnehmenTrainingWidget:Cannot create temporary file.-Temporaere Datei konnte nicht erzeugt werden. ErrorMessage typing error Tippfehler LessonResultZCannot save the lesson. SQL statement failed.JDie Lektion konnte nicht gespeichert werden. SQL-Statement fehlgeschlagen. ErrorMessager3. Bring your arms to the side of your body and relax your shoulders. Your upper arm and lower arm should be at a right angle. Do not rest your wrists and remain in an upright position.3. Legen Sie die Oberarme am Koerper an und lassen Sie die Schultern haengen. Die Unterarme bilden einen rechten Winkel zu den Oberarmen. Legen Sie die Handgelenke nicht ab und lassen Sie sie nicht durchhaengen.IllustrationDialogNHere you can change the speed of the ticker (Slider on the left: Ticker does not move until reaching the end of line. Slider on the right: The ticker moves very fast.)Hier koennen Sie die Geschwindigkeit der Laufschrift veraendern (Der Regler ganz links bedeutet, das Laufband bewegt sich erst am Ende der Zeile. Der Regler ganz rechts entspricht einem schnellen Laufband.) TrainingPage&Export LessonLektion &exportieren StartWidget&Import LessonLektion &importieren StartWidget|The dictation will only proceed if the correct key was pressedIDas Diktat wird erst fortgesetzt, wenn die richtige Taste gedrueckt wurde StartWidget &Print page Seite &drucken HelpBrowser<Filter for the keyboard layoutFilter fuer das Tastaturlayout RegExpDialogFPlease enter entire lesson content .Bitte geben Sie ein vollstaendiges Diktat ein  LessonDialogIgnore ErrorsTippfehler uebergehen LessonResult on the web im Internet MainWindowSome of your settings require a restart of the software to take effect. OEinige der Einstellungen werden erst nach einem Neustart der Software wirksam. SettingsDialog"- Separation Line - Trennlinie LessonResult&Progress of LessonsLektionenverlaufEvaluationWidget &Download LessonLektion &downloaden StartWidget Time:  Zeitpunkt:  LessonResult**Select this option if the text of the lesson will not be dictated in its intended sequence, but will be adjusted in real time to your typing errors.*Aktivieren Sie diese Option, wenn die Texte der Lektion nicht in ihrer vorgesehenen Reihenfolge diktiert, sondern in Echtzeit an die Tippfehler angepasst werden sollen. StartWidgetHere you can decide if an information window with tips is shown at the beginning of WHier koennen Sie festlegen, ob ein Informationsfenster mit Ratschlaegen beim Start von  OtherPage2Response to Typing ErrorsReaktion auf Tippfehler StartWidgetTrainingSchreibtrainingSettingsDialogIntelligence Intelligenz* StartWidget8Total duration of the lessonDauer der Lektion insgesamtLessonTableSqlThe error rate is calculated as follows: Errors / Characters The lower the error rate the better!tTippfehler in Abhaengigkeit von der Diktatlaenge (Tippfehler / Zeichen) Umso geringer die Fehlerquote, desto besser!LessonTableSql Keyboard Layout:Tastaturlayout: LanguagePage"Database Version Datenbankversion  MainWindow\Do you really want to exit the lesson early? 4Wollen Sie die Lektion wirklich vorzeitig beenden? TrainingWidget8<u>Explanation:</u><br>&nbsp;<br>Every line (separated by Enter key) is equivalent to a unit of the lesson. There are two types of lesson dictation:<br>&nbsp;<br><b>Sentence Lesson</b> - every line (sentence) will be dictated exactly how it was entered here with a line break at the end.<br>&nbsp;<br><b>Word Lesson</b> - the lines will be separated by blanks and a line break passes auomatically after at least Erlaeuterung
 
Jede Zeile (Zeilenumbruch am Ende) entspricht einer Einheit fuer das Diktat. Das Diktat kann auf zwei Arten gefuehrt werden:
 
Satzdiktat - die einzelnen Zeilen (Saetze) werden wie hier eingegeben mit einem Zeilenumbruch am Ende diktiert.
 
Wortdiktat - die einzelnen Zeilen (Worte) werden mit Leerzeichen getrennt diktiert, ein Zeilenumbruch erfolgt automatisch nach mindestens  LessonDialog$Dictation FinishedDiktat beendet TickerBoard Comparison TableVergleichstabelleEvaluationWidget &Edit &Bearbeiten StartWidgetAssistance: Hilfestellungen:  LessonResult E&xit&Beenden MainWindow E&xit&Beenden StartWidgetFDo you want to save your results? 7Sollen die Ergebnisse der Lektion gespeichert werden? TrainingWidget ReportBerichtEvaluationWidget ReportBericht LessonResult 2. Make sure your posture is straight and avoid looking at the keyboard. Your eyes should be directed toward the monitor at all times.2. Nimm eine aufrechte Haltung ein und vermeide es in jedem Fall auf die Tastatur zu sehen. Dein Blick sollte stets auf den Bildschirm gerichtet sein.IllustrationDialog4Press space bar to proceedLeertaste setzt das Diktat fort TickerBoardhTyping errors have to be removed with the return keyGTippfehler muessen zusaetzlich ueber die Ruecklauftaste entfernt werden StartWidgetFrequency Vorkommen CharTableSql0Reset &completed lessons$&Absolvierte Lektionen zuruecksetzen DatabasePagePrint LessonLektion druckenLessonPrintDialogAll results of the current lesson will be discarded! Do you really want to exit? aEs gehen alle Werte der laufenden Lektion verloren! Wollen Sie die Anwendung wirklich beenden?  MainWindowTraining LessonUebungslektionProgressionWidgetTraining LessonUebungslektionQObject characters Schriftzeichen LessonDialogCharactersSchriftzeichen CharTableSqlCharactersSchriftzeichenEvaluationWidgetHTips for using the 10 finger system:*Beachte dabei unbedingt folgende Hinweise:IllustrationDialogOpen LessonsFreie LektionenLessonTableSqlOpen LessonsFreie LektionenProgressionWidgetOpen LessonsFreie Lektionen StartWidgetUser Interface:Programmoberflaeche: LanguagePage&Cancel &Abbrechen CharTableSql&Cancel &Abbrechen DatabasePage&Cancel &AbbrechenDownloadDialog&Cancel &Abbrechen LessonDialog&Cancel &AbbrechenLessonPrintDialog&Cancel &Abbrechen MainWindow&Cancel &Abbrechen RegExpDialog&Cancel &AbbrechenSettingsDialog&Cancel &Abbrechen StartWidget&Cancel &AbbrechenTrainingWidgetRemember enabled intelligence before starting an open or own lessonQAuf aktivierte Intelligenz beim Start einer freien oder eigenen Lektion hinweisen OtherPage&Cancel A&bbrechenTrainingWidget.Number of typing errors8Anzahl der Tippfehler, die in der Lektion gemacht wurdenLessonTableSqlXCheck for new version at startup once a weekShow welcome message at startup-Willkommenfenster beim Programmstart anzeigen OtherPage4 was updated successfully! wurde erfolgreich aktualisiert! UpdateDialog"Training Lessons:Uebungslektionen: LanguagePageTyping Errors:  Tippfehler:  LessonResultVNo lesson selected. Please select a lesson.FEs wurde keine Lektion selektiert. Bitte waehlen Sie eine Lektion aus. ErrorMessage&Right middle fingerMittelfinger rechtsQObjectXPlease enter the web address to a text file:;Bitte geben Sie die Internetadresse zu einer Textdatei ein:DownloadDialog2The training lessons you have chosen are not suited for the keyboard layout. You can continue but you may have to put aside some keys from the beginning.Die gewaehlten Uebungslektionen sind nicht auf das Tastaturlayout abgestimmt. Sie koennen diese trotzdem trainieren, muessen aber unter Umstaenden von Beginn an Tastwege zuruecklegen.  LanguagePagef4. Try to remain relaxed during the typing lessons.14. Bleib waehrend des Schreibtrainings entspannt.IllustrationDialogUse Proxy!Ueber einen Proxyserver verbindenDownloadDialog Use Proxy Server!Ueber einen Proxyserver verbinden UpdateDialog6First steps in touch typing%Erste Erfahrungen im ZehnfingersystemEvaluationWidget&Name of the Lesson:Name der Lektion: LessonDialogRShow fingers to be used in the status barRZur Unterstuetzung werden die zu verwendenden Finger in der Statusleiste angezeigt StartWidget characters. diktierten Schriftzeichen. LessonDialog Training LessonsUebungslektionenLessonTableSql Training LessonsUebungslektionenProgressionWidget Training LessonsUebungslektionen StartWidget typing errors Tippfehlern LessonResultOwn LessonsEigene LektionenLessonTableSqlOwn LessonsEigene LektionenProgressionWidgetOwn LessonsEigene Lektionen StartWidgetShow KeyboardTastatur anzeigen StartWidget0Start time of the lessonStartzeitpunkt der LektionLessonTableSql`Cannot analyze the lesson. SQL statement failed.IDie Lektion konnte nicht analysiert werden. SQL-Statement fehlgeschlagen. ErrorMessage Here you can reset all recorded keystrokes and typing mistakes (the characters will be empty as they were after initial installation)Hier koennen Sie alle aufgezeichneten Tastendruecke und Tippfehler zuruecksetzen (die Schriftzeichen werden so in den urspruenglichen Zustand, wie nach der Installation, versetzt) DatabasePageerrors in Fehler inEvaluationWidgetpSelect this option to hear the sound from the sound cardVWaehlen Sie diese Option, wenn Sie die Soundausgabe ueber die Soundkarte erfolgen soll TrainingPage"Cpm" indicates how many characters per minute were entered on averagec"A/min" besagt, wie viele Schriftzeichen (Anschlaege) durchschnittlich pro Minute eingegeben wurdenLessonTableSqlThe dictation will be stopped after a specified number of correctly typed charactersNDas Diktat wird nach einer bestimmten Anzahl korrekt getippter Zeichen beendet StartWidget&Settings&Einstellungen MainWindowSettings Einstellungen LessonResult&Start TrainingSchreibtrainer &startenIllustrationDialogOpen Lesson Freie LektionProgressionWidget|<b>What happens when "Intelligence" is enabled?</b><br>With enabled intelligence, the lines to be dictated will be selected depending on the typing mistake quotas instead of dictating them in the right order. Enabling the "Intelligence" only makes sense if the lesson consists of many lines (often "Word Lessons").<br>cWas passiert bei aktivierter Intelligenz?
Bei aktivierter Intelligenz werden die Zeilen nicht der Reihenfolge nach diktiert, sondern abhaengig von den Tippfehler-Quoten die aktuell fuer den Lernerfolg sinnvollste Zeile in das Diktat einbezogen. Die Intelligenz zu aktivieren macht nur bei Lektionen Sinn, die aus sehr vielen Zeilen bestehen.
 LessonDialogPlease enter your license number (without spaces) which can be found on page 3 of your textbook:pBitte geben Sie Ihre Lizenznummer (ohne Leerzeichen) ein, die Sie im Arbeitsbuch (Schulbuch) auf Seite 3 finden: LicenseDialog>Error Correction with BackspaceFehler korrigieren LessonResult2Correction with BackspaceFehler korrigieren StartWidget Font: Schriftart: TrainingPage2Please select a text file$Bitte waehlen Sie eine Textdatei aus StartWidget@Cannot execute the SQL statement*SQL-String konnte nicht verarbeitet werden ErrorMessage&Launch TIPP10TIPP10 &startenIllustrationDialogCharacters:  Zeichen:  LessonResultChars:  Zeichen: TrainingWidgetHLesson content (at least two lines): Diktat (mindestens zwei Zeilen): LessonDialogPlease note that you get better scores for slow typing without errors, than for fast typing with lots of errors!xBeachten Sie, dass langsames Tippen ohne Fehler bessere Bewertungen hervorruft, als schnelles Tippen mit vielen Fehlern!EvaluationWidgetNote: You can only import text files in TXT file format. (For more information, see the help in the manual.Hinweis: Es koennen nur Textdateien im TXT-Format importiert werden. Weitere Informationen hierzu finden Sie auch in der Hilfe. StartWidgetNote: You can only export text files in TXT file format. (For more information, see the help in the manual.Hinweis: Es koennen nur Textdateien im TXT-Format exportiert werden. Weitere Informationen hierzu finden Sie auch in der Hilfe. StartWidget&Start Download&Download startenDownloadDialog`Notice prior to the import and export of lessons1Hinweis vor Im- und Export von Lektionen anzeigen OtherPageLeft forefingerZeigefinger linksQObjectF1. First place your fingers in the home position (this is displayed at the beginning of each lesson). The fingers return to the home row after each key is pressed.1. Die Finger nehmen zunaechst die Grundstellung ein (sie wird auch zu Beginn jeder Lektion angezeigt). Nach jedem Tippen einer Taste kehren die Finger in die Grundstellung zurueck.IllustrationDialog@For example, this equates to ...Entspricht zum Beispiel ...EvaluationWidgetThe lesson could not be updated because there is no access to the database. If this problem only occurred after the software had been running smoothly for some time, the database is expected to have been damaged (eg crashing of the computer). To check whether or not the database has been damaged, you can rename the database file and restart the software (it will create a new, empty database automatically). You can find the database path "Die Lektion konnte nicht aktualisiert werden, weil kein Zugriff auf die Datenbank moeglich ist. Falls dieses Problem erst auftrat, nachem der Schreibtrainer zuvor einige Zeit anstandslos lief, ist voraussichtlich die Datenbank beschaedigt worden (z.B. durch einen Absturz des Computers). Um zu ueberpruefen ob die Datenbank beschaedigt wurde, koennen Sie die Datenbank-Datei testweise einmal umbenennen und die Software dann neu starten (es sollte dann auomatisch eine neue, leere Datenbank angelegt werden). Den Pfad zur Datenbank " ErrorMessagetipp10-2.1.0/license_de.txt000066400000000000000000000377601274324046000155010ustar00rootroot00000000000000TIPP10 10-Finger-Schreibtrainer Version 2.1.0 Copyright (c) 2006-2011 Tom Thielicke IT Solutions Sie können die Software TIPP10 unter den Bedingungen der GNU General Public License Version 2 (siehe unten) benutzen, weitergeben und veröffentlichen. Die offiziellen Lizenzbestimmungen sind nur in englischer Sprache verfügbar. Inoffizielle, nicht rechtskräftige Übersetzungen der Lizenzbestimmungen finden Sie im Internet unter http://www.gnu.org/licenses/old-licenses/gpl-2.0-translations.html. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS tipp10-2.1.0/license_en.txt000066400000000000000000000376431274324046000155130ustar00rootroot00000000000000TIPP10 Touch Typing Software Version 2.1.0 Copyright (c) 2006-2011 Tom Thielicke IT Solutions You may use, distribute and copy the TIPP10 software under the terms of GNU General Public License version 2, which is displayed below. The official version is only available in English. Unofficial, not legally count translations of the License can be found at http://www.gnu.org/licenses/old-licenses/gpl-2.0-translations.html. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS tipp10-2.1.0/main.cpp000066400000000000000000000151641274324046000142700ustar00rootroot00000000000000/* Copyright (c) 2006-2011, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** File name: main.cpp ** ****************************************************************/ #include #include #include #include #include #include #include "def/defines.h" #include "sql/connection.h" #include "widget/mainwindow.h" #include "widget/licensedialog.h" #include "widget/illustrationdialog.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); // Set application name and domain // (this saves having to repeat the information // each time a QSettings object is created) app.setOrganizationName(APP_ORGANIZATION); app.setOrganizationDomain(APP_URL); app.setApplicationName(APP_NAME_INTERN); // Settings to get and set general settings #if APP_PORTABLE /*QSettings settings(QSettings::IniFormat, QSettings::UserScope, "portable", "settings"); settings.setPath(QSettings::IniFormat, QSettings::UserScope, QCoreApplication::applicationDirPath());*/ QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif // Read/write language, license key and show illustration flag settings.beginGroup("general"); QString languageGui = settings.value("language_gui", QLocale::system().name()).toString(); QStringList languagesGui = QString(APP_EXISTING_LANGUAGES_GUI).split(";", QString::SkipEmptyParts); QString checkDelims = "_"; bool checkSuccessful = true; for (;;) { if (languagesGui.contains(languageGui)) { break; } int rightmost = 0; for (int i = 0; i < (int)checkDelims.length(); i++) { int k = languageGui.lastIndexOf(checkDelims[i]); if (k > rightmost) rightmost = k; } // no truncations? fail if (rightmost == 0) { checkSuccessful = false; break; } languageGui.truncate(rightmost); } if (!checkSuccessful) { languageGui = APP_STD_LANGUAGE_GUI; } QString languageLayout = settings.value("language_layout", "").toString(); QString languageLesson = settings.value("language_lesson", "").toString(); QString licenseKey = settings.value("licensekey", "").toString(); bool showIllustration = settings.value("check_illustration", true).toBool(); bool useNativeStyle = settings.value("check_native_style", false).toBool(); settings.endGroup(); // Convert old keyboard layout settings to new (since v2.1.0) if (languageLayout == "") { if (languageGui != "de") { languageLayout = "us_qwerty"; if (APP_MAC) { languageLayout.append("_mac"); } else { languageLayout.append("_win"); } // Enable when English lessons available!!!!!!!! languageLesson = "en_us_qwerty"; } else { // Check user's keyboard layout (win or mac) settings.beginGroup("settings"); //! Used operation system ("win" or "mac"). QString opSystem; //! Used keyboard layout ("de", "ch", "neo", etc.). QString opLayout; //! Used swiss layout ("sg" or "sf"). QString chLayout; //! Used neo layout ("1.0" or "2.0"). QString neoLayout; opSystem = "win"; opLayout = ""; chLayout = ""; neoLayout = ""; switch (settings.value("combo_layout_ch", 0).toInt()) { case 0: chLayout = "_sg"; break; case 1: chLayout = "_sf"; break; } switch (settings.value("combo_layout", KEYBOARD_LAYOUT_STANDARD).toInt()) { case 0: opLayout = "de_qwertz"; break; case 1: opLayout = "ch_qwertz"; break; case 2: opLayout = "de_neo"; break; case 3: opLayout = "de_dvorak_v1"; break; case 4: opLayout = "de_ristome"; break; case 5: opLayout = "us_qwerty"; break; } switch (settings.value("combo_layout_neo", 0).toInt()) { case 0: neoLayout = "_v1"; break; case 1: neoLayout = "_v2"; break; } switch (settings.value("combo_layout_os", KEYBOARD_LAYOUT_MAC).toInt()) { case 0: opSystem = "win"; break; case 1: opSystem = "mac"; break; } languageLayout = opLayout; if (opLayout == "ch_qwertz") { languageLayout.append(chLayout); } if (opLayout == "de_neo") { languageLayout.append(neoLayout); languageLesson = "de_de_qwertz"; //"de_de_neo_v2"; } else { languageLesson = "de_de_qwertz"; } languageLayout.append("_" + opSystem); settings.endGroup(); } } settings.beginGroup("general"); settings.setValue("language_gui", languageGui); settings.setValue("language_layout", languageLayout); settings.setValue("language_lesson", languageLesson); settings.endGroup(); // Set windows style if (!useNativeStyle) { app.setStyle("plastique"); } // Translation // Common qt widgets QTranslator translatorQt; translatorQt.load("qt_" + languageGui, ":/languages/"); app.installTranslator(&translatorQt); // Content (own translation files) QTranslator translatorContent; translatorContent.load("tipp10_" + languageGui, ":/languages/"); app.installTranslator(&translatorContent); // Set path to the db if arg parameter is set if (argc > 1) { settings.beginGroup("database"); settings.setValue("pathpro", QString::fromLatin1(argv[1]) + "/" + APP_USER_DB); settings.endGroup(); } // Create database connection if (!createConnection()) { // Cannot find or open database // -> exit program return 1; } // Show illustration widget at the beginning if not disabled by the user if (showIllustration) { IllustrationDialog illustrationDialog(0); illustrationDialog.exec(); } // Create main window object MainWindow window; window.show(); // Start the event loop return app.exec(); } tipp10-2.1.0/metronome.aif000066400000000000000000000044501274324046000153220ustar00rootroot00000000000000FORM AIFFCOMM@DSSND`M $njUr3E5l [M Ԣł°^-&M_5Z:>B&) #d\LI/ OX OBhfM=MV*@7b\*yg :=WBQ"WH*[,T7p6=kX\dmA,)@T7VhJATe)!o4&7/72+T.U h 6 J<=-W 8PQ6pB\! #  G ,6-<` $z +\` Sv~O@'8n29L>`G lP`>JLJBTN1\tnJh#F?V$l~wviL7$ E  w <%yD/:. P#p=M^FJ (  J 9 m / /3T?w,gV@meXe$O)Ng@yPl [>!ww{ryT" w cpj,Z"BF[)'qebk 7]Q`K!Pk~~hB~AW`n [|*T7MovNTFL71p'fIsY\]9?{4B4]QGyGjfuBOej#*s|4P W$OV`}>jAC,M`"u-,~$vjT. m?AMy/v8N`e!la7' |^nOfFlMx[+cWulymeZSE8) $A2PDf[pdoclbh\[M>/(tipp10-2.1.0/metronome.wav000066400000000000000000000134501274324046000153600ustar00rootroot00000000000000RIFF WAVEfmt DPAD data(`M n$UjrE3l5 [M Ű^-&M_Z5:>B&) #d\LI/O X O BhfM=MV*@7b\*yg :W=B"QHW[*T,7p6=kX\dmA,)@T7VhJATe)o!&477/2T+U. h 6 J <=-W 8PQ6pB\ !#  G ,6-<` $z +\` Sv~O@'8n29L>`G lP`>JLJBTN1\tnJh#F?V$l~wviL7$E  w < %yD/:. P#p=M^FJ ( J 9 m / / 3T?w,gV@meXe$O)Ng@yPl [>!ww{ryT" w cpj,Z"BF[)'qebk 7]Q`K!Pk~~hB~AW`n [|*T7MovNTFL71p'fIsY\]9?{4B4]QGyGjfuBOej#*s|4P W$OV`}>jAC,M`"u-,~$vjT. m?AMy/v8N`e!la7' |^nOfFlMx[+cWulymeZSE8) $A2PDf[pdoclbh\[M>/(tipp10-2.1.0/release/000077500000000000000000000000001274324046000142515ustar00rootroot00000000000000tipp10-2.1.0/release/help/000077500000000000000000000000001274324046000152015ustar00rootroot00000000000000tipp10-2.1.0/release/help/de/000077500000000000000000000000001274324046000155715ustar00rootroot00000000000000tipp10-2.1.0/release/help/de/content/000077500000000000000000000000001274324046000172435ustar00rootroot00000000000000tipp10-2.1.0/release/help/de/content/about.html000066400000000000000000000027671274324046000212570ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Spenden  |  Inhaltsverzeichnis

12. Impressum

TIPP10 wird herausgegeben von:
 

 
Tom Thielicke IT Solutions
 
Christburger Straße 46
D-10405 Berlin
Germany
 
Tel. +49 (0)30 80 611 532
Fax +49 (0)30 80 611 533
 
http://www.thielicke.org
 
 

 Spenden  |  Inhaltsverzeichnis

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/behaviour.html000066400000000000000000000050601274324046000221160ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Installation  |  Inhaltsverzeichnis  |  Programmstart 

4. Ergonomie am Arbeitsplatz

Tipps zur Anwendung des Zehnfingersystems
 
1. Die Finger nehmen zunächst die Grundstellung ein (sie wird auch zu Beginn jeder Lektion angezeigt). Nach jedem Tippen einer Taste kehren die Finger in die Grundstellung zurück.
 

 
2. Nehmen Sie eine aufrechte Haltung ein und vermeiden Sie es in jedem Fall auf die Tastatur zu sehen. Ihr Blick sollte stets auf den Bildschirm gerichtet sein.
 
3. Legen Sie die Oberarme am Körper an und lassen Sie die Schultern hängen. Die Unterarme bilden einen rechten Winkel zu den Oberarmen. Legen Sie die Handgelenke nicht ab und lassen Sie sie nicht durchhängen.
 
4. Bleiben Sie während des Schreibtrainings entspannt.
 
5. Versuchen Sie möglichst fehlerfrei zu tippen. Es ist deutlich ineffizienter schnell zu tippen, wenn Sie dabei viele Fehler machen.
 
6. Einmal mit dem Zehnfingersystem angefangen, sollten Sie es tunlichst vermeiden wieder zu Ihrem "alten System" zurück zu wechseln (auch wenn es mal schnell gehen muss).
 

 Installation  |  Inhaltsverzeichnis  |  Programmstart 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/donate.html000066400000000000000000000053161274324046000214100ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Lizenzbestimmungen  |  Inhaltsverzeichnis  |  Impressum 

11. Spenden

Sollte Ihnen TIPP10 gut gefallen, würden wir uns sehr freuen, wenn Sie das Projekt mit einem Geldbetrag unterstützen würden. Nur so kann TIPP10 auch weiterhin kostenlos angeboten, gepflegt und weiterentwickelt werden.
 
Sie können per Banküberweisung, Paypal oder über die Post spenden.
 
Vielen herzlichen Dank!!!
 
 
Spenden per Banküberweisung:
 
Tom Thielicke
KTO: 9001306
BLZ: 76050101
Sparkasse Nürnberg
 
Bitte geben Sie als Verwendungszweck "TIPP10 Spende" und optional Ihre E-Mail-Adresse an.
 
Überweisungen außerhalb Deutschlands:
Tom Thielicke
IBAN: DE29760501010009001306
BIC: SSKNDE77XXX
 
 
Spenden über PayPal:
 
Um über PayPal zu spenden, rufen Sie bitte die Internetseite http://www.tipp10.com in Ihrem Browser auf. Unter dem Menüpunkt Spenden finden Sie den Direktlink zum Paypal-Spendenkonto.
 
 
Spenden per Post (Scheck oder Briefmarken):
 
Tom Thielicke IT Solutions
Christburger Straße 46
10405 Berlin
Germany
 

 Lizenzbestimmungen  |  Inhaltsverzeichnis  |  Impressum 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/features.html000066400000000000000000000320611274324046000217510ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Einführung  |  Inhaltsverzeichnis  |  Installation 

2. Merkmale von TIPP10

2.1 Programmeigenschaften

2.1.1 Intelligente Übungslektionen
 
Die Texte der Lektionen reagieren individuell auf Ihre Tippfehler. Häufig falsch getippte Buchstaben werden sofort intensiver wiederholt als richtig getippte Zeichen. Dieses System ermöglicht Ihnen, Tippfehler schnell in den Griff zu bekommen und das Zehnfingersystem effizient und fehlerfrei zu erlernen. Zudem verspricht es Ihnen Abwechslung, da kein Diktat dem anderen gleicht.
20 aufeinander aufbauende Übungslektionen gewöhnen Sie schrittweise an alle Tasten der Tastatur. Im Sprachgebrauch häufig verwendete Schriftzeichen erlernen Sie dabei früher und häufiger, als selten verwendete Schriftzeichen.
 
 
2.1.2 Laufschrift und virtuelle Hilfetastatur
 
Ein in der Schriftart, der Geschwindigkeit und farblich einstellbares Laufband ermöglicht Ihnen kontinuierlichen Schreibfluss. Farbig angezeigte Tasten und Tastwege auf einer virtuellen Tastatur unterstützen Sie bei der korrekten Benutzung der verschiedenen Finger und der Einhaltung der Grundstellung. Zusätzlich werden die zu verwendenden Finger in einer Statusleiste erklärt und Informationen über Fehlerzahl und Anschläge pro Minute angezeigt.
 
 
2.1.3 Lernstatistik
 
Nach jedem Schreibtraining erhalten Sie einen ausführlichen und druckbaren Bericht, der die absolvierte Lektion bewertet. Eine Auflistung aller vollzogenen Lektionen mit Informationen über Dauer, Fehlerzahl, Anschläge pro Minute und einer Bewertung gibt Ihnen Auskunft über Ihre vollbrachten Leistungen. Ein Verlaufsdiagramm der Lektionen zeigt Ihren Fortschritt und lässt Sie Ihre Leistungen individuell vergleichen. Zusätzlich zeigt Ihnen TIPP10 die Fehlerquoten aller im Schreibtraining verwendeten Schriftzeichen und Finger an. So sehen Sie sofort, welche Zeichen und Finger Ihnen noch Schwierigkeiten bereiten.
 
 
2.1.4 Freie und eigene Lektionen
 
Wenn Sie das Zehnfingersystem schon etwas beherrschen und sich vor allem in Punkto Fehlerquote und Schreibgeschwindigkeit verbessern wollen, können Sie auch freie und eigene Lektionen absolvieren. Freie Lektionen bieten Diktate zu bestimmten Themen. Auf diese Weise lassen sich gezielt bestimmte Texteigenschaften trainieren, wie sie z.B. beim Programmieren oder in Gesetzestexten vorkommen. Eigene Lektionen dienen dagegen dazu, selbst erstellten Text in den Schreibtrainer TIPP10 zu laden, um sich diesen anschließend diktieren zu lassen.
 
 
2.1.5 Umfangreiche Anpassungsmöglichkeiten
 
Sie können selbst festlegen, wie eine Lektion gesteuert wird. So lässt sich die Dauer der Lektion individuell festlegen, das Verhalten des Schreibtrainers auf Tippfehler bestimmen und welche visuellen Hilfestellungen Sie bei dem Schreibtraining unterstützen sollen. In den Grundeinstellungen der Software lassen sich zudem weitere Anpassungen vornehmen, falls Sie beispielsweise eine andere Geschwindigkeit des Laufbands oder eine größere Schrift bevorzugen.
 
 
2.1.6 Plattformunabhängig und mehrsprachig
 
TIPP10 ist für die Betriebsysteme Windows, Mac OS X und diverse Linuxdistributionen verfügbar. Die Software wird derzeit in den Sprachen Deutsch und Englisch angeboten, außerdem können Sie zwischen verschiedenen Tastaturlayouts wählen. Neben dem deutschen Tastaturlayout, kann auch das Layout der Schweiz, das Layout der USA oder die alternativen Tastaturlayouts NEO, Dvorak und RISTOME aktiviert werden. Die Sprache der Programmoberfläche, die Sprache der Lektionen und das Tastaturlayout können getrennt voneinander eingestellt werden.
 

2.2 Systemanforderungen

Um TIPP10 verwenden zu können, benötigen Sie einen herkömmlichen Computer mit einem Windows-, Macintosh- oder Linux-Betriebsystem.
Unterstützt werden
- Windows 98, 2000, XP, Vista und 7
- Mac OS X Version 10.3.x oder höher (PPC- oder Intelprozessor)
- diverse Linux-Distributionen (Ubuntu, Kubuntu, OpenSuse, Puppy, Redhat, u.a.)
Da die dynamische Erstellung der Lektionen zur Laufzeit zusätzliche Rechenzeit benötigt, sollte der Computer über ausreichend Arbeitsspeicher (mindestens 64 MB) und Prozessorleistung (mindestens 800 Mhz) verfügen. Zudem sollte Ihre Grafikkarte und Ihr Monitor mindestens 16 Millionen Farben (16 Bit) und eine Auflösung von mindestens 800x600 Pixel darstellen können.
 

2.3 Benutzer und ihre Daten

2.3.1 Vorwort
 
Das Thema Benutzerverwaltung wird von den TIPP10-Benutzern immer wieder angesprochen. Version 1 speicherte die Daten des Benutzers noch in einer Datenbank (tipp10.db), die sich im Programmverzeichnis von TIPP10 befand. Dies hatte den Nachteil, dass TIPP10 eigentlich nur von einer Person pro Computer benutzt werden konnte. Es wurde immer die gleiche Datenbank verwendet, obwohl Lektionen, Fehlerquoten und somit die Anpassung des Diktats pro Benutzer anders ausfallen. Zudem machte diese Art der Verwaltung auch Probleme, wenn TIPP10 im Netzwerk eingesetzt wurde, da oftmals keine Schreibrechte für das Programmverzeichnis vorhanden waren.
 
Daher wurde zuerst die Möglichkeit in Betracht gezogen, eine einfache und anwenderfreundliche Benutzerverwaltung mit Anmeldung zu integrieren. Leider entstehen durch eine Anmeldung zahlreiche weitere Anforderungen an die Software. So muss eine Benutzerverwaltung existieren, mit der einzelne Benutzer geändert und gelöscht werden können, zudem wird die Weiterentwicklung und Aktualisierungsmöglichkeit von Software und Datenbank durch die Benutzerführung deutlich erschwert.
 
TIPP10 soll ein schlichtes und einfach zu bedienendes Programm bleiben. Da der Großteil aller Benutzer von TIPP10 nur mit einem Account pro Computer arbeitet, wurde seit Version 2.0 zu folgenden Alternativen gegriffen, um die Datenbank zu handhaben:
 
 
2.3.2 Portable Version (Windows)
 
Die portable Version von TIPP10 speichert die Daten direkt im Programmverzeichnis ab und kann daher immer nur von einer Person verwendet werden. Dafür bietet Sie aber den Vorteil der portablen Nutzung und kann so ohne Datenverlust z.B. mit Hilfe eines USB-Sticks auf verschiedenen Computern gestartet werden.
 
Die Datenbank tipp10v2.db mit den Benutzerdaten und die Datei settings.ini mit den gewählten Programmeinstellungen ist bei der portablen Version unter folgendem Pfad zu finden:

Programmverzeichnis\portable\

Das Verzeichnis portable wird beim ersten Programmstart automatisch erzeugt.
 
 
2.3.3 Installierbare Version (Windows, Mac OS, Linux)
 
Die installierbare Version von TIPP10 erzeugt beim ersten Programmstart eine neue Datenbank tipp10v2.db im HOME-Verzeichnis des Benutzers.
 
Bei Windows ist das Verzeichnis normalerweise unter folgendem Pfad zu finden:

C:\Dokumente und Einstellungen\Benutzername\Anwendungsdaten\TIPP10\

Bei MacOS ist das Verzeichnis normalerweise unter folgendem Pfad zu finden:

/Users/Benutzername/Library/Application Support/TIPP10/

Bei Linux ist das Verzeichnis normalerweise unter folgendem Pfad zu finden:

/home/Benutzername/TIPP10/

Im Ordner TIPP10 liegt dann die Datenbank tipp10v2.db. Anschließend kann bei Bedarf der Pfad zur Datenbank in den Grundeinstellungen von TIPP10 angepasst werden.
 
Die Vorteile dieser Art der Datenbankverwaltung:
1. Der "normale" TIPP10-Nutzer mit einem eigenen Computer und einem Account kann TIPP10 wie gewohnt nutzen, zudem kann er den Speicherort der Datenbank (z.B. für Datensicherungen) individuell festlegen.
2. Schulen oder andere Institutionen mit vielen Benutzeraccounts pro Computer, jedoch ohne zentralen Dateiserver, können TIPP10 gemeinsam nutzen. Für jeden Benutzer, der das Programm aufruft, wird automatisch eine individuelle Datenbank im jeweiligen HOME-Verzeichnis angelegt.
3. Die Nutzung von TIPP10 im Netzwerk ist auch ohne Probleme möglich. Das ausführbare Programm wird vom Dateiserver zur Verfügung gestellt, die Datenbank aber auf dem Client erzeugt und verwendet. Auf diese Weise bestehen Schreibrechte auf die Datenbank und der relativ hohe Datentransfer zur Datenbank (bedingt durch die Intelligenzfunktion) kann vollständig vom Client übernommen werden.
 
Leider wird aber durch diese Art der Datenbankverwaltung eine Benutzer-Klientel ausgesperrt, und zwar mehrere Personen die einen Computer mit nur einem Benutzeraccount verwenden. Aber auch hierfür gibt es eine Lösung:
 
 
2.3.4 Parameterübergabe des Datenbankpfads
 
TIPP10 kann mit Hilfe eines Parameters aufgerufen werden, der dem Programm einen aktuellen Datenbankpfad übermittelt. So ist es möglich, für jeden Benutzer eine Programmverknüpfung mit eigenem Datenbankpfad anzulegen.
 
Unter Windows sollten Sie dazu eine neue Verknüpfung zu der Datei tipp10.exe erstellen. In den Eigenschaften der Verknüpfung können Sie dann den Pfad als Programmparameter eingeben.
 

 
Beispieleingabe unter Windows:

"C:\Programme\TIPP10\tipp10.exe" "C:/tipp10/user1"

Beachten Sie dabei unbedingt:
1. Befehl und Parameter sollten in Anführungszeichen gefasst werden
2. der Pfad wird mit normalen Schrägstrichen (Slash: /) angegeben
3. der Pfad gibt das Verzeichnis zur Datenbank an und nicht die Datenbank-Datei selbst
4. der Pfad endet ohne Schrägstrich (Slash)
 
 
Unter MacOS geben Sie den Parameter hinter den Programmaufruf über das Terminal ein, also z.B.:

./tipp10 "/tipp10/user1"


 
 
Auch unter Linux geben Sie den Parameter einfach hinter den Programmaufruf in das Terminal ein, also z.B.:

./tipp10 "/tipp10/user1"

 
In dem Verzeichnis user1 wird beim ersten Programmaufruf über die Verknüpfung automatisch eine neue Datenbank erzeugt. Beachten Sie aber unbedingt, dass das Verzeichnis bereits existieren muss!
 

 Einführung  |  Inhaltsverzeichnis  |  Installation 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/game.html000066400000000000000000000044241274324046000210460ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Grundeinstellungen  |  Inhaltsverzeichnis  |  Technische Unterstützung 

8. ABC-Spiel

Mit dem ABC-Spiel lassen sich Tastschreibfertigkeiten spielerisch trainieren. Starten Sie das Spiel, indem Sie auf der Startseite das Menü Gehe zu auswählen und dann auf ABC-Spiel klicken.
 

 
Ziel des Spiels ist es, herabfallende Buchstaben zu tippen, bevor sie den Boden erreichen. Sobald ein Buchstabe den Boden berührt, ist das Spiel verloren. Für jeden getroffenen Buchstaben erhalten Sie einen Punkt, für jedes falsch getippte Zeichen wird Ihnen ein Punkt abgezogen.
 
Über die Leertaste wird das Spiel gestartet. Versuchen Sie nun alle erscheinenden Buchstaben möglichst flott zu tippen, um sie vor der Bodenberührung zu schützen. Je höher das Level, desto mehr Buchstaben erscheinen und desto schneller fallen sie herab.
 

 Grundeinstellungen  |  Inhaltsverzeichnis  |  Technische Unterstützung 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/installation.html000066400000000000000000000373011274324046000226360ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Merkmale von TIPP10  |  Inhaltsverzeichnis  |  Ergonomie am Arbeitsplatz 

3. Installation

TIPP10 können Sie kostenlos aus dem Internet herunterladen. Geben Sie dazu die Internetadresse http://www.tipp10.com in einen Browser ein, wählen anschließend unter dem Menüpunkt Download die für Ihren Computer passende Version von TIPP10 und speichern die Datei auf Ihrem Computer.
 

3.1 Update

Sollten Sie TIPP10 bereits besitzen, können Sie auf die aktuelle Programmversion umsteigen ohne Ihre gespeicherten Daten zu verlieren.
Installieren Sie dazu TIPP10 einfach über die existierende Version ohne sie vorher zu deinstallieren. Ihre bisherigen Daten bleiben erhalten und Ihre Datenbank wird beim ersten Programmstart auf den neuesten Stand gebracht.
Bei der portablen Windowsversion müssen Sie darauf achten, dass der Ordner portable innerhalb des TIPP10-Verzeichnisses erhalten bleibt. Sie erreichen dies, indem Sie den Ordner portable der alten Version in das Verzeichnis der neuen Version kopieren.
 

3.2 Installation unter Windows

TIPP10 für Windows gibt es in zwei Ausführungen. Als installierbare Version und als portable Version. Die installierbare Version besitzt eine Installationsroutine, kann also nach der Installation über das Startmenü gestartet werden und legt für jeden Windowsbenutzer eine eigene Datenbank an. Sie kann außerdem im Netzwerk verwendet werden. Die portable Version dagegen ist geeignet, um sie z.B. von einem USB-Stick zu starten. Sie muß nicht installiert werden, ist aber auch nur für einen Benutzer geeignet (da die Daten direkt im Programmverzeichnis gespeichert werden).
 
 
3.2.1 Installierbare Version
 
Um das Programm TIPP10 unter Windows zu installieren, starten Sie die Datei tipp10_win_2-1-0.exe indem Sie einen Doppelklick auf das Dateisymbol ausführen. Anschließend wird ein Installationsprogramm gestartet.
 
Zunächst können Sie die Sprache wählen, die für die Installation verwendet wird. Diese Einstellung hat keine Auswirkung auf die Sprache, die später im Programm selbst verwendet wird. Bestätigen Sie Ihre Wahl, indem Sie auf den Button OK klicken.
 

 
Nach einem Klick auf Weiter werden Sie im nächsten Schritt gebeten, die Lizenzvereinbarung zu akzeptieren. Lesen Sie sich die Vereinbarung sorgfältig durch. Erst nachdem Sie diese akzeptiert haben, können Sie die Installation mit einem Klick auf den Button Weiter fortsetzen.
 
Nun werden Sie aufgefordert, ein Verzeichnis anzugeben, in dem TIPP10 installiert werden soll. Im Normalfall sind hier keine Modifizierungen nötig, Sie können aber bei Bedarf ein eigenes Verzeichnis angeben oder durch Klick auf Durchsuchen direkt auswählen.
 
Nach einem Klick auf Weiter werden Sie gefragt, welchen Namen der Ordner in Ihrem Windows-Startmenü tragen soll. Auch hier können Sie bei Bedarf einen eigenen Namen festlegen. Anschließend können Sie die Installation über den Button Weiter fortführen.  
In einem vorletzten Schritt vor dem eigentlichen Installieren der Dateien, werden Sie noch gefragt, ob eine Programmverknüpfung auf Ihrem Desktop angelegt werden soll. Wenn Sie dies wünschen, versehen Sie Desktop-Symbol über einen Mausklick mit einem Haken. Andernfalls kann das Programm nach der Installation nur über das Windows-Startmenü gestartet werden. Bestätigen Sie Ihre Wahl nun wieder mit einem Klick auf den Button Weiter.
 
Jetzt wird Ihnen eine Zusammenfassung der vorgenommenen Einstellungen angezeigt und Sie können das Kopieren der Dateien mit einem Klick auf den Button Installieren einleiten. Anschließend werden die Dateien extrahiert und installiert.
 
Eine Meldung informiert Sie zum Schluss über die erfolgreiche Installation und bietet Ihnen die Möglichkeit, das Programm direkt zu starten. Wünschen Sie dies nicht, entfernen Sie einfach den Haken bei TIPP10 starten. Beenden Sie nun die Installation mit einem Klick auf den Button Fertigstellen. Das Programm wurde nun erfolgreich installiert.
 
 
3.2.2 Portable Version
 
Die portable Version von TIPP10 liegt als ZIP-Archiv vor und Sie müssen diese zuerst entpacken. Normalerweise sollte es ausreichen, wenn Sie einen Doppelklick auf die Datei tipp10_win_portable_2-1-0.zip ausführen und den Extrahierungs-Schritten von Windows folgen. Sollten Sie über kein Programm zum Entpacken von ZIP-Dateien verfügen, müssen Sie erst eine geeignete Software, z.B. WinZIP oder WinRAR, installieren.
 
Nachdem Sie die Datei entpackt haben, sollten Sie einen Ordner tipp10_win_portable_2-1-0 vorfinden. In diesem Ordner befinden sich die eigentlichen Programmdateien und hier werden auch Ihre Ergebnisse gespeichert. Sie können den Ordner nun bei Bedarf auf ein externes Laufwerk (z.B. einen USB-Stick) verschieben und TIPP10 so von jedem Windows-PC ausführen. Um TIPP10 zu starten, navigieren Sie einfach in den Ordner tipp10_win_portable_2-1-0 und starten Sie die Datei tipp10.exe mit einem Doppelklick.
 
TIPP10 erstellt nach dem ersten Start eine neue Benutzerdatenbank tipp10v2.db innerhalb des Ordners, um Ihre persönlichen Ergebnisse zu speichern. Mehr Informationen zu der Speicherung der Daten finden Sie im Kapitel 2.3.
 
 

3.3 Installation unter Mac OS

Die Macintosh-Version von TIPP10 wird als Imagedatei ausgeliefert. Führen Sie einen Doppelklick auf die Datei tipp10_mac_2-1-0.dmg (eventuell sehen Sie die Endung .dmg nicht) aus, um die Lizenzvereinbarung anzuzeigen.
 
Lesen Sie sich die Vereinbarung sorgfältig durch. Erst nachdem Sie diese akzeptiert haben, wird das Image verbunden und es wird Ihnen das Installationsfenster angezeigt.
 

 
Ziehen Sie nun einfach mit der Maus das Icon TIPP10 in den Ordner Programme. TIPP10 ist nun installiert und befindet sich in Ihren Programmen. Sie können nun bei Bedarf das Image über den Finder auswerfen und die Imagedatei löschen. Sie benötigen diese Datei nun nicht mehr.
 
Um TIPP10 zu starten, öffnen Sie den Finder und wählen Sie im linken Menü Programme aus. Jetzt können Sie das Programm starten, indem Sie auf der rechten Seite das Icon TIPP10 doppelt anklicken.
 
Sollten Sie ohne Umwege jederzeit auf das Programm zugreifen wollen, können Sie das Icon auch mit der Maus auf Ihren Schreibtisch oder das Dock bewegen.
 

3.4 Installation unter Linux

Derzeit existieren Installationsanleitungen für die Linux-Distributionen Ubuntu, Kubuntu, OpenSuse und Puppy Linux. TIPP10 sollte aber auch unter anderen Linux-Systemen reibungslos laufen.
 

3.4.1 (K)Ubuntu Linux
 
Sie können TIPP10 unter (K)Ubuntu über ein fertiges Debian-Paket und den Paketmanager installieren oder manuell über die herkömmliche Weise vornehmen.
Ein aktuelles Wiki für die Installation von TIPP10 unter Ubuntu finden Sie auch im Internet unter http://wiki.ubuntuusers.de/Schreibtrainer.
 
Installation über den Paketmanager
 
Um das fertige Debian-Paket zu installieren, laden Sie die Datei tipp10_debian_2-1-0.deb von der Projektseite herunter. Anschließend können Sie auf den jeweiligen Paketmanager Ihrer Distribution zurückgreifen, um das Paket zu installieren. Unter Ubuntu ist das normalerweise gdebi, unter Kubuntu die Softwareverwaltung oder gdebi-kde. Genauere Informationen zum Installieren von Debian-Paketen finden Sie unter http://wiki.ubuntuusers.de/Paketinstallation_DEB.
Nach der Installation können Sie TIPP10 über Anwendungen - Bildung - TIPP10 aus dem Startmenü heraus starten.
 
Manuelle Installation
 
Um TIPP10 auf die manuelle Weise zu installieren, laden Sie das Archiv tipp10_linux_v2-1-0.tar.gz von der Projektseite herunter. Das Archiv enthält bereits eine fertig ausführbare Programmdatei tipp10. Der Ordnung halber sollte man mit den folgenden Befehlen den Programmordner nach /opt/ verschieben und eine Verknüpfung in /usr/local/bin/ anlegen:

sudo tar -xzf tipp10_linux_v2-1-0.tar.gz -C /opt/
sudo ln -s /opt/tipp10/tipp10 /usr/local/bin/

Das Programm kann nun über das Terminal mit folgendem Befehl gestartet werden:

tipp10

Um nun einen Starteintrag zu erstellen, erzeugen Sie mit einem Editor und mit Root-Rechten die Datei /usr/share/applications/tipp10.desktop und fügen diesen Inhalt ein:

[Desktop Entry]
Encoding=UTF-8
Name=TIPP10
Comment=Touch Typing Software
Comment[de]=10-Finger-Schreibtrainer
Exec=tipp10
Icon=/opt/tipp10/tipp10.png
Terminal=false
Type=Application
Categories=Education;

Nach dem Speichern der Datei lässt sich TIPP10 über Anwendungen - Bildung - TIPP10 aus dem Startmenü heraus starten.
 

3.4.2 OpenSuse
 
Folgende Anleitung wurde getestet mit OpenSuse 10.1.

1. Laden Sie die Datei tipp10_linux_v2-1-0.tar.gz von der Projektseite herunter.

2. Archiv entpacken. Führen Sie die folgenden Befehle in Ihrem Terminal aus:

tar -xvvzf tipp10_linux_*.tar.gz
rm tipp10_linux_*.tar.gz
ln -s /$HOME/tipp10 /$HOME/Desktop/tipp10
cd $HOME

3. Öffnen Sie auf dem Desktop den Ordner tipp10.

4. Um das Programm zu starten führen Sie die Datei tipp10 aus.

5a. Sollte TIPP10 nach dem Start den Fehler Nummer 309 melden, schliessen Sie zuerst TIPP10.

5b. Führen Sie anschließend den folgenden Befehl in Ihrem Terminal aus:

chmod u+w $HOME/tipp10/tipp10v2.db

5c. Starten Sie nun erneut TIPP10 (indem Sie die Datei tipp10 ausführen).
 

3.4.3 Puppy Linux

Vielen Dank an Steffen Götz für die Veröffentlichung dieser Anleitung!
 
1. Kompilierumgebung einrichten (wenn nicht schon getan)
2. glibc auf Version 2.5 updaten
3. TIPP10 entpacken
4. Datei tipp10 starten
5. Desktopverknüpfung erstellen und evtl. Menüeintrag
 
zu 1:
Es gibt verschiedene Möglichkeiten, Puppy-Linux zu benutzen. In erster Linie "live" (CD, USB, etc.) oder von Festplatte (minimal oder richtige Installation - hierzu wird aber bereits ein Bootloader benötigt, z.B. Grub).
Kompilierumgebung einrichten bei CD-, USB-, und mimimal Nutzung:
a) Die Datei devx_XXX.sfs downloaden (ftp://ibiblio.org/pub/linux/distributions/puppylinux/). XXX steht für die Puppy-Version (z.B. 2.17). Die Datei muß sich im gleichen Verzeichnis befinden wie die Datei pup_save_XXX.2fs!
b) Kurztest: cc auf der Konsole eingeben, die Antwort sollte "cc: no input files" lauten (evtl. einen Reboot durchführen).
Bei der richtigen Festplattenistallation ist die Einrichtung der Kompilierumgebung etwas komplizierter. Da es hier um TIPP10 geht, wird dieser Vorgang nicht mehr genauer erläutert, im Internet finden sich dazu aber weitere Informationen.
 
zu 2:
Klick auf install (Desktop), Klick auf PETget (und nochmal), glibc-2.5 auswählen und den Anweisungen folgen (thank you Barry&Co). Die Installation dieser call-library ermöglicht die Installation vieler Programme unter Puppy, da sie etwas moderner ist (nptl).
 
zu 3:
tipp10v2_linux_v2-1-0.tar.gz in einem geeigneten Verzeichnis ablegen (z.B. /root/my-applicatios) und entpacken (draufklicken). Siehe dazu auch die Anleitung für die Installation unter OpenSuse im Kapitel 3.3.1.
 
zu 4:
In das Verzeichnis tipp10 wechseln und auf die Datei tipp10 klicken. Voila!? Ansonsten eine Konsole öffnen (Rechtsklick, window, terminal here) und ./tipp10 eingeben.
 
zu 5:
Abschließend kann man die Datei auch noch auf den Desktop ziehen und mit einem entsprechendem Icon versehen (Kontextmenü). Für den Eintrag in das Menü (/root/.jwmrc) siehe Puppy-Linux Dokumentation.
 

 Merkmale von TIPP10  |  Inhaltsverzeichnis  |  Ergonomie am Arbeitsplatz 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/introduction.html000066400000000000000000000064041274324046000226560ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Inhaltsverzeichnis  |  Merkmale von TIPP10 

1. Einführung

TIPP10 ist ein kostenloser 10-Finger-Schreibtrainer für Windows, Mac OS und Linux. Die Software ist einfach zu bedienen und besitzt eine übersichtliche Oberfläche. Sie erlaubt es auch Einsteigern sich sofort zurechtzufinden und ohne Umwege mit dem Training zu beginnen. Intelligente Übunglektionen, sinnvolle Hilfestellungen und eine umfangreiche Lernstatistik lassen Sie das Zehnfingersystem sehr schnell und effizient erlernen. Zudem können Sie das Training mit Hilfe eines Tippspiels, freien Lektionen und eigenen Lektionen individuell erweitern.
 
Die Projektseite im Internet finden Sie unter http://www.tipp10.com. Die Systemanforderungen der Software finden Sie im Kapitel 2.2 und die Lizenzbestimmungen im Kapitel 10.
 
Wenn die Software von mehreren Benutzern an einem PC oder im Netzwerk eingesetzt werden soll, beachten Sie bitte das Kapitel 2.3. Da TIPP10 alle Daten des Benutzers individuell in einer Datenbank speichert, sind in diesem Kapitel einige Tipps zur Verwendung der Datenbankdatei aufgeführt.
 
Sollte Ihnen TIPP10 gut gefallen, würden wir uns sehr freuen, wenn Sie das Projekt mit einem Geldbetrag unterstützen würden. Nur so kann TIPP10 auch weiterhin kostenlos angeboten, gepflegt und weiterentwickelt werden. Weitere Informationen dazu finden Sie im Kapitel 11.
 
Die Software TIPP10 wurde im Juli 2006 in der Version 1.0 veröffentlicht und seither umfangreich weiterentwickelt. Sie erhält durchwegs positive Kritik in Printmedien und Internet, vor allem aber von den Nutzern selbst. Außerdem lehrt TIPP10 an zahlreichen Schulen, Universitäten und Lerninstituten im deutsch- und englischsprachigen Raum erfolgreich das Zehnfingersystem. TIPP10 wird von Tom Thielicke IT Solutions entwickelt und vertrieben.
 

 Inhaltsverzeichnis  |  Merkmale von TIPP10 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/lessons.html000066400000000000000000000225521274324046000216250ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Programmstart  |  Inhaltsverzeichnis  |  Trainingsparameter 

6. Schreibtraining

6.1 Lektionen

Auf der linken Seite des Startfensters befindet sich die Lektionenauswahl. TIPP10 unterscheidet drei Arten von Lektionen, die über das Register (die "Tabs" mit dem Uhr-, Glühbirnen- und Stiftsymbol) ausgewählt werden können - Übungslektionen, Freie Lektionen und Eigene Lektionen.
 

 
Nachfolgend werden die einzelnen Register genauer erläutert:
 
 
6.1.1 Übungslektionen
 
Übungslektionen dienen dem schrittweisen Erlernen des Zehnfingersystems. Die erste Lektion lehrt die Schriftzeichen der Grundstellung, die darauf folgenden Lektionen beinhalten jeweils (meist zwei) neue Tasten, zusätzlich zu den Tasten der vorherigen Lektionen. Der Aufbau der Übungslektionen ist abgestimmt nach der Häufigkeit der Schriftzeichen im Sprachgebrauch. Sie lernen also zuerst die Schriftzeichen, die sie voraussichtlich am häufigsten tippen werden.
 
Sollten Sie bisher keine Erfahrung mit dem Zehnfingersystem haben, wird empfohlen, alle Lektionen nacheinander abzuarbeiten. Sie sollten dazu jede Lektionen so oft wiederholen, bis Sie nur noch wenige oder keine Fehler machen und einen unterbrechungsfreien Schreibfluss vorweisen können. Anschließend können Sie sich die nächste Lektion vornehmen.
 
 
6.1.2 Freie Lektionen
 
Freie Lektionen sind Diktate, die sich mit verschiedenen Themen befassen. Im Gegensatz zu den Übungslektionen richten sich die freien Lektionen nicht explizit nach bestimmten Schriftzeichen. Sie sind besonders geeignet für Benutzer, die das Zehnfingersystem bereits ausreichend beherrschen und sich nur in Punkto Fehlerquote und Schreibgeschwindigkeit verbessern wollen. Freie Lektionen versprechen in diesem Stadium mehr Unterhaltung als Übungslektionen, da zusammenhängende Texte diktiert werden.
 
Oberhalb der angezeigten Lektionen befindet sich ein Auswahlfeld Thema, mit dem sich die angezeigten Lektionen nach einzelnen Themen filtern lassen. Außerdem können Sie die Maus eine gewisse Zeit (ca. 1 Sekunde) über eine Lektion in der Liste bewegen, dann wird Ihnen eine Kurzbeschreibung der Lektion angezeigt.
 
 
6.1.3 Eigene Lektionen
 
Über das Register Eigene Lektionen können Sie selbst Diktate erstellen und diese trainieren. Nach der Installation von TIPP10 existieren zuerst zwei Beispieldiktate, die die Funktion der eigenen Lektionen veranschaulichen sollen. Sie können diese aber auch jederzeit, wie weiter unten beschrieben, entfernen.
 
Um einem Text als eigene Lektion zu erstellen oder vorhandene eigene Lektionen zu bearbeiten, klicken Sie auf den Button Bearbeiten rechts über der Lektionenliste. Beachten Sie, dass sich das Ändern oder Löschen einer vorhandenen Lektion immer auf die gerade ausgewählte Lektion in der Liste unter dem Menü bezieht.
 

 
Wenn Sie eine neue Lektion erstellen oder vorhandene Lektionen editieren, wird Ihnen eine Eingabemaske angezeigt.
 

 
Im ersten Eingabefeld können Sie der Lektion einen Titel geben. Dieser Titel wird später in der Lektionenliste und in der Lernstatistik angezeigt. Der Titel darf aus Formatierungsgründen maximal 20 Zeichen lang sein und kann nach dem ersten Speichern der Lektion nicht mehr geändert werden.
 
Geben Sie dann im zweiten Eingabefeld eine kurze Beschreibung der Lektion ein. Diese darf länger sein als der Titel (maximal 120 Zeichen) und wird angezeigt, wenn der Mauszeiger eine gewisse Zeit (ca. 1 Sekunde) über der jeweiligen Lektion in der Liste verharrt.
 
Im unteren Eingabefeld können Sie dann das eigentliche Diktat eingeben. Bitte geben Sie mindestens zwei Zeilen Text ein (damit das Diktat auch mit der Intelligenfunktion arbeiten kann - siehe weiter unten).
 
Zum Schluss müssen Sie noch festlegen, ob der eingegebene Text als Satz- oder Wortdiktat geführt werden soll.
 
Bei einem Satzdiktat werden die einzelnen Zeilen (Sätze), wie eingegeben, mit einem Zeilenumbruch am Ende diktiert. Der Benutzer sieht also das Schriftzeichen am Ende jeder diktierten Zeile und muss dann die Enter-Taste betätigen. Der wohl häufigste Fall für ein Satzdiktat: Sie möchten einfach nur einen Text vorgeben, der Ihnen dann, so wie vorgegeben, wieder diktiert wird.
 
Dagegen werden die einzelnen Zeilen bei einem Wortdiktat mit Leerzeichen getrennt diktiert. Ein Zeilenumbruch erfolgt automatisch nach mindestens 35 Schriftzeichen, das Umbruchzeichen wird also nach dieser Mindestzahl an Zeichen an die letzte Zeile (das Wort) angefügt. Ein Wortdiktat ist also eher dafür gedacht, eine Reihe bestimmter Worte und Schreibweisen aufzulisten.
 
Die Unterscheidung der Diktate in Wort- und Satzdiktate spielt auch für die Verwendung der Intelligenzfunktion eine Rolle, die Sie vor einem Training zusätzlich aktivieren können. Bei aktivierter Intelligenz werden die einzelnen Zeilen der Lektion nicht der Reihenfolge nach diktiert, sondern abhängig von den Tippfehler-Quoten die aktuell für den Lernerfolg sinnvollste Zeile in das Diktat einbezogen. Die Intelligenzfunktion liefert bei einem Wortdiktat bessere Resultate, als bei einem Satzdiktat. So können bei Wortdiktaten gezielt bestimmte Worte oder Wortkombinationen aufgelistet werden, die dann abhängig von den Tippfehler-Quoten diktiert werden.
Sätze sind normalerweise länger als Worte, deshalb kann ein Satzdiktat bei aktivierter Intelligenz nicht besonders häufig aktualisiert werden. Weiterhin besteht bei einem Satzdiktat auch keine so große Auswahl an Möglichkeiten, das Diktat intelligent zu erweitern. Wenn Sie die Intelligenzfunktion bei einem Satzdiktat nutzen möchten, wird empfohlen, möglichst viele und kurze Sätze zu verwenden.
Die Funktionsweise von Wortdiktaten mit aktivierter Intelligenz entspricht der Funktionsweise der Übungslektionen 1 bis 5, Satzdiktate mit Intelligenzfunktion arbeiten wie die Übungslektionen 6 bis 18.
 
Um Ihre eingegebene Lektion zu speichern, klicken Sie auf den Button Speichern. Am Anschluss wird der Text analysiert und in Ihrer Datenbank gespeichert. Der Titel Ihrer Lektion sollte nun in der Lektionenliste aufgeführt sein und Sie können die Lektion verwenden.
 
Wenn Sie eine eigene Lektion aus der Liste löschen möchten, selektieren Sie diese mit der Maus und wählen Sie dann im Bearbeiten-Menü den Eintrag Lektion löschen. Beachten Sie unbedingt, dass beim Löschen einer Lektion auch alle aufgezeichneten Daten, die mit der Lektion in Verbindung stehen, gelöscht werden (also z.B. absolvierte Lektionen in der Lernstatistik).
 
Sie können auch einzelne Lektionen exportieren und importieren. Dies ist sehr praktisch, wenn Sie Lektionen sichern oder mit anderen Benutzern tauschen möchten. Wählen Sie dazu im Bearbeiten-Menü den Eintrag Lektion importieren bzw. Lektion exportieren.
 

 Programmstart  |  Inhaltsverzeichnis  |  Trainingsparameter 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/license.html000066400000000000000000000451601274324046000215610ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Technische Unterstützung  |  Inhaltsverzeichnis  |  Spenden 

10. Lizenzbestimmungen

Copyright (c) 2006-2011 Tom Thielicke IT Solutions
 
Sie können die Software TIPP10 unter den Bedingungen der GNU General Public License Version 2 (siehe unten) benutzen, weitergeben und veröffentlichen. Die offiziellen Lizenzbestimmungen sind nur in englischer Sprache verfügbar. Inoffizielle, nicht rechtskräftige Übersetzungen der Lizenzbestimmungen finden Sie unter http://www.gnu.org/licenses/old-licenses/gpl-2.0-translations.html.
 
 
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
 
Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
 
Preamble
 
  The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.
 
  When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
 
  To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
 
  For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
 
  We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
 
  Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
 
  Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
 
  The precise terms and conditions for copying, distribution and modification follow.
 
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

 
  0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
 
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
 
  1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
 
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
 
  2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
 
    a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
 
    b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
 
    c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
 
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
 
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
 
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
 
  3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
 
    a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
 
    b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
 
    c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
 
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
 
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
 
  4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
 
  5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
 
  6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
 
  7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
 
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
 
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
 
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
 
  8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
 
  9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
 
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
 
  10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
 
NO WARRANTY
 
  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 
  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 
END OF TERMS AND CONDITIONS
 

 Technische Unterstützung  |  Inhaltsverzeichnis  |  Spenden 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/parameters.html000066400000000000000000000165141274324046000223030ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Schreibtraining  |  Inhaltsverzeichnis  |  Trainingsablauf 

6.2 Trainingsparameter

Auf der rechten Seite des Startfensters können Sie die Trainingsparameter einstellen. Diese sind untergliedert in drei Bereiche.
 

 
 
6.2.1 Dauer der Lektion
 
Da das Diktat der Übungslektionen in Abhängigkeit von Ihren Tippfehlern unterschiedlich ausfällt, lässt sich die Dauer der Lektion normalerweise nur auf zwei Arten festlegen. Entweder über ein Zeitlimit oder über die Anzahl der zu diktierenden Zeichen (Zeichenlimit). Bei freien und eigenen Lektionen lässt sich bei deaktivierter Intelligenz auch Gesamte Lektion auswählen, damit die Texte der Lektion von Anfang bis Ende genau einmal diktiert werden.
 
Nach der Installation der Software ist eine Zeitdauer von fünf Minuten voreingestellt. Eine Zeitdauer von fünf Minuten entspricht, bei fehlerfreier Eingabe und einer Schreibgeschwindigkeit von 100 Anschlägen pro Minute, einem Zeichenlimit von 500 Zeichen.
 
Hinweis: Wenn Sie die Intelligenz (siehe weiter unten) deaktivieren, wird automatisch die Option Gesamte Lektion ausgewählt. Sie können diese Automatik in den Grundeinstellungen abschalten (siehe Kapitel 7.4).
 
 
6.2.2 Reaktion auf Tippfehler
 
Der Schreibtrainer bietet Ihnen unterschiedliche Möglichkeiten, auf Ihre Tippfehler zu reagieren.
 
Tippfehler blockieren bedeutet, dass das Diktat bei jedem Tippfehler stoppt und darauf wartet, dass Sie dann die korrekte Taste drücken. Das Zeichen, das fehlerhaft eingegeben wurde, wird im Lauftext orange markiert. Diese Option ist nach der Installation der Software voreingestellt. Wird die Option deaktiviert, werden Ihre Tippfehler zwar gezählt, jedoch übergeht der Schreibtrainer den Fehler und fordert Sie auf, sofort das nächste Zeichen einzugeben.
 
Ist Tippfehler blockieren aktiviert, haben Sie zusätzlich die Möglichkeit, die Option Tippfehler korrigieren zu selektieren. Tippfehler korrigieren bedeutet, dass Sie jeden Tippfehler zuerst mit der Rücklauftaste löschen müssen, bevor Sie die korrekte Taste drücken und damit das Schreibtraining fortsetzen können. Diese Option entspricht am ehesten der Realität, sie ist jedoch nach der Installation nicht voreingestellt, da sie nur für fortgeschrittene Benutzer geeignet ist.
 
Wünschen Sie bei jedem Tippfehler ein akustisches Signal, das über die Soundkarte oder in Form eines Pieptons über den PC-internen Lautsprecher ausgegeben wird (siehe Grundeinstellungen im Kapitel 7.1), markieren Sie die Option Akustisches Signal mit einem Mausklick.
 
Die Option Intelligenz ist nur bei freien und eigenen Lektionen aktiv. Bei Übungslektionen ist die Intelligenz stets eingeschaltet, daher ist die Option dann grau hinterlegt.
Wenn die Intelligenz aktiviert ist, werden die Zeilen (Worte oder Sätze) des Diktats nicht der Reihenfolge nach diktiert, sondern abhängig von den Tippfehler-Quoten die aktuell für den Lernerfolg sinnvollste Zeile in das Diktat einbezogen. Dies kann sehr sinnvoll sein, wenn Sie gezielt bestimmte Gewohnheitsfehler loswerden wollen, allerdings ergibt der Text des Diktats meist wenig oder keinen Sinn.
Ist die Intelligenz abgeschaltet, wird das Diktat in der vorgesehenen Reihenfolge diktiert und Sie können bei der Dauer der Lektion (siehe oben) auch die Option Gesamte Lektion auswählen.
 
Hinweis: Die Intelligenzfunktion zu aktivieren macht nur bei Lektionen Sinn, die aus sehr vielen Zeilen bestehen. Weitere Informationen finden Sie auch bei den eigenen Lektionen im Kapitel 6.1.3.
 
 
6.2.3 Hilfestellungen
 
Es existieren verschiedene visuelle Hilfestellungen, die Sie beim Schreibtraining unterstützen. Alle Hilfestellungen sind nach der Installation der Software voreingestellt.
Die Option Tastatur anzeigen entscheidet darüber, ob überhaupt Hilfen in Form einer virtuellen Tastatur dargestellt werden sollen. Wird diese Option deaktiviert, wird Ihnen beim Schreibtraining lediglich das Laufband und die Statusleiste angezeigt.
 
Wenn Sie die Tastatur jedoch aktiviert haben, können Sie sich auch einzelne Hilfsoptionen an- und abschalten:
 
Ist die Option Farbige Tasten selektiert, werden Ihnen die zu drückenden Tasten auf einer visuellen Tastatur farbig dargestellt. Die Farbe zeigt Ihnen dabei an, mit welchem Finger die jeweilige Taste zu betätigen ist.
 
Die Option Grundstellung sorgt dafür, dass Ihnen zu Beginn und während des Schreibtrainings stets die Grundstellung angezeigt wird.
 
Die Hilfestellung Tastpfade bewirkt, dass Ihnen für jeden Finger der Weg zu einer Taste außerhalb der Grundstellung angezeigt wird.
 
Trennlinie links/rechts aktiviert eine schwarze Trennlinie die Ihnen verdeutlicht, welche Tasten mit der linken und welche Tasten mit der rechten Hand zu betätigen sind.
 
Die Option Hilfetext anzeigen bewirkt, dass Ihnen über einen Text in der Statuszeile mitgeteilt wird, welchen Finger Sie für die aktuell zu drückende Taste verwenden sollen.
 
Für Benutzer ohne Erfahrung mit dem Zehnfingersystem wird empfohlen, alle Hilfestellungen vorerst zu aktivieren.
 

 Schreibtraining  |  Inhaltsverzeichnis  |  Trainingsablauf 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/results.html000066400000000000000000000233761274324046000216450ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Trainingsablauf  |  Inhaltsverzeichnis  |  Grundeinstellungen 

6.4 Lernstatistik

Nachdem die Lektion entweder durch Ablauf der Dauer bzw. der Lektion oder durch vorzeitiges Beenden und Speichern der Ergebnisse beendet wurde, wird Ihnen die Lernstatistik angezeigt. Sie können dieses Fenster auch direkt vom Startfenster des Schreibtrainers aufrufen, indem Sie in der Menüleiste auf den Eintrag Gehe zu und anschließend auf den Unterpunkt Lernstatistik klicken.
 
Die Ergebnisse werden in sechs Registern ("Tabs") dargestellt:
 
 
6.4.1 Bericht
 
Nach einem Schreibtraining zeigt das erste Register einen Auswertungsbericht der zuletzt absolvierten Lektion. Dieses Register wird nicht angeboten, wenn die Auswertung direkt über das Startfenster des Schreibtrainers aufgerufen wurde.
 

 
Der Bericht zeigt übersichtlich die erreichten Leistungsdaten der absolvierten Lektion, wie Bewertung, Anzahl der Fehler und Durchschnitt der Schreibgeschwindigkeit (genauere Informationen zu den einzelnen Leistungsdaten finden Sie im nächsten Kapitel). Neben den Leistungsdaten werden auch noch einmal alle getroffenen Einstellungen aufgelistet. Unterhalb der Leistungsdaten sehen Sie das zuletzt eingebene Diktat. Alle Tippfehler werden rot markiert und unterstrichen dargestellt.
 
Sollten Sie den Bericht ausdrucken wollen, können Sie rechts oben auf den Button Drucken klicken. Anschließend öffnet sich ein Eingabefenster. Geben Sie hier Ihren Namen ein, sofern Sie wollen, dass dieser auf dem Ausdruck erscheint. Sie können dieses Feld auch leer lassen. Ein weiterer Klick auf den Button Drucken öffnet dann den eigentlichen Druckdialog, um einen Drucker auszuwählen und den Druckvorgang zu starten.
 
Sie können Ihr Trainingsergebnis auch über Facebook veröffentlichen. Klicken Sie dazu rechts oben auf den Button Teilen auf Facebook.  
 
6.4.2 Lektionenübersicht
 
Das Register Lektionenübersicht beinhaltet eine Liste aller absolvierten Lektionen. Nach einem Schreibtraining werden die Ergebnisse der zuletzt durchgeführten Lektion ganz oben dargestellt.
 

 
Zu jeder Lektion werden folgende Informationen angezeigt:
Lektion:Name der Lektion
Zeitpunkt:Startzeitpunkt
Dauer:Dauer in Minuten
Zeichen:Anzahl der diktierten Zeichen
Fehler:Anzahl der Tippfehler
Quote:Fehlerquote in Prozent (Fehler / Zeichen)
A/min:Anschläge pro Minute (Anschläge / Dauer)
Bewertung:  Bewertung in Punkten (((Anschläge - (20 * Fehler)) / Dauer) * 0.4)
 
Die Spalte Bewertung errechnet aus Ihrer Schreibgeschwindigkeit und Ihrer Fehleranzahl einen Punktwert, an dem Sie Ihren Leistungsstand messen können. Anfänger erreichen zu Beginn meist nur geringe Punktwerte. Versuchen Sie jedoch, stetig im Laufe der Lektionen, bessere Werte zu erreichen!
 
Beachten Sie, dass langsames Tippen ohne Fehler bessere Werte hervorruft, als schnelles Tippen mit vielen Fehlern.
 
Eine Tabelle mit allgemeinen Erfahrungswerten der Bewertungs-Punktzahlen finden Sie im
Kapitel 6.4.6.
 
Rechts oben über der Lektionenliste können Sie über eine Auswahl die angezeigten Lektionen zusätzlich filtern. Wenn Sie einen der Einträge Übungslektionen, Freie Lektionen oder Eigene Lektionen auswählen, werden nur die jeweils entsprechenden Lektionen aufgeführt.
 
Wenn Sie die Einträge in der Liste nach bestimmten Spalten sortieren möchten, klicken Sie einfach auf die jeweilige Spaltenüberschrift. Ein Pfeil zeigt Ihnen an, ob die Einträge der Spalte auf- oder absteigend sortiert wurden.
 
 
6.4.3 Lektionenverlauf
 
Der Lektionenverlauf zeigt Ihnen die Bewertungen der absolvierten Lektionen in Form eines Verlaufsdiagramms an. Die x-Achse (vertikal) zeigt dabei die jeweilige Bewertung, die y-Achse (horizontal) den Zeitpunkt des Trainings an.
 

 
Übungslektionen werden mit einem schwarzen Punkt dargestellt, die Ziffer über dem Punkt gibt die Nummer der Übungslektion an. Freie Lektionen werden mit einem blauen Punkt und eigene Lektionen mit einem grünen Punkt dargestellt.
 
Sie können das Verlaufsdiagramm zusätzlich über die Auswahllisten rechts oben sortieren und filtern. Außerdem können Sie den Mauszeiger auf einen Punkt im Verlaufsdiagramm bewegen, damit Ihnen in einem kleinen Fenster Detailinformationen zu der absolvierten Lektion angezeigt werden.
 
Das Verlaufsdiagramm wird erst angezeigt, wenn mindestens zwei Lektionen absolviert wurden.
 
 
6.4.4 Schriftzeichen
 
In der Tabelle Schriftzeichen werden alle Schriftzeichen ausgewertet, die im Laufe der Lektionen von Ihnen trainiert wurden. Die Schriftzeichen mit den höchsten Fehlerquoten, bereiten Ihnen am meisten Probleme.
 

 
Zu jedem Schriftzeichen werden folgende Informationen angezeigt:
Soll-Fehler:Anzahl der Soll-Fehler ("Zeichen sollte getippt werden, wurde es aber nicht")
Ist-Fehler:Anzahl der Ist-Fehler ("Zeichen wurde fälschlicherweise getippt")
Vorkommen:Anzahl, wie oft das Zeichen diktiert wurde
Fehlerquote:  Fehlerquote in Prozent (Soll-Fehler / Vorkommen)
 
Wenn Sie die Einträge in der Liste nach bestimmten Spalten sortieren möchten, klicken Sie einfach auf die jeweilige Spaltenüberschrift. Ein Pfeil zeigt Ihnen an, ob die Einträge der Spalte auf- oder absteigend sortiert wurden.
 
 
6.4.5 Finger
 
Die Grafik Finger zeigt Ihnen die Fehlerquoten Ihrer Finger. Die Finger mit den höchsten Fehlerquoten bereiten Ihnen am meisten Probleme.
 

 
Wenn Sie die Maus über einen Finger bewegen, werden Ihnen zusätzlich die Häufigkeit und genaue Fehleranzahl des Fingers in einem kleinen Fenster angezeigt.
 
Die Fehlerquoten der Finger werden aus den Werten der Schriftzeichen und dem aktuellen Tastaturlayout berechnet.
 
 
6.4.6 Vergleichstabelle
 
Das Register Vergleichstabelle zeigt Ihnen eine Tabelle mit allgemeinen Erfahrungswerten der Bewertung. Diese Tabelle soll Ihnen lediglich einen Überblick geben und einen Vergleich zu Ihren Leistungen ermöglichen.
 

 

 Trainingsablauf  |  Inhaltsverzeichnis  |  Grundeinstellungen 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/settings.html000066400000000000000000000334051274324046000217760ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Lernstatistik anzeigen  |  Inhaltsverzeichnis  |  ABC-Spiel 

7. Grundeinstellungen

Die Grundeinstellungen erreichen Sie über die Menüleiste des Startfensters. Klicken Sie hierfür unter Windows und Linux auf das Menü Datei und dann auf den Unterpunkt Grundeinstellungen. Unter Mac OS klicken Sie bitte auf TIPP10 und dann auf Einstellungen.
 
Die Grundeinstellungen teilen sich in vier Bereiche: Schreibtraining, Sprache, Lernstatistik und Sonstiges.
 

7.1 Schreibtraining

Hier können Sie Einstellungen vornehmen, die das Schreibtraining betreffen.
 

 
 
7.1.1 Laufschrift
 
Sie können Schriftart und -größe, sowie die Farben der Laufschrift im Schreibtraining an Ihre Bedürfnisse anpassen. Klicken Sie dazu auf den jeweiligen Button und wählen Sie dann die gewünschte Schrift bzw. Farbe aus. Beachten Sie, dass eine Schriftgröße von mehr als 20 Punkten nicht empfohlen ist, da sie sonst durch das Laufband oben und unten abgeschnitten wird.
 
Die Geschwindigkeit, mit der sich die Laufschrift bewegt, können Sie mit einem Regler beeinflussen. Es existieren insgesamt fünf Stufen, standardmäßig befindet sich der Regler in der Mitte. Wenn Sie den Regler mit der Maus ganz nach links verschieben, bewegt sich die Laufschrift gar nicht mehr, befindet sich der Regler ganz rechts, bewegt sich die Laufschrift sehr schnell.
 
Manche Benutzer empfinden die Laufschrift nach längerem Training als anstrengend und störend. In diesem Fall wird empfohlen, andere Farben auszuwählen oder die Laufschrift ganz auszuschalten (Regler ganz nach links bewegen).
 
 
7.1.2 Audioausgabe
 
Sie können festlegen, ob akustische Signale (für Tippfehler und Metronom) über die Soundkarte oder über den internen PC-Lautsprecher ausgegeben werden sollen. Bei Ausgabe über die Soundkarte werden die Audiodateien error.wav und metronome.wav aus dem Programmverzeichnis abgespielt. Bei Ausgabe über den PC-Lautsprecher kann lediglich ein Piepton erfolgen.
 
Bei Aktivierung des Metronoms, wird während des Trainings ein Ticken in einem vorgegebenen Zeittakt abgespielt. Dies kann Sie unter Umständen dabei unterstützen, gleichmäßig in einer festen Geschwindigkeit zu tippen. Die Geschwindigkeit können Sie in Anschlägen pro Minute einstellen. Bei beispielsweise 60 Anschlägen pro Minute hören Sie genau einmal pro Sekunde ein Ticken.
 

7.2 Sprache

Hier können Sie die Sprache festlegen, die für Programmoberfläche, Übungslektionen und das Tastaturlayout verwendet wird.
 

 
 
7.2.1 Programmoberfläche
 
Die Programmoberfläche von TIPP10 wird derzeit in den Sprachen Deutsch und Englisch angeboten. Über die Listenauswahl können Sie die Sprache ändern.
Beachten Sie, dass diese Einstellung lediglich die Sprache aller Bedienungselemente ändert. Die Sprache der Lektionen können Sie weiter unten anpassen.
 
Die Änderung der Programmoberfläche erfordert einen Neustart der Software. Sie werden darauf nach dem Speichern der Grundeinstellungen hingewiesen.
 
 
7.2.2 Tastaturlayout
 
TIPP10 unterstützt neben dem deutschen Tastaturlayout auch das Layout der Schweiz, das Layout der USA und die alternativen Tastaturlayouts NEO, Dvorak und RISTOME. In der Listenauswahl können Sie die zu Ihrem Computer passende Tastatur einstellen.
 
Nachfolgend einige Hinweise zu den unterschiedlichen Tastaturlayouts:
 
1. Bei dem Tastaturlayout Deutschland | QWERTZ handelt es sich um das normale deutsche Tastaturlayout.
 
2. Das Windows-Layout unterscheidet sich leicht vom Apple-Layout (Windows- und Apfel/CMD-Tasten, @-Zeichen etc.). Wählen Sie daher die entsprechende Erweiterung Windows oder Macintosh.
 
3. Bei Auswahl des Tastaturlayouts Schweiz | QWERTZ können Sie zusätzlich noch festlegen, ob es sich um eine deutsch-schweizerische (SG) oder französisch-schweizerische (SF) Tastatur handelt. Außerdem werden im Diktat automatisch alle großen Umlaute und Szet (ß) durch alternative Zeichenfolgen (ß -> ss, Ä -> Ae, Ü -> Ue, usw.) ersetzt!
 
4. Bei Auswahl des amerikanischen Tastaturlayouts USA | QWERTY werden im Diktat automatisch alle Umlaute und Szet (ß) durch alternative Zeichenfolgen (ß -> ss, Ä -> Ae, ü -> ue, usw.) ersetzt!
 
5. Alternative Systeme, wie das 1936 erfundene Dvorak-Tastaturlayout des Amerikaners August Dvorak, das 2005 von Jugend forscht preisgekrönte Layout namens RISTOME oder das Tastaurlayout NEO erlauben schnelleres und für die Gelenke gesünderes Tippen. Aufgrund der weiten Verbreitung des QWERTY/Z-Systems und des enormen Aufwands, der für die allgemeine Einführung eines neuen Systems nötig wäre, haben sie sich bislang aber nur in kleinen Kreisen durchgesetzt. Zahlreiche Informationen zu den alternativen Tastaturlayouts finden sich im Internet. Die Unterscheidung zwischen Windows und Macintosh fällt bei den alternativen Layouts weg, da es sich im Normalfall um umgebaute Windows-Tastaturen handelt und kein Unterschied bei der Tastenanordnung besteht.
 
6. Sollten Sie den Umfang der für das Tastaturlayout verfügbaren Schriftzeichen zusätzlich anpassen wollen, erreichen Sie über den Button Erweitert die Zeichenbegrenzung und den Ersetzungsfilter. Bitte nehmen Sie hier nur Änderungen vor, wenn Sie sich mit regulären Ausdrücken auskennen. Änderungen werden nur solange gespeichert, bis Sie ein anderes Tastaturlayout auswählen. Weitere Erläuterungen werden im Fenster angezeigt.
 
 
7.2.3 Übungslektionen
 
Die Übungslektionen sind im Idealfall genau auf das jeweilige Tastaturlayout abgestimmt, damit die einzelnen Tasten von der Grundstellung ausgehend schrittweise erlernt werden können. Sie können zwar auch z.B. an das deutsche QWERTZ-Layout angepasste Übungslektionen mit dem amerikanischen QWERTY-Tastaturlayout trainieren, müssen dann aber unter Umständen von Beginn an Tastwege zurücklegen.
 
TIPP10 bietet derzeit deutsche Übungslektionen für die Tastaturlayouts QWERTZ und NEO 2.0 und englische Lektionen für das amerikanische QWERTY-Layout an. Diese können Sie die über die Listenauswahl einstellen.
 

7.3 Lernstatistik

Hier können Sie die Lernstatistik verwalten.
 

 
 
7.3.1 Benutzerdaten
 
Über den Button Absolvierte Lektionen zurücksetzen können Sie alle Lektionendaten löschen, die während des Schreibtrainings in die Datenbank gespeichert wurden. Es handelt sich hierbei um alle Ergebnisse der Lektionen, also welche Lektionen trainiert und wie diese bewertet wurden. Die Lektionenliste und der Verlauf der Lektionen in der Lernstatistik werden danach leer angezeigt, wie nach der Installation von TIPP10.
 
Der Button Aufgezeichnete Schriftzeichen zurücksetzen bewirkt, dass alle Fehlerquoten der Schriftzeichen entfernt werden. Es bleibt zwar erhalten, wie viele Fehler in einer Lektion gemacht wurden (diese Information wird über den Button Absolvierte Lektionen zurücksetzen gelöscht), jedoch wird zurückgesetzt, welche Schriftzeichen Sie am häufigsten falsch getippt haben. Die Liste der Schriftzeichen und die Darstellung der Finger in der Lernstatistik wird nach dem Löschvorgang leer dargestellt und die Intelligenzfunktion reagiert erst auf wieder neu entstehende Tippfehler.
 
Wenn Sie beide Lösch-Vorgänge durchführen, befindet sich die Datenbank wieder in dem Zustand, in dem sie sich direkt nach der Installation befunden hat.
 
 
7.3.2 Speicherort
 
Im Bereich Speicherort können Sie festlegen, wo sich auf Ihrer Festplatte die TIPP10-Datenbank tipp10v2.db befindet. Standardmäßig wird die Datenbank beim ersten Programmstart im HOME-Verzeichnis des Benutzers angelegt. Bei der portablen Windows-Version von TIPP10 wird die Datenbank grundsätzlich im Programmverzeichnis abgelegt, hier kann der Pfad nicht verändert werden.
 
Bei Windows ist das Verzeichnis normalerweise unter folgendem Pfad zu finden:

C:\Dokumente und Einstellungen\Benutzername\Anwendungsdaten\TIPP10\

Bei Mac OS ist das Verzeichnis normalerweise unter folgendem Pfad zu finden:

/Users/Benutzername/Library/Application Support/TIPP10/

Bei Linux ist das Verzeichnis normalerweise unter folgendem Pfad zu finden:

/home/Benutzername/TIPP10/

Im Ordner TIPP10 liegt dann die Datenbankdatei tipp10v2.db. Beachten Sie, dass bei der Pfadeingabe lediglich das Verzeichnis angegeben wird. Die Datenbankdatei selbst wird nicht eingegeben. Wenn Sie ein leeres Verzeichnis angeben, wird automatisch eine neue, leere Datenbank erzeugt.
 
Weitere Informationen zur Handhabung der Datenbank finden Sie im Kapitel 2.3.
 

7.4 Sonstiges

Hier können Sie Einstellungen vornehmen, die die Programmbenutzung und den Umgang mit Informationsfenstern betreffen.
 

 
 
7.4.1 Fenstereinstellungen
 
Die erste Option bestimmt, ob nach dem Programmstart ein Fenster angezeigt werden soll, das Programmhinweise und Tipps zu Anwendung des Zehnfingersystems beinhaltet.
 
Die zweite Option entscheidet, ob der Benutzer einen Hinweis erhalten soll, wenn eine freie oder eigene Lektion mit aktivierter Intelligenz gestartet wird.
 
Die dritte Option legt fest, ob die Dauer der Lektion automatisch auf Gesamte Lektion springen soll, wenn bei einer freien oder eigenen Lektion die Intelligenz deaktiviert wird. TIPP10 merkt sich, ob Sie die Intelligenz aktiviert haben und setzt die Dauer auch auf Gesamte Lektion, wenn Sie nur zu den freien oder eigenen Lektionen über das Register wechseln. Wünschen Sie dieses Verhalten nicht, deaktivieren Sie die Option.
 
 
7.4.2 Sonstiges
 
Bei der ersten Option können Sie bestimmen, ob TIPP10 einmal pro Woche beim Programmstart auf eine neue Softwareversion prüfen soll. TIPP10 stellt dazu eine Anfrage über das Internet und informiert Sie, wenn eine neue Version vorliegt.
 
Aktivieren Sie die zweite Option, wenn die Software mit der nativen Programmoberfläche dargestellt werden soll. TIPP10 verwendet dann für alle Steuerelemente das Oberflächendesign des Betriebssystems.
 

 Lernstatistik anzeigen  |  Inhaltsverzeichnis  |  ABC-Spiel 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/start.html000066400000000000000000000057551274324046000213020ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Ergonomie am Arbeitsplatz  |  Inhaltsverzeichnis  |  Schreibtraining 

5. Programmstart

Um den 10-Finger-Schreibtrainer TIPP10 unter Windows (installierbare Version) zu starten, öffnen Sie das Startmenü, wählen dann Programme und klicken im Eintrag TIPP10 auf TIPP10. Falls Sie eine Desktop-Verknüpfung angelegt haben, können Sie das Programm auch direkt über einen Doppelklick auf die Verknüpfung TIPP10 des Desktops starten.
 
Bei der portablen Windows-Version navigieren Sie einfach in den Ordner tipp10_win_portable_v2-1-0 und starten Sie die Datei tipp10.exe mit einem Doppelklick.
 
Um TIPP10 unter Mac OS zu starten, navigieren Sie über den Finder in das Verzeichnis Programme und führen Sie einen Doppelklick auf die Datei TIPP10 aus.
 
Für den Start von TIPP10 unter Linux, navigieren Sie über das Terminal (die Konsole) in das Verzeichnis, in das Sie TIPP10 entpackt haben, und starten dann die Datei tipp10. Bei einer grafischen Oberfläche (z.B. KDE) sollten Sie die Datei auch mit der Maus starten können. Bei (K)Ubuntu können Sie dies über das Startmenu und die Einträge Anwendungen - Bildung - TIPP10 tun.
 
Nach dem Programmstart wird Ihnen zuerst ein Einführungsfenster angezeigt. Wenn dieses Fenster bei zukünftigen Programmstarts nicht mehr angezeigt werden soll, können Sie den Haken bei Dieses Fenster nicht mehr anzeigen setzen. Um die Einführung zu beenden und die TIPP10-Oberfläche zu starten, klicken Sie auf den Button TIPP10 starten.
 

 Ergonomie am Arbeitsplatz  |  Inhaltsverzeichnis  |  Schreibtraining 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/style.css000066400000000000000000000014011274324046000211110ustar00rootroot00000000000000.container { margin-top: 6px; margin-bottom: 6px; margin-left: 12px; margin-right: 12px; } .headline1 { font-size: 16pt; font-family: Verdana,Arial,sans-serif; color: #F97E00; font-weight: bold; border-bottom: 1px solid #F97E00; padding-bottom: 4px; } .headline2 { font-size: 13pt; font-family: Verdana,Arial,sans-serif; color: #F97E00; font-weight: bold; } .standard { font-size: 10pt; font-family: Verdana,Arial,sans-serif; color: rgb(0, 0, 0); font-weight: normal; } .small { font-size: 8pt; font-family: Verdana,Arial,sans-serif; color: rgb(0, 0, 0); font-weight: normal; } .code { font-size: 10pt; font-family: Courier New,Courier,sans-serif; color: rgb(0, 0, 0); font-weight: normal; } tipp10-2.1.0/release/help/de/content/support.html000066400000000000000000000040471274324046000216520ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 ABC-Spiel  |  Inhaltsverzeichnis  |  Lizenzbestimmungen 

9. Technische Unterstützung

Technische Unterstützung und Hilfe können Sie im Internet unter der Adresse http://www.tipp10.com beziehen. Sie finden dort aktuelle Informationen und ein Meldesystem, in dem Sie Fehler und Verbesserungsvorschläge eintragen und vorhandene Einträge durchsuchen können.
 
Da der Schreibtrainer kostenlos ist, können wir Ihnen leider keine telefonische Unterstützung oder Hilfe über E-Mail anbieten. Bitte haben Sie hierfür Verständnis. Sollten Sie trotzdem Kontakt zu uns aufnehmen wollen, finden Sie unter http://www.thielicke.org ein Kontaktformular.
 

 ABC-Spiel  |  Inhaltsverzeichnis  |  Lizenzbestimmungen 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/content/training.html000066400000000000000000000130721274324046000217470ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 Trainingsparameter  |  Inhaltsverzeichnis  |  Lernstatistik 

6.3 Trainingsablauf

Ihnen wird nun das Trainingsfenster angezeigt. Im oberen Abschnitt befindet sich das Laufband, darunter die virtuelle Tastatur. Im unteren Teil informiert Sie eine Statusleiste mit zusätzlichen Informationen.
 
Bevor Sie mit dem eigentlichen Training beginnen, nehmen Sie zuerst die Grundstellung auf der Tastatur ein. Bitte lesen Sie dazu die Informationen zur Ergonomie am Arbeitsplatz in Kapitel 4.
 
Anschließend können Sie das Schreibtraining über die Leertaste starten. Sobald Sie diese Taste betätigt haben, beginnt die Zeitzählung und der zu tippende Text erscheint im Laufband.
 

 
Je nachdem, welche Einstellungen Sie vorgenommen haben, werden Ihnen die Grundstellung und die zu drückenden Tasten auf der virtuellen Tastatur angezeigt. Die Farbe der Taste weist Sie darauf hin, welchen Finger Sie zum Betätigen dieser Taste verwenden sollen.
 
 
Farbschema der virtuellen Tastatur:
 

Taste wird nicht betätigt (alle Tasten, die für das aktuelle Zeichen nicht von Belang sind)
 

Taste wird mit dem Zeigefinger betätigt
 

Taste wird mit dem Mittelfinger betätigt
 

Taste wird mit dem Ringfinger betätigt
 

Taste wird mit dem kleinen Finger betätigt
 

Taste wird mit dem Daumen betätigt (diese Farbe nimmt lediglich die Leertaste an)
 
Die Statusleiste informiert Sie auf der linken Seite über die aktuelle Anzahl der Tippfehler und Ihre momentanen Anschläge pro Minute. Die rechte Seite zeigt die bereits vergangene Zeit und die Anzahl der absolvierten Schriftzeichen.
 
Folgen Sie nun der Laufschrift und geben Sie den erscheinenden Text auf Ihrer PC-Tastatur ein. Das jeweils zu tippende Zeichen wird Ihnen dazu in der Laufschrift grau hinterlegt dargestellt.
 
Hinweis: Es existieren zwei Sonderzeichen, die zusätzlich bestimmte Tasten repräsentieren sollen. Wenn das Schriftzeichen angezeigt wird, soll die Enter-Taste betätigt werden, ein nach rechts zeigender Pfeil → steht für die Tabulator-Taste (die Taste mit den zwei Pfeilen ganz links auf Ihrer Tastatur).
 
Sollten Sie das Schreibtraining kurzzeitig unterbrechen wollen, erledigen Sie dies über einen Mausklick auf den Button Pause oder durch die Tastenkombination Alt+P (die Zeitzählung wird dann ebenfalls unterbrochen). Sie können das Training dann jederzeit über die Leertaste fortsetzen.
 
In Übungslektion 19 und 20 wird der Umgang mit dem Ziffernblock rechts auf der Tastatur geübt - die virtuelle Tastatur zeigt daher bei diesen Lektionen einen Ziffernblock an.
 

 
Nach Abschluss des Diktats oder Ablauf der Dauer (je nach Einstellung) wird das Schreibtraining automatisch beendet und die Lernstatistik angezeigt. Wollen Sie das Diktat vor Ablauf der Dauer beenden, klicken Sie auf den Button Lektion vorzeitig beenden oder verwenden Sie die Tastenkombination Alt+B. Bestätigen Sie nun die Sicherheitsabfrage mit einem Klick auf den Button Ja. Anschließend können Sie über einen weiteren Dialog entscheiden, ob die Ergebnisse der Lektion gespeichert oder verworfen werden sollen.
 

 Trainingsparameter  |  Inhaltsverzeichnis  |  Lernstatistik 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/de/img/000077500000000000000000000000001274324046000163455ustar00rootroot00000000000000tipp10-2.1.0/release/help/de/img/Thumbs.db000066400000000000000000001130001274324046000201110ustar00rootroot00000000000000ࡱ>    !, "6#$%&'()*+-B./012345789:;<=>?@ACDEFGHIRoot Entry 0p~1 Catalog/b21/  !"#$%&'()*+,-.023456789:;<=?@ABCDEFGHIJLMNOPQRSTUVWYZ[\]^_`abcdefghijklmnopqrsuvwxyz{|}~  JFIF``C     C   J`" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?ZL ʮ _֮ʐbH_hyc!Ev[ց'^Hɏ wsǧws7KeUcA|&?(cB3*P2rmO۸aʎP|,.Vwua ޴䲞MK6e} Bi:ֵ+{W7ynpʆ0vm=pr8d*9oq*Q9kl4!9tϯz,^;OMkPZ\ꠓ *CD;=cQ밪g(m9-֩E5NV K[N",6\p3ly r\χne RTo8 msotBdWAo?_Un X y4܀R"-VE]A^Jn9ۀ:g:S+XΒḴ6,qǏAސΑ0VcV`H u҆ C6v3˚G61%P!;mWQ89vN\q'JHswA?٧M# ׹r#n7?>ҕݝA\ciIpp~J-XkGpP#/V8Kq:2ɽ);20_)d z\yȈw^gTKŽX$DM#]snA/Y,F1hxjO'vn̑aR^횳, .)OQ皯u hbP÷vaqrddUr#$DӒi;]wHUoaRRY$ f NH'* fP Nx֧-h\Dd}NHNRIQmہO>ڹ0t'Rno٥Y*JT|aO'baݓ^1Ͽ9%9&CwwgW{VK yf̶AG3T{ko,[N$һH'(SPn! ϰ+H걆¸Fryx9\ɿozcW2L1@_N0$g(Ԩ"&b3''8ޥy͌}d@\z.=oکj׆yoLUBDXrw61rE$֗ sZ#G3njNa~,` crb6|qrWZ`Tn U-:2‡!7q<1GO`ud k gGo]=  qZjKp:߷4=Ķ2ohZofj9P3ӓ֜Vq@cUB*sS]_Ae)C[}EmШIz)cOҐ?/~ɭмjqJ<dk2eQo21?^(ߟSX\ o]#խ?=֠ *QH2>OQ𞓫h7plRKV`[qϯ5uzh,a[vb\V%Ijܰ_˥fx\xSP@B۷%Ox=xgNʩGR3ہkuT$w(UfuKho񪶤\5EϯRNcnާݫAY?1585]VcꞭwqcbZ5ڼ뺖?#whԲ?cw{`=Y˒<9zqq%6bex^5䉮D4jYo|ǽ=$Q9eURH5K?4ero0:bp1MsQ$7η?1:ybi_2)م{qQ/fMlFgl}=FcB_ƚ%ˣ iXf``>feh_training_lesson.png:Yh_key_greylight.p #JFIF``C     C   ((" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?CwPsz@>GڿA 4K5X6tK  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?&lӾ<|O-g?xM&.< JQkyA"_-J|=%|Sn<7je֍wΰX*ѳ9U9S:VZM:ƧjW0m=ĢibhgYQdr1 JFIF``C     C    " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?jo(oxEhȶ]*tkDO*f G^oxWF.g}73Z}CCdڄRȣ~>dC6:պ[V4W+K"H  ":UeR0@5r? JFIF``C     C   `" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?SnaI 5,HU@I<\~#ncxu+9+3Ohѫ$rp>2yҡo|7]j6qKjYB q4xQ=q}dmWWU e ayկuk-];VA.%vF ckfHc~--[?.W;?@n Zֹ²oQ<@%ͼfSzfKf{ĺ9+ȚT>LCG X{S6< u Aդ_Z·ȧڼF]O̤ӿ5׽XZk6VuGJ^wRL/7uzSP(ïxPV7WQ"ƏțBa°T(gYA;~6֒2 /$sg4Q@uS#Ѝ>X*өdyOG֊(FԶ77>8XVBUpx:`tjw se#HJ~a0;g8䢀9/ |\'Ks?]I#ϴ  >~t>+(g]i|̩QEvjWuսޝ`2ֲCVU;X6'|,B_6d[I>EwlĜ{Q@ ? JFIF``C     C   `[" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? j4utgȬNr,:`u7_-AAM.=^1-ԓ~7WLZq%#L#a `3u8|^΃\XNI rg# P/ xkg@r9Ř/ⷴk-Jc5A܃8XqPsź_"M.HX+ 0LK=6K=ږ#RǠ6K=6K= —ڭZ8%1IeB Ph/h/j iOɹu5@lzwg99#bE:k Ʋ.5Oȑn\ v~X# )AסcL߿'e#+I!F@Cz]އ&ϯin9? #=jCubއ/]h^&ҴKko d߼Vjn@VRI'7+_Sk[e@o^N9g8=9 >渁X<XP//IG->\KϭIoH:o8 tolz!ck/\ׯUK;cEC\rMmll wco;H2Fj[_?&Ѝ0\,`0s=1 /jϣjЖu@날H#{+^4K#2UQs_8űhæϨ.̱}*W=p9^9P[i:]Րr"/p˒zN~oC@ 9lbHd$\<,x㚃$S**ha g g>⧓SI"HWcSab}j>.5MN*LAz2F3ӵ07,./gK8n]uݴgBɆN*Πcʤ8#hkڼ&GŒsڶ<W){";u>cCn:n ,Ќfdž<}4}bWpim< ݜӨj21d,Lr=קvAg4Lb@ ju;m+Fwܺod$М+, =b5/[y xm^:۟ 3ɏ|T۟ @b|D?|'w\i 6zM0_'OSi\jdj+'NߙYr jO6޿g}}klP4tysPry9>'G{#Fn綺7QK b*`9="z %˦G=}+7`Bcw0py fai F][k?5χ[0N@7==nr@i$#H&N!i}&2OGY dXI;MIv1O@:d1ɷ g[5ƴ:cji2NUn] CnWO,We&1d1ck0ZpmA#if6yt1nt=gݬkyFR@g}[vѻ9x@ȃDSпܓ 6O #MBrOjB2c=I  JFIF``C     C   G`" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz7 8 D 9H01 J w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?rIa æqx & %urwn#Nx آ3~Ǩ'jBJ"YU#3d ~"ڲ0붬m_~oEX6P"Yn$?wNnTmRi++coXNqA#`;T7^NjrF{x|I'#Z}9#&y<@t@Txk{B5`eP7 'E.J_渐zOdϮ93DYΈʼn c9<湽/QmNm{RKa 1=1[EͅK5 pN?ZEPቧc^Yl.QW'0g?F?Rz?AР+;+׵i.$V2Y4s&F@ߥA_k_l5#m(lr| \'UQw^Zum Jj^;礟I?J>. M RqqW͗F<5eԨazr~p9 *qX^7{z'ff𰺍[}'^Or-[. ^}k|Wˢ~X@^]P# ޟgr*eiP+5?Oҏ礟xdamݷtgRU]]kxeΡ8\~Ouz$O!ى8588[f!W+s@eWRg)?x +=8o Lc])?,1-esǫg8 =+KuMF Tv.IyhY k%J1*vf7m#u/@5:W2E"E*{0Ep,~I ־JI.D[vO\9V53[[7g5_xLKA,_&G&k׷w;`e%LW~>xr2.HO'v>ރQɺ;w\w+S0{^ ؘ{ޤ[eI潠N7Kt>9]gP%xeYab=$wzY𯨮_YܴV-#5#n)}:]ѵ_zceg:PiwLK?#܅vCW1}uU]{NArAk=*(f_+i]f?Qu=(ҺGj(J{5W_٨%ĪUbQKgL_Aɢ 8 JFIF``C     C   K`" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdef      "#$%&'()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiklmnopqrstuvwxyz{|}~ghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?Bax_RӮ,3)YY0Tf\FAk~7M[]][[OIÏja/pCjj.1b+[-6Mw}w;S>vg=-s:-X6,!>v9Ĝ}_F|x?O9#+*[dj˜>Q `_?9YOu9i?< ȊDE:2WpnP#i:kG%&֫>& #rppCh,˜>Q `_?9[O;do#,vb$' k<7뗚ɖ8}Xd[<|{i \ Eiy6aA-̋3c߅~3mL[o; G-!TQ%0:E}%Y'kVIQ9:R7UЗ4R~<~?0E{55-VwsbHsx#_Wxiahn?v`Yٛcm( sӭ~yr2%(>i_mze2\dcؗޭqv-K:(<Ҽ[IU~t4KgrP]#3^)Zǃ*8Gwo O^i_&1i Tk!pJ<#ۏsCl.V%Xo_"oLy pǞc-Ni=JN܁cGZܖF`b>ZWBʃ``xo~'ntChvla rzwjc /8n;Pb͵]2H]A}D4 ckd䝭9c2^-`#IO}9|kqy^[Mr:uޙ{95Ceoc?5[?ZzM_KɈF d:5%!پkdkmsgޚa/pCj6@Yyf ~6VmҼSIĿ/ ܼwmZM^uՒhR"Nr?9dӌw{rHEZpo·3PUWwOr}%%%r\4#rȹ8{'V+[id?(T0>*9<}; :4z֔q$ӟ9͂%uP-F+0ŵ-ahVf?Eo@5Y'kVIMnO>%m_Ck~פҬZNgC,tya/pCjjƮO]sOKl&沔,?TҬt\S^Zǃ*"w>1C^1V^xVNY'w>_>GҖl|QE(+3-j7kNJFIF``C     C   ((" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?߶Ni)@==POoqkanI"y, ӦrVW`5= LiQE^;G֊?P = O}>?P+N՞t+*cQ@ ?JFIF``C     C   ((" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz 11!K21 /31j/ 41 w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?퓚MރM2 >~FL9Z[DJksϯNY~9uef.Tx+_}"4})HKЮ c#& N.x6ۀpJw.zy9rBZ_zONOjޓ CtԵ+"g{yswH#@9WL{ Ă֗3*8/#ԵZ/tŎ5Fad|199>X swhu.e7 b06sֽa|}56[6WX9%#X_#i\k8҇?=:{E峨Z KOӑ-Q$)oL#cM^{١߆N a<0pf=zAkRY[ye^MZ>RʍDG sz7;[ȏ_<|? )s׮}28ڛ-\E2M!Fx!0ocuzvG?y@Hc+nh0y1К[캕c@f֮PF919ןb=:.+@}y_-,8^k|?,䶗TЯ@a,%<H[<Lx?^1=Ϻ CɄoO581ˢicsz Y.?lv˻%眃wxYcFi]ALOךhmia8b# 1~DX4pl"Ę;0;zƓLԞOi"9l#*gu.4PP}[8;3$@S01]OO“T7&[__zy__zT]Y0tAEVFEP3 TV"kGhZh]B5iV:ct{m\__t({wmf--J-ey8>`bSjRvb J ͓>/j'gSb3*aXy=5,W̚JV0a[zN _, =`\/08,[K,I}>N0{}EpOZ:fV vĝA}}k3*nL;׌2:rz>- JsTǎtT'+;]MnK_߲${wt~# #E]L% H#"ؾ6> e_YʞfAk[,/ {+>.Dh[d6wd04-"XX9t#Cz-97bns\a]jqF,C$ \c2}iھ8UKrA'VqE]}i0m!8W]umGN`AwM:^t y/PVoD[<`Tw&OC # JFIF``C     C   @`" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzف w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?[d0$ O/r>%[|B]Lŏ؝ "Nqt-̇*r?w_zBCO1 o.,y62ǞʦQEV~qQizy 4iWu)@(!WHW! N{IZWKhwzlZLf ̼c?佷ky|d LO.s.- P3"#hޝ[[S,x?Tgi[xȹ]7E@=~bȂMJU$tqt we1CoiDGq00 T2fZ6T`8$*xB+8V*8$J rx[_hH3f`mN0sRlF AH/1g=)YWv7v3Ԗ"v9Szpf̎xf@b=}?08k&]-GGd(3Ȋܧ<}@h._׭tͭ+609ݧ;X v'`u5u VQL1@#\FU>o.m`(d8ⱤmE$z%@OCpL]&6PMc֙wPbݝC'YC!X\Č y2G*r\GךF@tR:hD4Dې׺ ݵ4w!|P.F 8ɮ;][RI^k9m쥎&"E.zr{Rc94:MBd!2Xq%p8';Ķwplv։FXl]f gh!z9]A׉AoB)(J^*Y|?㙴E^KEc@Jd,"/tq 鼸(C `~u_g]1}kLǎlO-Г k$- trp]H'OlҐFoeK+3Ͻ)7;8</ßW^8 ;Ď?9>Ecm6j=\X-m2y5sƓjv)aIn?y7`xӰWG9 Y[]妎CB#U?S_6~#xŗ:E*{DկD ˠzW'h;FFK-^u{VhVTM9B0GR՝HǕ-u֜ewz:]czpxJ80G.N9$l->E4ŴD$mW1W$$s}jOh]OY1ln%v 瞠qRYMsZKh5ڴh#vdFr=ȧiA5d# (cF2v=_/躄&!e*(W6\K"}ęC'T e9xf/?4C'\ `1l㎞|:aOp}Ov;z^=^*gy ZB-~c9}OEV@QEǝ%$]xN%Ӯ4F'0ٕn)ʮ?PWdImoLim,eӥDIb$DXT#ڦJEٓx~ %b)!Kzꭧ§:2%7P>gpiÛ\[}o@@cL^4>>xcQ[Il?v@_1JoE< D&$Jsqą 5@_{痼 Z[P=I$m I1~l͹cܞwᶳ$wm[NiIv)o9f<|sh"B㱷𮲖n($,N: MR׆[K-oy`]uEPHqs1`0q4 JFIF``C     C   J`" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?ZL ʮ _֮ʐbH_hyc!Ev[ց'^Hɏ wsǧws7KeUcA|&?(cB3*\VP;`[pzՎ.lI#WhӵO9QUQ&)r1&13/4hš=C r8_Z#ɏ s]P=9F3iltSRj(xbBhXgvK%֌J*}-GTd-Q@dEOVdEOS[R0 GNJ?RM𮞅 y 8K[ɓKp%?ZK29bu0 #n9-1E!Ioֳܭ$ "2 ?Z,suDoOӧ^0!=}(tTwܯT 0 k1c <ƵGǿ*67OVVe+nS'Qڝ6)o@7OY>-RG~JےX3r [ t݉'V-ۖm@EQ;*HVbTOnY!P\/Vfaqu-&7ƪڑs1w>qI8Qz{vd\pauiX9zōkh׳ߏjSXowROE=d@xvc.H9c);s=zג&?cw{ιgB_ƎQ,D7%%UI v,lɕىҼ]5D O:ޣ4X\ǴڭiI~ȧfG\·5Hm7qs!楏]k+.0Ubvcng0`arrow_left.png2Cdaarrow_right.png.T\h_fingers.png:9fh_home_settings.png:| h_installer_mac.png:`{ h_installer_win.png2 h_key_green.png8 eؐh_key_greydark.png4 Dh_key_yellow.png4 9Hjh_lesson_own.png> >72h_lesson_own_menu.png>eh_training_numpad.png$alogo.png* JFIF``C  5161    C   `" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?olWO]ԟ욁\>osr >YxŦy5 \]0̧0hx񾍯yRjn??_x|{qY&]K0Ѕ$%;yTmy|ϸMinQpNg+#[Nek~.P T;x|8[8GwuasߎT7Wxԁx ,'ɴ\?vsO|WX3 u/y׏YZ:F)Ea|{L[N5Ju]cCBAR}OVmOJky(x`u4տ>8\E?408;/ON~ h1M^u=* h܃G!G鬝zeY}s򝪫9rrKiFN|{ۥͦ4 E*;QQjmkkSSF!#4o9SW֋TY̒P@Oz:}]sͻS|6e`pjRniO+^iCҩ 8(7VC-uVz֜1ڀ$P"^&k<m~/m58kQ?]>Q~b,!shɩ㘺s|nUSHyk,c_Q8/wyd4m"C( yV/$5s p0"p{Dǎ<57#Q1Iyrľ543}מyn {O{_}M[~'0Ŭ8Nwɦ~{幟D \2jFR{Ek8U(%IXO^4v$ mt>[`؏Z >e{]q7w\7\`t4Q^/QԳjidqB_Obj]i'"fVJVQE}_$|9[V/͞9j[~"DInn#*G4Aw<+(^nYrm\_XHWx6[|g 2h`yI4QFvگHe :ϷDZRUjk n1tQJ"ۭjknaGOQE~RKK}z> yJFIF``C     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?/0h?}3L};Nfmkgi;ȡ$Q@T?|@¢`1~X,W}}2Asn#WG`H\N;C9>`t?Ṱ1-*:: ?|@¢Hύ~%~>$<]xMw71Z)(Q I`p ù p~~acLw;WEiyɜy cgg xϞz6q~֠.htt_logo.pngtipp10-2.1.0/release/help/de/img/arrow_left.png000066400000000000000000000003521274324046000212170ustar00rootroot00000000000000PNG  IHDR PXsRGBgAMA a cHRMz&u0`:pQ<hIDAT(SmO!Rap-á>twF#dbD$ǼFNHPUf,{V*a]ny%?9+?49qfIENDB`tipp10-2.1.0/release/help/de/img/arrow_right.png000066400000000000000000000003601274324046000214010ustar00rootroot00000000000000PNG  IHDR PXsRGBgAMA a cHRMz&u0`:pQ<nIDAT(S][!A}`jeQsR1j{qW*e+Ҋ*niEkT5l=dMВV/dK^>?l]IENDB`tipp10-2.1.0/release/help/de/img/h_fingers.png000066400000000000000000000162521274324046000210250ustar00rootroot00000000000000PNG  IHDRxay pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTEɖ}~ӨWkɸWWWY†O555eu(###m~rčٴM'hhufeew-{{{BBBysۥp{kkk!hEg8}Ƚ{8uttbZ;bū²t;п}HHH/|zjt{Бqbr~WhtϡpDztoozz~x|>0Ħ|q>M\Қȅ}ٍ4SlH9nlm nayDQ6L:2v&7Ɓ<'+zyzaHC啷ÆYy8''|01Nekf׊ h`?q`Q=@XVP,+( er/AA(WȊcd"~ kN(oj`ݰyx~oP/fkI֧!`oW;,ei̗ҩC$Om%9.Nkeq6e ̽ϾxֺA杜tO&1@u:^9,kZd%Dpα#b2f՚X4ZdeOUTapӈvOC sbHJbYcDCB7/JnH\ݤSλ1Wt-ZOs¿CҘVc>p.#,՛FU.+3 }ro'q UrY{H^?z~ҽ]w.~I'jtʷ _e_=Vr s_zf{oaA{z˵o0tٲ5f+g\IsIJWK`y޳t)_k_d(G' z^xڿ~, ɰ|2/}gp0)&Y?ngdG.b yئq)+f- y\Dޒܹ';e9U++5u{m㪽lN/rDrujҨaUL=jyh# "zHbˎ"gq LKUE.] I!5}_z3יlrn Ip=/UP['[ypk0y.%Ykk\ɨQ<ǤdsHbŋ-",Ի/+:JQsVS\PWt>0uVo+ VRczjX55/,yVpg*L=l iV" # w)\_Ae{[ΈEib$O9|F $CG^M6j*\9=睗K0ՙBX9B( \>Э`Cp&3B|wC6-8`̴c'Ay'Z`FBC0|[jKh<&^kxS^M|e!3~>&sdaXըc=ܗONonczXG7-8$N:JCL55wjRg20G꒪=lEu;.(sSK8]GWS)K =ݶe#:R")[̾Tߗ'Lݶ?K[W\ۉ|SpTF@C1;9pOŮ?v锢}Riơ29 /dLT$*±( ov# ﵕʲF^,d[ʹ)8d\~,zj)v?@rQG\mVY^U1qjBF2h+fY./zeo:ڴ^djj%caf qb B.^vr$dX;lImS9rsaIoW?߄zhCXICf#m1rN ydaǵ<3ŲA5kw;JsZU`l;uQBd")ң|DW|r|H"â,o/d,K7!԰#`N0Wi+SLuRDR&.$c@d`>)1C w@P$"+%_/AI~^vL،>kGI$s;"uOwN4@P9uP\VOnw. J% >b܌|zH'GLsŷxI&g)!M"pG(ۼz> ? a5Po6wSoD\-k=HͳceϚ8D4+hQ\K‰@!q(IDW=ZqNb~oC8h{$P7?$ ǃH ڨTL_ԛGOYwSr $<=md/v;D:8ٳ+'Y J Yhp}b_""mn9lVÅ!_=YGٖͩ[0%}x!,y9W~@OlБh|.J^%>D_yeal nĂG9ΏS,5dGAt#zdAW|Ų?W2a Yhx eAc+⇪kEҪ넝0Cbl#_e?ܵWh=; ѐ K˦{% oWp]Yv.f{)zLnJSħ(}Ue Je\B>vYN91 Nj2-A eዉg,L *.]T/ٍWZksj__}8fiF07$w= )*u@}:v#@zʲGB?r_ l˕ ۘV*w+%$0ͣ;JF?lI/b@+#{_A ݎ*ȖG\rÆfܺ|ILW2U'UP/d*劯vEX#]&+암_܍ۣSP,cܱhe*o*bOG#oER29g(pѰ_C>²W~F!mNુa-}dW"o~F[Cݤ8KJ-o0 D4I}]>E(1~ F P$z:W y? ૂ fO }IЌ$$ MA:UR3BxẺ>v_T,+( eŲbYA U1bpG n:Q=՗M>nC GG^↑/G`] sU}kÃ~N25B+)%x̉@Y쨘~i7FD:_ ȰwIENDB`tipp10-2.1.0/release/help/de/img/h_game.png000066400000000000000000002264461274324046000203110ustar00rootroot00000000000000PNG  IHDR LtEXtSoftwareAdobe ImageReadyqe<,IDATxieYv׷p7r̚zV#7 !CRK2acA& al !# 1HBjYVKQ[]U]U9T/{^{Ϲxk{ofefuK Mw=^ v^뻿pXSOwԉR?dt;Zu{x~h;C/<5lry&kS Nch$}|29^_I3P=9fG攄Y8uާ?lȃk$hFn@=]MS5L}51!FB9Up_7{#j5 .b#iOD U(-.v'[&(d/*I ~@kaڭ@c0\z'`7r0(՗^-tzXj-}ז/~3ϾomK}og>o94<6lRO&C VD|a 4.F4CD&.¿B_6Q4A$FE#a,TW!Ră Av۳eћfDI ook6HJcp0ýp2(̲ :{4!|i!|V8dYI%S/.]e?o=96[evwRy[FFvVk,rX&fQ&1t< U^6oIu|ҷ1K+̥FhI Fox.@hyɄŐ4AA5LZOvMBɜOÿ0qi# $MT9" Ę€aGCγ֠G&O'%itq|FS$CSo35`nn? DD p|R.\: /_Zirr2 @ n&:Í0CuFڼ (<Y cFX8Dˠq5q8𘼕&!T,vW(pwr4#gQi((NqŴ4BQ$}6HFi& 1S1:4{kt⠦/_%d<vmZ0y$G4HBNG1bUX 1aU?FfuT!m,z*00a<3 #.-qcutBU3TÑp'l%D]~׋9X:;2F&GG „e0~2L;̄B</6h4ʓxLJ~FIAP|K4m7oͽxr"CjtK]zb]oO'|RߞVE2&n^y¦zhQKkSO^'0jk;yL 1ߛLqcgbU?ΟZg]x`.GA,;ٳ/?SEQ:T >Mљݟ-W\~mshZ7=~yiX 4LMu<ݟo|0I;wWݟw፜m)i#od-xawy__ki|$O$*wio1@&͔PjUMQs}Cf.,󌦦2.I(y~51Gǟ>h&3pY.-\Uw?ջUnj߀t~grΏ"j>v ڎ>{e\S2jum2o "1m&O"ZA2|0m+fT_O2<;7C*Q?BL9;cݑN̈́p/4U1j:ʽyȦfCu*4i3p7$NHsɡ'ސ`/v:5훤ws1@6[wC 3`@JlƩ}cҟzީܱˡ]u dz.6~ԹP#]6ߤ3/ڻ{}K?yrAȗNjFikm!kK13"w*GbC魶޵=u]ߧ_=? Ó#}*ջWv]鴶+ݐwL=v=g.bgStOt6!voۮ(G女AIFP#\|dt^=;)V'=U{hj W7ڭwkWGBgF%.wڵB}/k"Ҧձ?mMok$' :b d|k_6vwFtzkh+] |a=ݪ~OOgf#&jAsc5:<}?gϮ \~GK]GZ|L TlD';#ۢmD3QHT&V钲l°!-͞IQ E mBҵ$^1b ඈmIK˾=h[gxcR2Av_:kTFog!PwCn JǞ(&0&@rdHz*7Bv]w#\6Cfۃ)lh3:U^%P3#p]}Ӷ!d6ݰk׏ [c۸'6!:+v?sso{߭ˡ=my`6&MaEjnְhg*3!?0Fό>!7VoABہ IyB›1IӁ.?{RF z @Faehf[̚8o=ymMpPe33 _hMk˄hж؍ jAR=k|msUшs;] KY;%54YU{(usgY<ʲ biͥ]+}1c䎊(ªI(컋k`m&Y9릔 O4Ӥ1i2?4Gcqx(PFy=6-2id65]=].&ak*ԦC[iʾUkբkW{} &0-ʸs86(g4em^ϫ9mZG{K%/anINh֍cYOjYo[ڴt=0% z0FOZڼ3tib^tlhkc;E{cHY*1;a}ypb޺JWj/uke{㨞?uw~~&-mID=E~9u r)[Eby`c֦^/:=uvd= ؜A_%&;٩گ-FB>x:_R''qw: k\~-mZFg_ILL4,h4 )K0{sz2@ta%^4̽@'3fOfevZvV9HMŽۡe81u{Bn! 歹+ahf]wn{udc2#t-?uY6Υze *֊&\N. f6 9.Ft4Vs4sahښ{3~enŬw2%5N9q-64caJڻdfIae \Yu܍ؼKbBj/w6B wҮ73F o޸3{n>hm.xTx{lnm_:UiWLiUܽZW;s_yQ=п־nNIڶ^2lu3E37.W0ק}4ܫmYQc$Dd-j0Մ>n@^ށhޒ3nae7%6u1_|`$G04'D"*.yZ^2$Q)4hm)RC67FFLlq+T`fhhNfuϵM"ˮwMxa"}܄\MOudɼE 2 mV|14U.C.8CG1Ʒ*'~]X3:UnᇴwW:mG>>96L[_TqWDb~F4xq%OE֜ : ƗN[ͽ}sG^woj A4"=?3)iGMf½$KƛvB<_z0̓ݼEo&Of85ͨ D B)֘Δ_g\#.~L7mxzmLM8!"-ھh.!M 艹*|UOWlcs+s.4MG]f7i簿<S{ኙd2͝홯:e[vb~Okʾ{|ww=ׯ#úOlh_+}e'fǦMOD&NO3/Z\ qpٴIy[ WJ43/OBX/ [޼r}b`nn4k5mm€G^jf5s/\׃K K>gԦefc+Y̬*փua}:vl$fbe&ds*}hӚd+?7Cy MЌӶr3m3nmƮL[Ĭ-g{fri=3dυN%n1ffN~T|x!]*w^;slX}3VeӤ-Tko¸mϫOW2Xfp<_hGГiAmO n̤kkV`%-m͒h{ %Z7&׈m]۶ط\GMDo +?l[aU&쓟~ՓlnfzmeyU=2V޿Z#~0b_~ ,pykR7S+ a}g/L-cm~xf86~oL}A''O-5//pÄgя΅ ˡ;;&AX_so+4̏H_~ oݸla`u5 jv~}&_/ojQԘhHЉ6)PZ hL'mtq']"mcʗۛ wubY"3ӋKa~RH:;fͯf_^\NVN'Sgn{*E񷽰4%YTBFWh޾30w26$vN.EF =mڢRY7ӆ b:.7}i~4CbTwо+,S ,d~ ճsnJs5ǮY"ͽ_}Cr>/?V>;2^\?~t8?c?c}%??G ^3?w9/3Ka +WBwn>󥍟ik2IṁL7~ @L')?mmBLmC[ C=@{rÏ#sha[s7)[P|!x8E~'&HS agn(Ghw?ݣC?S>m>a{ k~o 3̌}1j}1Wn=~%%q 3aU nx4+Z7f/ X10scȁIFPpɄ C-ǖ7u@ &)묜6Gq禭5pl|n޵1z"Ĥd; نw\;fF3w,Į6vqY/(q4c7f$ q} tULcP"˥1AX'jQLP#-1@? i6Q5*ߋ E<Do&Yrm-0-CNgSe+g ^=0|F;wLei:.4-ZaϘ$<̌Yy# ZτI'QIr:1\x=[l_{&}e*n6?7vcWWmyGW#9$z&hŠkX1#&Xq.a-T1h#mTG`B4)OhcV2D)/cŅJ!Wփ9"s> 0 UL0ЖָiF[]e=!KS(ܓF $k:sj?Cب7_p,m|aS^xpey&uqo=:3aáon k!YTX4_en+k}ZX]k{aܹe~d͝0o d~[]I{ana!Ќl6_~xBxڝp!1q# asB yc=>s*ep1(J9"([niլJ|$7)giݛJ"`-_=㙒_V&Z)e(ILC7o{TX7ɅXLCB< "DaZ6{T5WD71d ۦVƄ@ⳂȔCQDn 5vfl§΅[o}aM;/MnhIo?12S}`(Ĝ =k%3y*0xitwObR6/`Du|Mb>9hem]htÂD} !BnpX6N Q%-S2CmH{Pa^t x(. (՝z.]8doqmX O3<(Z I`6p\ۥg6PLixuH\9}Rg)mdׂxgNRi Q F F{1O_=3_6Ӭ-t ;+66I6e`eZI9ϜZ63{.)>@t JhЖN|"_p谟S `I_ǴU0b~H;y pD@jyy"UuOY}M(a-+$#ML 'P6~Zҏ4v"AfҾz\Sޭi[b{h?۬byZ\*P+]=SJ0ah驪V91ͬW[ ]W}V6;3uQ߷M8'Ql$^@PAF>8pEĭI=9pLo0!~]ʹR&Ii%I,h9r̤w![ =ؐ0CC+[ȌC (Ldk3b !.+gh% LY;m>cG!ص1PY8AQ16?>ai2bؘ٘cfnwHT1VҔz27ڸ\G6Pm1(|pwF2 Z*`^s:& aCי(l5z>ٹ+b~ndJBN;C dRg3 JAZS> WM XdKzI*BH '[R.\"&i_Q 䚐 %7%_/֫$x@0#ȓp Kt̍vG J.h3(%LY2#{bdN#YYo6܄o>`3=dʩ7$\}A0S za2JELE)dyM@iVC2*)H$ h2br/ن2Ɏ#Y@\0CED,񁏏`0 ֘%JѴ~̘a@90tApwaB@)xEAf^+ELMb Z>+G3/ڈVGˀo*pMarTmWrM(* JhxN}LR1W֞,,_9=.ƈv lXh&q;cڣ%A?yM0$mI0cx;իD]#DE0t%11 ˝vN[O; NsK6ѮIM"Œ`O6#d'[R[CD*:W1*!AC#"XiN aƄE] l-_{6C<|GB Fȫ05MSaT*cvX;,.EG,MB"P>m36D%1,5F0k=p0"V ϗA߄h#hϐ&nuF $bXFE} 91A(6V恀i{Om2UX =lg@,Z|̴NT9#>zb:u`P 2覵~C䙣4П}MXA6VPIEX'F; (!2iC 2>kOEgkFkhg֨pk ( sm8ipp#-=ӎ5|~JE%BSvy TOQX+Wbd@)ÓW^9WX"F+ ㆯl Se1/ƌ'z ]HZ/0ܸn&*E(ȱkm/ea21e7_TيOʢQظ}_> ml>^:)kvt DrU;cc'`LW0I-Fƃ?<*mRFP0#J%M gHa^|iq<`Jc?C6@&0KAgQả pE2ȝqAf]chkR|'n{4RIqƐdS=X[(2RW@aQc߈u'*$ɑdh2iVBvfls'7's 5 -p@Z+l6h1H D.)7=3*q^hZJ\M@ `d6>V3FZal,8*bzܯKcj|R!HE8vKH1ZO{irDBRu/Aťq FG&QvиB0+OZKBr֞u24QBVPDRi8qp&<4a'1K 0(j)hJPuJcO S\ձDOPMIJӞI5nT&400eԪh"<9U1oB$Y9'ˆWC [e1`=}߈}̟ E~l{ӧFBN>|o{{+>2& SCw`&J'ɶwlY L:T:zfJI#HGa=$[a6Vzf<}΃a"̈F|E=hSPB(pƤ- #0,_u6~$E 9`29O5kSջၲrPPPWEC80ØZ[)0TEx/U|  …QcD#h>TvVeCaJc0cG?VWN!1|EL,_-FrDUe lYtT~%kTSO.n:>_^]F7 L@Xy@۹OlRR&Sx$QmMo]Uzbʤ߂cjZ:1Q<, 4GvuLJ:uAY~[oOK^21_5=5|;A Gj(,m4JT_lˊ_}aTڗe[](u;qՏ2U!k)ס{KN G{jj=L;`^&66hEߛo8m[N%R<+Zʺ׵W" kk6 j͖81Vu!m_G@))B2*3#fd<-k7b+u3MXWk=#rk& wWBEڽw$+iՎ'Zu7:(Ce෶”HߦCNwQ ^/]Y^X/&k4G'=iks1&d!_q$%Dcߡm ̊<"$(%g%SNsw=_4~sPq_94Ѵfdc\Qy!`Dݡ\%@˳ЀhƏ²m]azڷʥmNy#@p'>DE1Jtr]}v] &tm<)ӥ׀ZqR͓'JZQ]?q#{svE[_~4fb)6m)&ÈX@Ю3YLbʹ'Һ̟`P!CX2ܛ ڎ[AZs4;KBO5[H@6$P(kv46R%R VH+=1 C,# 23wf'A-ܻko-^ؼ6̯ >y"^Ü6EYۻZlSg fG*j|˓l0 / Sw-gSAL)~zodϩ*ӏli'ATDiJME?Kx6.K؞/Ю3?iq"μ{1%.x(u@jH[WWhC)%%o"'򵂐tz#o_;BpK4v˞>ݜV(m3S HJ"`t{/SslʂyGivl Btb=ϻ 6}qYiKD\<Ѷ)O k/˦ӡg5]1 Nv1 *x՞fO]ہw(O;0z]`[XihKa @F |*w84>I>]qNOuWuLfRPX[$bLB;8O^?uޅ[wOݹwgƭ6v,>=󙙮"0Hc$M SI@5:.Z!FP AގDvHzl;֔Xs1`# H)}B&&o֍}33d@Dxyo6ʚޑ ` LO8\ t$[3[1IN%{ 8=ioNפ`mddcLJ7,\5c1F$ 7Y6l`^X6]%R vO?=??7; cBbkae9;_쥽ûB)-8E,7!ZB"7;>uY)ZUuUv@Âcǡ*4+4zy1CQxc3ƫC~cyV΃N8̛4ΖOP>COBuJN@1L\ֶsYeЛz.tbQt0n,|[::94?VxVi]UeNsAQT9XH0:Pik6u9YD_' Mr]/Үa&ʙڀ6 d3;UB-F4r=-"%zAv(bګ.ȥL- ggo͵KLQs豴IQu8\'G$6ZϿݴ8YzI[ 7j Ѝz tX`ʂ1 eUP3b/232_&[1fe؟o ;Cʰ$ ?@cgi(K0m0LPEA#8>']|`dEif~,,t @&%+BYaCt?_06R˱0mCNrS- ϭ hR!TӋ1MUGՐJA42=eͥWS Y{^6EY m,|x,hX9ڳ).Hثu'@RCvMv,1۱ғs拋Pf<m4Ṯ} RUK~_2iCu~i΂y>jBH O"Yw*6”1 j`}믵&k)&¨\`_8vA8*6No8Ǟ5kƽݓKu}GȦrVN9:N^pp,Yow1U=Gÿ#F(!^$D83^:ħģAlz)I?TUWlQ$A^>:O,4:qh)EHui櫇^mXש' "Z'wyO ;ClBlé@ڷgcڌiu6BJjhDfe͌h9GzM ƴKwkbtGq*u#:ڥa^wIciHM:Rs|_%r=i_Q J?;٤o` -͏KSe &O]yn2=Rڱc JQPYnk?7?/u׫nVΦN[7Z-ƁcƗ$P䢳'Qzp 9:V]骣hL M!'K%^>K,Bq C vmsܾ'2 Uy;I6!=y_|iP3 ֋SyC=K-JZ|\;2Y{h{ DFHZ[,'aD TH;|iN #Baڙ0nu}a5h6 RҦm&XShC,㛕&Ԭ,ypuO-jZf{y;jAET=8pKĿ֍:G#HMo`އ.N\8”%}+q'Y{)PZy) bisnI$%6p]94qz8e:I8^ګkgr-i, H_0V*9`"&Ҩam> Z.3%_zol`D "80_n=woJg1{SO^&D}vAV.B.mEA&~+S+Jt+Z =N QA8ҵø6CA{S^3ĭY m/Jh.=B [bK>jNY:LЦCjևu[`FБh/:w^6o}`%Z:ʄZPjs8+nk}$qC;?4ܸgi->C<<9 }<r!X/c߽۲ݪfS)aӭo{[rK,˧{Kn>(t0 ,Hxm{<(K\ z)DNV0g1#Jwich`Ks<Z@Y}潝7F, /ϊ)),. k%x`P0"P1GgnG0F4eiH$ёJÑ0Z@:=SwNU[:$p5MEF1gx2>T\L^cRh(aJ`G5 q]BMEss Vo*Ȝ(mΆz4ka>A̅sɇ>͞b/7,ߺYNʢHM*9DcՈXuM(I@S$J_ySwK0!PMH9ss,E9DY[D+ԙ(|=qC 1ue9ݏG#j5?'ǣc1ՙiO;="絿ߣ䂀^n*|Tjz$DSZv{J E@*E/#ߠN32kenO:"ғ *ݝ099k| [uGoڒه0*]o؁Жs3*A_ŏ:vLmZhֹ˺?;}Ϋ[^OȠmx TH4UCRz5h=T/dzM*$ &;@W#W !)Ť#DӜS 0,YnN'V; "fRJ/L#zZPfx5<go_nnߢ-e{UthD];ōܹv"dZǣ ig;C0]?/l[[y>Xn&[fF/=ݼ95sr%U9 g[;v_{-Sk_fvС#~e]?v=FzqPNz^JŘdձb0>L$ڶq 1J|@(D*z`ޫ)3?JOLxs4vY >agS=jjJ&!G\+>euks1߾y$^^=JMV CYTmx"AjHc,bu.$=vmt}fV>p|iEkVD,ک=jˮstmQr҉hӤWT5%ZYXXB9Vd!xTݏd[N -ύT{CqZsNuzp˘#iDž\4n?U= ܨ,Sˏe(ÃgfJ{qWr4/dKJ3a7nݝ-ޚ5޳MM-.u>LhtTݕ#%.8fLRzВ:_Ž?i[գ6I 6:zt=Lܟ~q>[|WUdeǵ[<80>!ztmk̟Zj־nvrk1!%K`uS4k?M=~zrX6 WYw5X5dg Qچ'@%e.1A;xľLUڋfzkpH{ LՓ o!;&ywд->]:&\8.lo^V;0?fGec ۘiޒs{C댏6ܾ&LI%keR͕ AXY_K:BuC_0 WOgzf"]3iNp"B7(6n&_c|\TUaܑشӮuAuhҥ7kYO[|n b!(QVv^z֣fh6}Д hR,Pc02\;HH_OjFCI1f#ݻe gކOEdt]S#W<~N&DJb1@'Tvw릈ڨ,ލ̜QE>׉іδظ崣In+iJ6wh[yYS_pژJhS|EUdW ! *ncΩ9?i[ًvv]$sN|;}38CA`TX^z~wz`ǃ05IOى^ 9'ig~AP#յmĔHRO 5ݐF>gڡ0 {rՈZaMyV"ׁh: q,z |LhORW#"'(΅ AG\0V>|tM- r~pg.چؐmFFqV;3ˏi Oۀ +(zLM y#AIz>7s0{,,3`*!g#äa$1eV.f$@_~ܲQ+:?qѣnI"GM0.Jebu{k2fP ^4;Ĉ Lgt0#ff>MF*1Aq 08sqG$Ba:mמVNE;wݩLfτYN]fxVLwٔtt.5@tMG ECщx{u\{5Ky^SM(+D=N~tn<ݒK>%1@̆mWr]SӖuu(uY{ xt 0}4S &RƌBkh2|3:M|5lG#G7޺[7Tb)15eS^R1ǔ˷RepA:"]:m&V kwGpO; )'Q"]q~x|99,`FeF׳Vl ˗^Yt m)Йgz6mSf#Й*+]^@}s;}K`{B[hU~λhCۙ1 ؤei! S'N;:Zy ^++%$4qm]Dwd^X{ %Ҏu~ ug;W$iG3ieʕIWIIe|"jyпe=QV~S~|:BUו9Y޽)?6SWQ˵/+kREJN^}e9 K0"<`@C@0qwBϴgUY1 C4u: 1D#uqڽg:"`X@Qhld28ޫ#J1 7a=j3DicGZp_᠋CIQEvBkӒ]әe$OphԶq+(hrr(Ь5s.DvAoKJNBENT;ph툶:.H+Ȕ9:.xTf64G8mg#*`4Q" 0(hV2s0kit~2wjquW9_mH ^=d0؋hS̩`lhwV3*C`(%hC}3R\.zvgavYN[rwK)(xxg#b1> XAiMAi55 Ժ^ʤ< {w&& CWu[رc+/kokI]Eĉ3yʛsfUVuwuSjv4A! `[?]kd ee2h)Ӕꪮypv{lJJ6{D|kNuR%QuE;y t.ܝ4뻡*^lm~9t;&&%.D\+V7c{Rc<wK6Fz@MD'!ҨX)0b]tJN@N'`H2 T+Mx&(f~mGB,6N\x{:M{u~,6,\;q28eh1;6>\E%o` [+  exĚM㐴V#3Ôo-’AHڑ+'%H3M+fʕ{*Ն2vd0M/^zs]RAW.s~SwH݇':P6J"qZ6c\( Um[!D)j6\kT,l3vDytirG P{א&Bd]s= 5[b 4NU P 4eQSů;umb3z;8]7vmqIc^๱ ,leTW_-vY/;_+.uྼ7WD )kD-]'KB2˄:Pm]dsG@u>NVڲ#Ȣm[v-0w*ˁ2D!ExGձ o3BeM5}KI;o?JˬbLkAY{%*[E ѮvnSUхblkYԴH =ou Iy. hp'wω7޻}Lz=&gq6gXE ^(.Ԇ `^4}$;S0, d\B' kEcr..W0(~99 @g!So$IDZ1&T`zvU{q鄘-H* ZLA56(@<4'{r{@>ŜEhMBϳaaR#4ml#WYRX3t;|nK:9c-Þ ֕_T բًD6h;dӸFܐ`QH\mn(K'gBPA.nE٦{UIhrMITW;Fï liN4ڰrE]{JgrR3v֬luWՍ8l@+ݴL5's:6e|!uIvE2qI],xR}[2hEEu*[![PϢ= a*ǬYbz:LQ:w"oH6ʑG&Pcw *PI IPi8(K62\,FE!LRhdK`c B/$1 dR[yq md)H9ۯvo|i٣t~9xoZt?/lD2-lMrl ݌&B$-a6B„mL:ԵYw #R.XWh;EBuNS+H Mja,XUI06Ӻ<õOOeڃ%nj8TrWCA^GH$BEYLPpt5+_iaS]xT9MGK!IubuZtA- &BY*'9 ! 'GB exo1=sZJBLQyN2_o[}U h U@ȪNFr0;xbb~jɸHdaZ 7LUljAن Ӽ\Zpz#B[U[;z vn?>y?WO~~'ox/{P]TVK՗2f{@us]k VGaCkwb]A,ƞ2~U"ƺcu Z+ٮﺏo}~zAG{߻w?NPnzf2; hd8"74\*qfUacd!F&g$lP%ҋ\pVI`QYlRp@2 똋^ V{WogWnX5ӳ|ᇿ7oK_;M{MCTQ ,HRcl8pqK8W(*DZ ǏH%cOh-[|<>lUܨi H2M&{SƂ)YGDǛpݑIJT|o@Ey*,(r=V֧q[&Q. 4"A4eMV 4/Q4UA Cl5z%Pid<["3TSuw_>qw%ɹ(HњL-Dl}몈^<)-f1srԜ 9yDH =Ssw!IlZ,C 2uV:QIbQzoSI$1<+ Q{K~ܞjQƻʝd'[hWlσ Fi7 <`XEMh']_eЉJ0c|bh60Sp_=^zx{~x #O!4{ͽolv~ݼsM^J _4VˢZ0jm5lKX$ F B_ 19xi؎ZWjp#2'oW ҟot¤d9 K2p;$+$8uVHz8uKYJVODiZd2pțkW$bҤ$ ^P[O:qfŽվ攙AÑg8.UX`I@ '6 C~=4jd™g_x|s?j9ugBѱ$`Q68H0NʿD?<3!grC2"NK91wblZ 눬6#@]PI*a I/ u)knW>cm# ds [^Ris鯘ZMu13F0+zS8rϥW_ >:~g?Ԛkwv'}IT`X6-r9+LĻT|N`D%9+WB) o@YQ؋^V2}t*v{K(_ fӁ*m(oQhNdoq"Mf-{RQ#h`Hj891os DI픋띵-/HĽYޏ/w\En*<S\xpO4ٙ(xQLZΖW&諗y筺]GaK=:Qc^gT{akGEŜݔ!qˆ>0!ŔTG.P+TWV5yQ-UOIn7eGVE <7Mz胠B \ɋw)vs*##tɋ,ڈt&+" Km);75Bc?<ӓ?qgWGӓjc~v^kgz~Z_~֦d;wy˸?\ma[@1O+6DUj4i]U1dvC"A,2~s]~m/+3qyp9sU8Bi`J̸_fVN66:fi7;AV T{sPd4I$Fy y)u{~H5Âq%#naFeG[B8He09=+w) Ln`<&j׌C"6 3 IBImP? ," P@7( 8L㲀 1' 2U~xSh[&"Zqg..R8ƙ洀 84Ny;!Pj* owwg IT%M3 7I: ZbTFEUj6t.HaeQk!2`6#P1Ҍ^?.k??^[k~u}{^m?* /@7k@ $[  !4\ C6y{{U"<6jͺ̉mCa᳀!u!4'[ZҞxtw;ۍRhd!t#Zҩ۴XR#(+8 ڮ&ގ6rE9u[/;K|X(UП͞=kQ7QQIc?Ma:`Epe/huz:n$W;H1Q4X%#ul|#˂Av-w~5 r;/`DmeA4ѱI+>b*~A WPV+&DnԎ<\`[-8mU%G2P]ӛ "bڹ8ݪ,=riՇ2O~P+cKY<8˃#[p'l3lR&2È?RGM7OGE;{_0 }I2dYlUWɶiAh~Om* Y-s=gX%'xF4eG9-TD7uQ'.HPATuq0ȒPV;C9*$fX,J$jĘ[g:Y1;49CTFL(Dw >UY=rc xW+WD'7N^@ϩ`yLj(vzh xg.D&׍n2zkboc ĺ&Fi%XRzBތě6YAw1Ynxh{҂6۶Ҟg Ci0@P3>ك/nx b.J$PVG`?Vk=ƺuջj>M)7>#jބXw2QWL87H%NrrGEi8䤁QLnȒ"~P1ouvw\&i7b@DRS=i11-z]8GfZ#>&|;3^K>7'(d,:n,꾂͔|C!y2780"8؆qdوeԨ|/ihƓ@c C Y ږmL%Um`W%E$YMXWuCob]]컰B҅wV>?JsA᷻w={P~]O?ή?vzGۺ(Д5z>f'#.'.3qAjF+XZ9 kr犩f%1bS |4}&"*cWP'&P^ yĎSJaZ N_ UUl֡K_1lj-<mz"B:ej܎YID!'e;V/lkY3A̅37cjL$ ccgh/=u<1wms?r&ʀg;tsuPS-zM3 DvXH΀e5"G $Q]:l.7==t"8'FetVRߌ $Bggͻ&lQC\ǍD}iNl\h:n-nN.Ա%ZMocNf|>`QSNg !B,ĐT .x%IC҈ґdRãBqCoݎ hYzh X $vvQlCG1ަGvDCgM>C]-|a;6 ض9qAPUMч/6މ~3O s!\Qw.(ԳCX N︠ !jJR7gCBA]u!oG./|!d Zii; 'SΓEO'83y.ʵ8I2w኱'n͢Hk*2r4dVB U;{_q\I]ęuxG|[td# 4np 7!YF] 0VBl*%'BJ#\)(X2{̻}6,N Pj" 9fD`B<Z ȶ4gTkۖ(+Mj*@ڞ¢pG$2SQm~!CE\ h5n ;gC8p##Μw3N,PB,jJj.\:RT( S"fRF ӛ@ʤӳ5D_Qelh^DG^6@@lD=ǺZWcƿ-@qo!o t2З^,A:l5`6#iR`r*VT3+ALU.-DaPkaՈsiE:aF(>|{j6<^CYse0DuvzڛnfRwW32=b7ϻӻ N_ݎÐWopWO:piv.cvܢZ϶NPt?'6X o=\x lcY qmb 65 NUpC B=&>+:;] i?+jS2'zɉ=֕恫P]&AaR-SCL(!qUy##J, nE7ĩS.>ş`f,gK]3.cg'+ 4SҙiT幧.} )NswPtf%2=8} b<&\qp+Eb$ ?t# 'beO_8ER/ŽmEMԻKyaFf8`-ƌ EqTu) ==[c;&`Y3 C&"yx/DG[ҢiA;)*JɳJJc^q#1*l/%8ĩmŜihU>|hdS" ,9r+uM+dHM}$M#0%p TleCcYx&_9uYB >7($hw\|Kaв{B< >G;=|e FOrP8DQHdqٙoNZ糲%Rsj4F܊>=-OEWBBQSH u)-$:7>ن\V%:`ܕJ2 ?g鯨ō<.1u=R>X"MI?V6c h 8Hd0!WF= {H՝Ը)?ɲwbj]M1 ס K ے, ip>>.>;'RLיǩXD`*YZXs"W[F1gVj}SYFp 7Ev% 73]4G!ؗ: &/X7 Aɶ\:c%ZUAwR ȶ= {nhwVz"9![`h\2=J=hT τ>žY#؋"޹+<RGԋVxƑÈ52}/T"I"ZWou5kձt&Sذ1s!MJ^WE6F-6og]拂4L!wlᩓ-x[AزD5qPTPNe(zH'A%W1X^h%!2<")(]'Eғn, H҉d 6Cs&(Gi0,~ܾWsnvwV/[>3T sA 1e@Q78qBS", Є.ti|).yЄZЎq ^ݪ&g5ž{&21e8 ✯S%ʰOMКZn5m2v^.l[py zy*LqWd&q 9] frt"aӰݦ<&PZAT32 ~|~2iV<5Hv{ IU?ułTQm|x:t᭲>o.aUFx.x8;Yy,zom2٫l7:gzglzogK7fD$I.{̛JAO_(e>; (k[PXf<E?h-\PթlGm<삲vov Su-O0UoP-?E&a@Ĩ^3q-dQ[50%q?5oJ@Ct*NbfU#-Әw@t;"-6w=mZ]>m10yx][ :@ rUaϺJc=9lXW˶J,B+-O%c&$9J o0W/CЯK:aZ"*녂O%a  3=⺤kr8AķW #B^fruD y|^4S*BFTx>c r"}psWii}~'\%hWv˃b|q:ERmz" (p5F\/:'nn>{+L "jw_MBD$엺vq1vϪ8d[]pv.%6펪,=m4vQ%U᭹\J-l@9Ҧ[tzݒ>O!N0WbW Bˇx|C).e*Cٮ~c?7a휚y$W+NmեykؔgwCh͈UR[iw] "I)]'iՐN >:!Ŋ3e4D!]ەOzE oFQ uB7hZ)<І ip1I#Ѣ!AZZr v|Q4YShETܹۓ_<^-;l҉utz؛ Tžˌ H6qd#7ޑt=B$|!$P}]E<$B))&R6xfԸO@Kױml;џ9msםZÓm׶OG&%,~G }`!.JogېTk/ьq*~b[L*Iڭ (ut2T3&"iM=FT'o-minQKx!KNf˅w T>kȹ ]oluኝibb፠g^QZdP{[N\.z$A5~T]iN?`7 5 EUgSݬp;o_S EuKd{Hj5L*Jf4irQЂxr,]zޫۓv]S ܸW_O e2Nnk[TqU3v:9")-`+8ge\F?6Ԁ 3>OvJ.;a/ٖ>?~I6~UĶ!$8ݤeI5qGD±Q,%G4sё X؛o`I ۜ.FB4}aPBEIyy#/ʌWMq Q!<(i}k͹j0l,l*rI5yÒm+WM||b^P@ދumBýV2z:A=MνgWm-Mؖw[b(bzNF(@gs/ 47y @%N%Hѷe0s2j$+/^쾜~UbySmlb:,(co ">^k`{"u.ȷ`tV;Z^uźyHB-'FaTqdH Fκ;R]<7(,0zh80݈:&0N@YjMqu[ .cM4h@˻_$r2$!pW5R Onڋaʠ)'CN]F]ʮGOwYCz_Me?xX 5bw6+ۖ3n[zž:SU whJx27!%sy>٦+ύd\EN/IF T)R)sȾTq*,~B%(yT2uDuBƫ7>bl`Dk40m{;ٌ+pxУ{S 23. SR0Xsl1wFn`Fx<c+‚b/H}2ʪ7t)u5WɼDӦ.XW*'Cy"AKoQ':odM)/,|\ ;Skwɢ76. *1EԼsSB2 YS<$`gw= RI#LȽ %Ȇ |Y܋3+F[wo.@+{{yӢSlխ^7G>usԺw`||(AM)9 eא!'-˩Fc_GR>?ɝ\X`4ƟRV {ڣn7|myyЂ+LG{5 h,>lϩ\ >(jS'RwWeG=C#|TdýElUv]g!r,] u`eyPizeËnr:dDzx;p1NFd:R?2f\-ou(*"unLtƶ0۝ߡ-`ǵ;q}ꖉ;յuxO哵Qy`j`HN9u r~uC^{: Cԉ`E*` deaݢ )}8r?HSM=f?hMN/햣|_z0{1ŵ?{Sbq"\; 'cr]Ʀu4 6;X40e:AtKgB]g PPplnHtu;^!:ef:0!yڇ*e!mT֥t6A}{urv.<5ѥM SRĻ]ڑ~\vLaS̴  Txg ÃѮWih9ZupӕϨǍ WƨǮi~ۮ/?ZywVi#^X+޹}ϐEFZ!wɺUrgu -,=[bBYil -* L6Rl7cNc/%[E@]6-S:E=u(t l;NyՅF)YخQ}#eۈnT>vL֔k죤^'MUJ~7|VJU1y#l!Ǟ)msvcӋNźjP.wŴ)r,>$.+bRߑPJ`ϺLFtEܺ/++a5'<?}N + .2-(IYo['Ѓ' :+[I a:nInUSouԗ\50Rf*NR}HO?}^6UޫYuuA202?W))x$,I.$#.2@,@̪ܾq5N[@LRƽ?P..;53 OF;BBiEwؐ,?b3G^ %fO|8.H^=Ԅ!r;ѫ%}ax Nk ;:} >7ێ{޽-c'Md+l\^m\lrVQZgqi:JǦGSs6ޝ-[bR9m$) uRHf' 9y||XXWp.5!'I5 v|P*(ٵSX%AQkv4sF$G%S뙘-`悪6M喂 2}ȸaʙ8jk!&o9,lڨa\[ &e4 ]\h25R"ؾgd6?G ߹u+-m2YPs+J٥y^baz~C%ם}yo_jBq47h,\LGDqfjCkiIv> Ka` Cz]܋LHA@xgA*xloI!dZHCLd׶ w9) Jڄw7>m; ?* ^s͢ xl}#;! -I?]#F1ϯgAs2wƁ`S}l32y5TՀAfy [ͺb.!K(*[>}̬[E3%'a;z&KI<sAU&[!HbqUV)C뫪8nZ4"Ny *9=NEd0_\j:,ڐ& G:eFe~vHZM/^v*yFw"pYԨAM+z%B\u5lOuչ^ @jx ;vNJ_2Lŀ8L?6YH$ʝn3PL'䯘opkt"b`iNI.2P)[E\%tFTW WLh442BHaJAdQ26"qeEG=ED9u=%r7̳j(ä"YzMah Ն;xR0~1Yl~p"ٙCXTDCYYIȹ+HL~OZGm-`FjyJyM2{gQb43+2% Xp()iӼC1Z*2ͫlpݡaۺ8Nl7Ղm?ƒ[u |_$́w^_ÛuEN&y1@+@*-/c]b]`v fZ9B- 4~Gc⥲21C@YJ!wKp )pHYOM$!e8vO#GVA&64.SO)5$DN-wGS}r*nZS݌\oHS ,I2N.CJV@#ƑY6N0I :i_ TMqfg ;uNT7OᇼV!6Օ8T]l0R Z6 c6@aQ'z9N> a*R40bV“.L!a⴦$؁eېAoYT4`H +Nyf;ra[aFV0%KcYE=ʆ ہPE[UIRB2=1 U- ^?_ͱaDuѬ+9uU= )XWe{ƞu׬v,߶!{:ƿ`|{oqnUyH]E}͏y]ؼoT_h[do(|-+671~OM__W)oҳg_hEn__[Ƴ__\Yzl?@oǗγcU_9ߘ_o*Ҏ&^/2]b40,1J+⊇tP[r,|DO<~IX亮~ꂣWrAL QtdPT?{`ζ,{emC k Ix GҋDb/WK)ө:&!cw7" Q= sl_\vVĨi ndޝ{>"`).5^C'1<% $*'};X uJ(]q}B ph kK\yS 'lJ\)mV3S7{]xry?|&v]O; M$j72lK8& !?a;%{#^]u>DJ.SulޟpAe g"CQ\EeZ`R22 5*T\LkMM깐;^Wp-v}t6Eeuum9$=;yҰwTXf& i&#nJÕ*M~^naJ#WtmfGI\ RXʋ(u&H_\{0`k2'A~ AWPj)Jq$-qN1:GbBMBP<<YSR{C@UKV|ڔCQKqbn݈N_8Id;u;RI'3n oɎb8KR)b3HD@JnAz*]eNq}0ez;%CLu@X`DpРqFRաI2 u6Md";Z`o+$+2d moϲyuVVl`%YzESfh4M ƣU^c`nݞZ `+SAAyӊ(oYb] ЉI}F;tGmǞػ; ]TAa %A;> MӦ!AԫBFؕbBː hźvvRxt^PpIX9yt o0yyP 8P,BmFaǧ3݌]^ Zp\~dfN5?iq[B /tjCKdj.DNMb#}ʐzr`O-:-,@aDMgafc\yZҸ32#.x0%0l"c`E){6}9t'RGb(nH/l]l̔*7i$q ^G,߫Wv>qtX ETf]oSK?!my.ʛ$li6-R#5^M\Oa rɝ-tJdk143Wh öxi]v!u0eVY.*IƩעu>4&QA:HFݡ+7IC- U풺I:Fo21n5<⊓u* wVco j`2? 5$A6QqF2[($)u]y4\T$ǖ mقQ!Y}Q#WIL\7-]@]GuArA"' 3:_|7׉Ս>~%QKʼM< x۹mKD6B9v\4Sh5K>96]N6ض0mwZQv;_tsItb6OI==~ssaﳓâ{޹*gʼF!; ۅ;Jγ2>ý rs`J֥lwlIm[ɤaZϬm2c{ d狺 ^`հ jNs#Z.֝K3%כu#R-Bo ;6~LIܨ桛$C q2 (hņ_\  V*HP"!妩 FqR6C̣;Z%#r7ű !ȫNZ4ˮ ."Z\OOG8R(,vTv]k#Dm #B&JȍaJx|\VBRcϲҳm7Sx8՗7jlG4NG}M)s%F Xtjv۽iM &[rgd# J+ YoAЅM~qopד(IQ))|N*ԑgY:eիw_geYF",y퇇_<ϯ<_zZ}@: SvsT0e@49ildD|}pףs9}vNMaɋe><; -݋iؖncdݗU@u]%2 ߬ٓ/j}/+BeBf]fn䳷  vTVTltej5)uɬ\g4&rJÈ$X |(Lsu Pg:X4Tж|OPڑx3l4`)h.ǐ`jij H^n|ZZh!^W!όJWӂnc&kPό.:Mv|~ɶ&}^Z;Aq)nǴH ۦv^[FKBK06b/e[˻eY[&0WլJܺJsiyiO~Qla/ƾP'6u= IpzGu-yynQK#oo@D6hZ7MKtβQXDIT?V^7ldbm5 e.rCkgblLgl'䁾f]TcOl0S Jw˩;p}sfsQh*"4>7L,!t\\٥*Xw@Mju^rG]`r{ Qi7ړ깳M IuCL 5)>SOt FTE1~j Yvsb]w0*>AM|KSPģ_" Ss6! e>IEd $N& zv! rolpENS-H]Kd|k4g0L}2?<|Y?a7V}\[ps%`>׏NVv_UÊm 2AڈKG,,ʅ7# 4(lٔa@3cl׈k Z]u%IZbT>.;CUǨgY0a.xPd"v#|S׳uQ.x ibJ[ƵC^T_*ޙ{sGECIR]] = {z^ hHN U:Fw!Z=ychVlUo;ԬCWE7d/m$$6P@%U$ӄk61OT8P'뚛b6|\d~qV/꥕e?e{ͧ{߼޼}鿸O~NkhGOHQ 3Pb)JZ N:6Q2C;x`y%|܍ZtQ LU2wȖØc]y͸qz~G3  Җm'XW%sNgj֕)rVѕ]>1sC M5J0`]B"_d>rזpPWF9kmE6aB,-Q`ڗ )Mw&;hέxF0Nv0K!UmK_ ݏr5ƙcOcZ$Lk5eݒEoi`="'!( VeT\l6 DI7"y4HA-iNgags˶;vƆ¼MݔOM?sju@~*zEpuB7r7w?{<+g'ǃ-7j1:9YdFL*c!>mOds: `x+YS7 !sN*kO"bShnvMP/`ī9Dºy7չ8o*0@ feQD[DRyҽYwQ8E]c{w7*LPh%fJj¢R'EM&P`*@`D*M~mT\p^ڈtJQqfH m<aWҍЩ=v}x5LBav$Ym# !j*hU&SߧyoXhE*#nG 6eM`7FoCѧ5^j )-#Qֿ̓D/*!@FZ%A݃нR/R; Wr`R+? ϋ׊[c 8E΢`+wvބ0mT*+lYiRoEPdCSg]\崹ΆW)P RRwL|]d@݌vgwq]R^Œ$߁b6nPSrxf0FoiHpGŗB܄yPۉoᙄa; tCEcB{RxBgr+cK%%cK\Wo^z`ٚW_>8d?8g/_}(M5e!I4)5M..?o)`ʎGl۱H4=KcѦSBf3/q'p:[Qv6:^TgDGh.I'kvTc/n"hG2 0g+y?ާ%:Um@{U#ڭجjJKQaM9]iL@S?AoGZ\@2CD j;BnAܨ>Wmp<03Nw`"f e_ط#$mlG]T&Ƽ1ËAV')adˀNҰl\/w1ڜX;d4K׮ONv?V;e(5 } 05DlKINLv[aB(V-L~d{<Hs@5McZ6 zJKE\Y6 GOK|3 2}Ɔy'v'f]9i]qO27ѰIEA{m(SKC?k$= /py`8wzUAg^dV1G #oD>jdNܵ< ߬QU+-%f%dJS̻@gQȮ! :3 ᒤ["! ? Fv0&$V;==lp2Tc(JYTJ&]݊vDTQc͞,ˮ}s֜5Ht7$H 6!(Ѧ%z'~'be) eҖR% E"`7F59}VvfVVuIys:{ַ](8.3V69_zk/noޫ77Tŕ}i rE=}vWW?uڭWVy(u4Xn߻tgºk.}0yGy+wy鵁RaH&lK8NBwa^ŭo+OQGExؘ7ö!"`JO;̬/:𼊊D1R޳hmlڸڱ0o#xbЈE}cjHD#/j'&bywH^yR |ĩIBW;tʪX&HI*SIQaǢCR%;Owkќ}rOTxExT0jD_$<;Y ┯.>\Z!I5^(v1zS<NNGAd@*\~xƑXb5=!ݒAߖ+t1QEOw^^^9݉ mMɦ: TwZ-g KN:Pvm tSxKw9?~]l^[J˿w>7^ik/`GczPfzb( x%+B9--ڱz4.]gDqջlSr:5 ]dݴLUŠãb|Co6 X m>4Bk˜W%sӜ!dj "Nk&Zpyl!֔:{{ts+ Ja#DbHf#^1S1x9 og0){kհg/~A"ѻo+.+RC&xO2CՈyeCj\|"w;БI/p?9^/RiXm>f l6:ɧ`]ylȌgT#3 Lˮ'Lt`BW!݉,""5]qN] p Je۪бPB[qoI; Un4DxJjBR&+6+i|F5ʓ`1[R p ,XI[ЋlUTl# J#g܁b-CEDj't9.ցTǰg.P \l Mn/[fnE&""5Z׏,+7%A?5AE(CĠՆ;R".U4 adu%sON]Ǘ~8[[%PG܅N[haU tqoHUV{U C$p&T|qdBᮡ /-֠%qw;Vѭ'){^ Dx :DLj} 7 Ѷ&J9>5BЛ4$y%I1p cq/T:U-n<57m z^x Uf|>E^)gK ˙{iݩYHq -N*ɞjIt`fD=U-fiõk ]v#w#aۮWe.mM$R As=u2{N+-lw"Uq\B`G9l;?&<|TtŖ+5Cż* OؖD6:-/CN2dT'vY%.S?{P+yvU*%-fļ+8Xj&oo㊊댎 MFb¶EJ0s*n3鞻Ewcu^JɤU@Wo1`¾9܈!1~n zu@>$R][)Oa0iS%!uy>JR j1+4 a'12v͈/v^>iY*X6؎:{-i)kEc#%>9\X0LHM^lA`r *;)!XTs΀\j DɦGhy@rMW{YepI w˫I `]oMQK< %̰ IHXJV3EYcwo "Ӑm%v} ,I˼Ge^m#"1K̈|o|{7_{Sxu* I:,"yx?g! QFvE.r -+$fhB Hύs7kr\b7ˏnqQv"j8*CDIذk+;6(!!讻Qb f rzUD?4mlMqvSb2\[\{TY9{ΡM+Hgy7\X6xznx>@ɭŪ=[ Q۶˦6@@ʍ0,9F}{Qe|?TS`g5YYBzc E Z~b{ODlʾS˂^~<>x߶iVGxNɭ3Z`H(IX<#N65gEz8}"vjs"0AKV߷0 Xs_$ 4+g(AF 'jQ:-CgGG^ i|R3{4Q-^~Ɣ& G)3b2؎1;BkP1Id„ij\w=8bbSclT TMeZPN;4X8% E;ek]TmXB&gF\yQ}o}MF4ږR;K3~fБw_ǧ[sDv_NΤDgV=V5%>O 1I6IbFIk_ wŀ!#gPV@EĖR[r3IYDŽԆ *rE<!LJ[&vHCjWy%@H :zW,tCZ8 {'|flHsbxϼo۾v;,y`b}U.h6(8+My{C qɻ뭚. Q M|o\\ ɖ<&$ ҇zz=}{+)=6AQދ8ZT+f[J0(\F$6ZBWb{iZH((#Տ0j!fib eYY͞W M%]aU{R1(:.QN6$ȍ@/IV:z>|Ǚnea\I]Jҏϋ݄%?/j]-L@䝕{UIǞbh!W0='BCX6ܛyWm-Z % k$R*lטdE=+IcXԥ8偓[ ̽ؖA7*zJRضӋ\KǕMG/VEb:qضܟm[]0aUyc\[tHSS¦@6$,g籐C٢M$+ƂۇUA;32ij3h׿ Wd= rHnoǁ!vg@}_yAu6m#&ږmnQ D5]Ca5(*7&..ѿQEUVe`_?`+F}fŽti]wJ1)E!-I T>ˋBJ;)Z ߗ"0.3Da",@BvjQ~-{&Vn Z|LBzS&*:a&F%:>x IFDOhM\̶PV3 oxvn.mٰVLSKwM<¥O+nǶhb]}&.Z6kxfm{9θ,lGipy5t[7μ.]{J vLv!ۭy,dkuY\&`& noqǎU/I25q{LiKF< x%H.l#./ÚĿn^֮.OL$w{.:\1.nMz+S߳+R5z`ؓ!;/ : d$,.?6؎I/}*L0ⵅ)w#j24JMH WՈF ۥsXCbU12tJm[6ôn]hhd &? "Mʌ^ Hj2Wⰰ_5  Jr;n8 .k.+fg,:dq-y 8իP.cS{-:! )3֐hB[-Z KIƳMB# WC16${7^q:o'ĠlHv̝tu,$o#sĬPQV{߰#.^;*#sJ0G{%-gxރIAP@ ^؂r$QV|& AЪ e]a"4 @U떂8G*O| 5ȃ.G5(yay՘m @o&QAI rIӍ4pV) wFyE<=1I*7L ,) jr:/*<'c@!",*h~=CۂIqM@0 nd95.L.S gIewY [Շ/9 n8jStqsW& +LP0tav=6s_D TPŐwRUQV<}?ECl<"l~APIub%S&71u啺钥U(BrX5pZQ(]v_KK&\OV/^c< )fw˜S#?ppiRWB¬ gvpG9͠kXǓ@¤؂ =)v<} X2P7ԤY&`٢%O2&RMDZ _o/59},%3mꪾR¤?1屏g'T=]KW BgWM|5Kcqζ֍P750ke؜#3-W"MՊ>Hyx|_|'Rp^)7 ՘W״c֗:*"(ήƗ8)-zݽ׉Ђp)q1\mw|!{:pZlD*WSC0{g^ .nEfBM˻TOq]0V\/>X5!l+IϞT+ٗ'0`tPnE S;⢫4h q1U4_1&Ιs"B*iD܊@Y"@ЂP&G^3?1d+?HU7nX@Fohggf6W;va1r<H4tbo; a;lzsx)>*Ã'2k3vLl6<zQ1/PO)u؎ƦZ<[š$$ZFTKD/f6؎p2]D9ibmԺ?Whk9Sŕޝ'.|޽Њ0%M%uרU\dz`}Bu@E,q8Q 0՗ d\ ̕ {*Dmm$u\h(3֢Vdx1I Bʪb(!ҎFS2Y܌OCwQG;M3T),(inMQ!GWGC*mۄ ^#qe$ǡoHRe/;^]1,wW %}Sr,4 ad4U0ZJ?ܑx0'&MT"m裴\M_'3NN^,ax3x2x1ؖ'7hcjy:V3RwAF,gExl׏y%CU>g[/KyA{VcT8 মwmx E Wnq *$r׿Idžv\7]~z 1Qrz %֦+'Ib!->(S;`z)N88h1}\Ibo~7.*< $!0LQcO]9 JtWEJŽ+g IV1IBD$fLu &KI.ccT]9v})%8o'r%/[jclx]8o&1wCcHL1mnH$#<@)b;)'/\L&LФxn?lwG ~wö,؞qQf+ Ʋ[;*jmeLeBf Ye^j$ '<# l^u]^(rW4T~xb齛ڑg%D|}-y dYʼn\Fv&ROڲ$ s nZ{2Ū_ 4saoxINtwIxRb.Mhp"N>t+p3< `bAwyrr[CxD+8/ko̤>NV%ex[X5|ZD񟌂`K0HXK,3ۊJlnNA-/f7}*؎RbN9+MPڌ҆HaXTSpEJǼR6;sjEZ|myjWCvow6/ а;ds4jmap&/q~Opw#e'{=wA>$S IE&Q}Wz>eE|26D#R6&a;г w QkŹ~NˋD;`ʳN`MQ >9D|X!Km$ԔÓvȂZx\&/jpQ¶Su4uMm@G6b ȏ(; VSԚR*GC`s 13}ߟ{5JY³VV.Ovh < I~<ZG8 *n$*:y%G#.u>mL vE^d=Y'L{ $! e&cOcqm@=x?ehO\l-+.^>(p7p`OqڠH)Aw`ֆۑNP_fE X4-1PNIFa475@%aPT$֭GsT4OS CUr!r2]=o K7!v54@ JȅML*ʝ;c:[^m-:'b1QҒ`N,3.`(M@Ɲ82ow|]_mѡv|_46D ܬJ}j,2dCIKd0vNcGlKJ1éVgwWgdww5xool^ t7<2,E##/&PJ"E,»U Jwoo,yQ&!`ԣSmǤW`҅zܖmöWSIq~+ޓnǞW;5ymA`5!.;2pH:!ݴ{Uk.ǓAfP1bU0#Qpgw 2Vi"0gTR'.*=0&*O`^3 f8.s|'3;;M&\u%ⴳ,fq2 Xi"A)4?5ReF`DuM]]}!$#y41Cv`r~P{+a6#ƔxT( !xnTl[OG..(ݵdA h+TIMm5+xuoc/B3HqE}n^,WǼuu r㑏cs,}IC΍j))z](S˜`Ŀ2 %EҌû;?D!!oؤoʾ]{DӁ6攮uHiqu=ym#ǁJҋKHU\I3?\^eE!@ԙ~gק@݋_0k@rKcO/~ISBcV"׹2d`&h+"$Q{C]8+w gfҭvVj{q]a$@o~>j:T^MM"Q]NI3Hb`H]C<+c.FI Q9'2v,vw+W h%GG"<%ԌN-LjKO):Uz LyXö]LUkPዑ MObPkOܤ=-jD'FwG~w'\aN+x[ (h5Qp$ >UݚKr׋H8j]yM$7r}S|_ڑ&mrɌpcOQ>w5>n:cAVj<>1dXw@v!j ,=ٷ7vt*+.MBӜ[\wAM߉ LP1Ybˌ[:vy1P7eVf 0,,"㼒+@#r)RRihR6Rn } Pat;,lˢ0x+Zׄvؖ"IYQ?XDaTj^}C~B1ċ{jۄulL闯 %>K;ZQh4~{oEm+&XJ-qOǪ tb(bSV%ꞙJ(E/-U,6"KM=tۙȼTufq" IKYbHEF`2O N,(cai["<a̞{+TD,Eo*%ޑjorƛݡ*1蝐m%,DH}xd[cO!$]bV(+vlnǞvN0Mv3"Û.3 M;@ǂ#"J{Ƈwpjd}" ,$ CS4 ;m^{8c/2@.T3I*Dd7X(Ru4jOAx;8JK{#yMۉm%8:X:~[Ņz'%r[Eu".*&mPӞ&h:{+ qÙ<&;5M Yo ;QW4USU~hQl?II&H1j]CÌFT}痯ꢊx'/!蘣^%m:u 2̨nʉiDI}j;C(z9Qq]P#hCAv_ Ѱ!7Yx_A |!:QWg݈- {EdӈC]ʶ.8>^ɴ-mv]øt8ڊEA*xlWvD2 \Ì}P3j 8}X(J& ۩6(mGa; C+؎)_pٵ@؎yd mwH[ HF3 :UO8kU*31mWW m\Sl^щ]3U֏En읈92ϚvMޓX/Uڎ~vfh4GmC/`|ێS}O%`%2F"(;N?8:=TyoXsu|<5zj!`bV]x h*"mr<6_G[Z͵`-C[\52hg^PB5yb1~p*  Ot8N1Ўsi/O:ѿb=vTCI1ZN:gdErD>N]挼q.Hc;{.I$V[xMd3i#.5ے_pHL,vRWiډc*MlXDЌx# ; T10\*LtYKIxbE(&$EҔ?+nhC"ۮ ]ŽPTIeMhqO=O=d!됚еs '+oz2:;⥒ېva+%^Ee7t~BplYBq-;p3OUgq$i|mi6%mw*C.L G%U~N9lE;4Hl39Ym.*4)ywJM u>W!Wl+یSƪ>m#a;vZmˏu IIZǖB|l^Jj˕A'Pj2YEAydB- 6uPVzu {Ƌjzș%l*jhӾ1ϸ79ܺw1S6.¾dž `=ԳL: >AAW&;;qR頝˽ t\N)CJy궫;K)g3dvvp*J5xwǂB@_[$Ji;!qIL}>HqU Xd9pI$2;.صp\:%b*}?&0,|'ǣ1 K0يZ3熴|Hux7ˎ~vƿcG֟>v\޿b%%۷]{|l˿0nRM*m,:Nᘞ'2TJWi3qmvu?߭wJ:.o;~fyS7yQ0WQlƼۅ45+ u=qA:GüzAAͨwk3GIZ+KX1WzB:EkePuΨKZ||5dA?nZZy#u$cyGhA5+DVxkM&{jQAxZK< :+o˿Oצ[a>'`6]7ܥ1Va+ϕImCg٦窏 !4oBR4~`zqu{qcz||ilmؚSPe>KkR{xsv\okkkvLg~lX sf>9"8 cunQ$[gi̓NpXR+Q02h 9LRξ{m9z e+{a9r/{OǿvX]]=t8xf^v&={*UѣGzZ+!ao[%?n`x2KPAX[<ǝs(|]vW۩N{O-iI%uCU7OX絎]v$ruMF|qYBz|'w"9>8X=CCu>ʗlIV2JⰜ[mZϙ{Y潄eQ8nA" mz|~=N?VRzpfӕKһ_;q^ϾчتK{o_qp4␜'^zDq쎌~z0G_R _H뿘'.=ʅ/üN5J0?/5.;ف Ji}lDo-d(O pC,zq9M޼GQG%L^ ţ8*da vڹ?G꿓>szt+ڙKyrΤoHG[7wLze5WOgL+7^Ki~ի ?Oaokr4)OK^_~?]@w4?=J߱w^ڊl G.zyowu_}#}k~{_Lwk?L?bh<=6xܻ[9du/Dž ,"Lc|T/җr ~{)5 ={ z(2٦yϧ~*[Z+?5usza#mQ4 Hoo{?ki'K?>)}ZM/}t/т߹NJ>J~Ig^/~'x#=JI}|lF?еԚtoާ(u~Giy'7Ηi#C'#, U==d1C~Od?z:t>~*vzG>FKܹkice y/FLNzoO~zz돿3…siqe5x77^KkKLy+ ¡F^ ~?~?>蛿{|L֣?|i2OzwM3/U{' Dpa\|!r\No<*W^ɽlxyGl*~1|%??^~-׾' UR ГђG8>: gS;N? Zſw|>ECϘX%M{x ;NUzϓ7yl 䅣?"{R6G/;1;Igffmh"08أ쏧s9S &?ǣE$qB~dMǬp'y%WvNZi6=)Ar\b% (QTj&( bc`\޽.|''SquXT\>bA(=vS=+XV>l'=w˕FboʧT`۩wϕ+WNs> w?v?y JvXjcc#?c9}ӱt8, \'?u}O*xVڜ~N?I55r9 ξK8݀\s@{]ڭi~?\̓ʰN?w'/<燝NnolVK˫{6vW["ͭ*߉FO͇:s z yUǯ]yqSyODI++T{;;ί_ܧ~G[kU HUqMW/&w9PELT6;{ۤ:8_Uҗbѱ{p̸y#ϖ>`:F-<ۇE; Hr,f I]FIWnjlV`a *$ی X7zo¹ufaOxolV{fɆ5X…D9 ,!fΝmfu=,6M|V.`tQj,1hjĒ1ߺIlӱdeXT m*OI~#g ;8=u!/ XxbȹexOϐN|:e.;DcOaB@>^M!.=X~649ɂ v%Dxw)6wQ\S6sӗh#P%%%|fhul@qu5ZwK℩ԑLT({ۭ> 62~FMI/Gmq p0)Uh9T&^+ŸWg Oa|Jb1B&L&V+Lf̲2{Fmlkw9z K8HnjTo[ńq޳q/LĜО'~gzªF<4=1$m(--߯"1q765agx xsgﳯZJ(U9Sr1 ?"Q NvJ;šZ)  ĦE)%aV熂e[h׈S ˈ UbQPGσHHkKLR}/cM(kX "C I3ʠ6H_~<;Lz5l ]fl?V|:t3۔k/,Czuj~P]@xJFT/"=CzmJun(hRjT2E'}(rw˳O?Cuhth}^/z>xy]Kf^vi5`V:e !!?QƈٷoDDDa!e;"D7S(Ć{kFf+RF]R_}j]C.Z$ll97F 2~JYB~AvkEO"Ƽn_<DUUYYYa Rk_Tf[}H _yV]u窻G }<[޿wQx)pꤓtIN:I' :D't褓tN:@tIN:D't褓tN:@t{bmzIx%\)D?qFlv.(*$MhfϺ! Xm6Lz1>erJyޣkix=.\1UC XR-h` ղrjLXH-/{.OHjgM5j|^7.؅hSw;[6^KqgL?{3pb)++;jIIIѪJD_u>҃sy4y1{Pb-wfټyչ6?vj23&w1֔F}8&Z xviӦ6)Ldd$RWWcr,<>Ymb#``3pX,j,j05[&lغÆХM~_>u,Xl+憻.' 5kq55(CXͯ~scEWE] $m,1JCA) E$vH(js\Jj":=zY͔D(sxNZŒI!jժUЦŊx{'\tc$iRwq~4̦PFRa{2ZSUTMvf۔:g61*E`;G,zY2HiЪ{flbۯ3>ě\}οk.FS*>%(,Uv2:KF1ν+/莻d9SE&ǔ^9IIjVc Y4l)Ј^6+1m&BCuRDHt`)8|p5=ZRIپc-ڹ,fOlNtK)S%tuFn$m25z$$R_B:u Bq9Ȋ18 IezB"+Qe~ⴢ~B>xClaJF]ݏӧ2wv IjqoZKqҪ;}:ǓA&]0{:snî;&&.WP#&h"Il176aqХ@\[gIRׯ<=[Ǵ8/l`HDj@C.QF2}^ZY":רRh*5=>1;*5,zpRũ^kQ*8rdNd 8)uRc{i܏_L95k^@VXlH8JƂ ֭'Oo߾\q_uZ2=Ĥc*RMRlbo.X230(0\ՊӖ0qFŪ9? DFش^{̢Sv<cUK*pZcD[Eoa2"^eէJZV`eSz]sZ͋Τ,>y&;w]F\R,eH7P@Ll7bx쏷ڷjvm4+nQLdr61ggڱcrM70D o~KAA.HBv8ٲ/_!{c:UH,G;65p`h*ʪQLA-zvw=5MTVTR"2*Sz1-&u4 ɓHFixh-&%ZukDjRdǨO\ĴE@}k FefntՃ2ˋo 5K(tAt]xFj+ׄuO\`roRZN#v%9n4!p$zDΡp*Ʃrd|-$tɓs7k{ F0_2/?2W1*W/Wn&݆AvNk M~y;HaܛJtdCe>٧^MZp+#>yؓ%fX+`Ɍ=X θZ:Y@6[l QԿ&/[Wٍ6 LUJBtBud>mٲt6T•\]O|f:KJ%۫Rik?޽{Z0"ڵk[7අ,.놈hx4V<^J [!I鴾J'޽ys}U쨌ju37n];slMh|30S) >~x^|E-VJGy1cho>[RƕKf`#ӰReTSc'Rei6fAz')t쐔2۹(' Jݾǁv5,$#3Fjxo }*bxBYfic+ANJٴۊ!_Ddj)q6ܵsu,&2V&W@4[M!@INx( ĮSo #ꉝ 3oL gbW^U1bf6)"`vjQߋm;H=h½j#\:fjiK,mR(C0}ta˖|v'њ)MBH+@ټe;Il3Ʀ T:Srzm!9"!2aMݺ[Z}H?pwmYFF9 Qd.wqGJ@ݼ~zM JjY#IؔSnSǔ!ZI*fT`$g">b-FaWqpwAdI ysqJP&fǎZDwEJ'GeggɒɑMF(ܰa9+7nԀ!L[6ve\‹ZHʾ3 r$eG\/92~"e #-ٛait2926E~ SrsEK`uM7:Ar2SlS|BN3@utN:@tIN:I' :D't褓tN:})@X+U:?*+xv=JsJR- $DIAIIs xph pQ4t:(\)R{%FRu\a1DtIwꤓtN:@tx,BԜGDj~oK ϨRPMVlbnn%Oճr:B65'?FFY\Z-f3_ j6XVF 'l`ݸ4tf,?)%vlVn``V/1w>L;a:[6h>C–zPF_-eb˒)6i&A&1lBVۏ8 nb6mf2 f]8yة<ȽGznVm"tڵ)=::H5:qc<啰{kDĨX:"DFkD5nXluV@ fr&֭?r+w[lȯՊHGkF8l <u(mdﱮOJR,NvSϷ3mPS,eһh~gd$8\R.Jû⌍lRޙ4U+Tl +LWVHAYT&6Ċf~oj$heL.Snơ~AJ:#Цc9"iv̉U1GbEH#8JdT5>zILc)>^x?.t)'O&<τ˱$R{K ofx}b YtͶ῟卩[i=|²=w!j4o.lۀ΢ [ 3e9$}gT(7CYt7뎢p#x) ֓:i'ćǓwO=png ~r XXɯΦ]z`=q _'[MC5eV p5,*]D\Ħ" &j=!Ƅ{;>b$vh;#Y?_LX^BH2w: Urűf"6niLķc|?|]'2qL^(M~_竬=gXoeN89jPNR-EVb̸JDМ]iLF.}6(dB^u.^+Ľ^쐁vZ+ʜBz D[Z:13dTTU1Ȋ1`v떁TŪ8MI ;u%{Y:Yxq, 9}1?ZO+eD{MکY6 փ񳗓x/;)ޑ܆_^0`C#+qLԑ_p؏t :ج&6՗q쎬ֽׁrm1KxJJzx ۷[IrPRrHqj),AZQ"VcJ#7#|JM2Q1s;n or≮W"ZphgNc9{ i߅^ޟ>ӻg.˧Fc 5n:9܄}'Wh$X&P":e$:QRy56{1 NgΦ_^:֯ `KSߍfR-Fql_t\Mg;"ȀndD 󗱩#)t,2'9]-jO7DQG#^QIz~_R⢱[u\5@Z57M<_R,QQ01)U,XSL!5& P}zaƹp&=У rE=1mFz()LJB*0G(zj^;dp[L3mݛ\}a6<4v8&< w<;yn\E*]ZKASm:X8w2~8o6/},R%)iwRߵ[&5)qT]z5f{ 5#N ?12+/Μtʈ$J)XHbxx&M;һc2qf힢|~\$Yp>ihb[)6R,Vi{ Xt*`%)_m C}#{`ռ)خ~gte) sJZdKOi\~VffOߝ CR\%٣biЊwۃg-"_yOT 7W2\UjqpZRw(мW>6~~wAe{kq-Xi=/ne0*sGm]#ehx5S:POWmT}_Axc9Ո ~z__]7;+yy0hZ='jZ'o>Vm2Z:aEUe?xXktb ziRG lOcC6gwdEA;xQ$sޔÈ >[x55v'u%dZ3F7Cc87M97~?w}|K{)ٺ qQ↎KTu#pK#>$ c"u׍@/1iA$dժU\uU{<\s5m)4g)Y7 _))bêe|b%qm^f.vרA_DIcPI3e7zK474bӒ$b*#T{+7Gp`vvcQ<(Xɨe͒_ajHTmRrvue!F]s{ͣ.\yb? "P2;$2{QO#\l SBBVȀ;?^zg[.Tl]GAU>zwEt<rgX`6v1(wa#fLjMu|2e9>n3re܄74&1|+B&a…SN\wuXGyDVa=iԍ},]5IK[UXQ--<|#s{*G2  kl$FOMzHQ#*GmXد#e(P$so~;HnEZ)H?l1VYp(:{paf%7Lyy9k֬n2BBj>4<?^`X#kPƵy-j̛j|M*VډM3fj#Pum4p:ʪ@ph[MZ*BssGGEPY;`tjtJlRj4_':ZrÞ*qĂ?ŒlmjIC?5UK 7ܠv{jB ̜6]Ǩ~zh,\ %iXv-/21&Mb5Jˈɵ@ލݢXd)h.Uh;q^y2{b\db<[o+:%؛_B%V,NrWnf̜ɑZZ1p)dʴ)L ~Řjw3(ЮӦ(v[`$= ϋxeI@3k\H^r¢b&+ve|ˏ7,ej~!fC$.bѲ\[qyZ2C: -I[GQ4 } b=!RA'QJT( }=n&>/`| 2tܙW_}U/ؼy3cb"ޫ싹;yXK}Jy}{^r7Wэ' ㉟̟ޡxNl/޻UB4ʭq,ͯg^/Ű,̏;G3̕Yl.+D^]HsP#XvTt֊{j90y yy 2!A։IZ xՍ_p߆ {$J5?“dy9;u>qV_t _9H>'j[$s=G߾}ؓan<> ̟szo(UƘ/`o5[YFp >CSx7M{^ٙT1#Si A"5zrM5d"HI7FJ 4z#%$O}8#bjؾi;菇2qlشY/g&bcO;؎}H>,g rNߍ'K) @׿y|_` iwy({x_˾j q;xش9Ij-ټ(M3^ VW@HŁRj=mMj3ִY4Y3cөwU"#pڌ$LbJyyibАUA|AŸ|<'btfXB'keD`H?Db}u%~K,QTrfhþ-y:лTmUŕd'M& 7PMnZg#Bq8VV__šuyXڒ 9:|UM^)l\P$IdÂ2r/Goe)i2.-1(c7S;/_;']3 k+ޕĹ"+$^{D(l43UuʆTI6HnR6l&R}QFzZc(CvReJZ5lCv\W lO?lj"fnHnOx%!b NgK_@nzHL|-w?D"Y,DǏ}jVTY{.Cvͧl40yݰj|}aϥa0$4[;Qx|w::[p xOKjApHf0X{ޱWns$;ڦx.O }7(CPTҢOx}фl8jpaPƪD!i٩ۿ !zaWk6@B:N¬BW٢`pk{:f3=ZVWA$_h®Ff{ȓ c{(bǔYKGؿy;5SWJ T &ЯG{W|N%ACz+"wQio/7T֝:8L^֩kD|x}z*Fx']'a/ @$L^vXcm%;([Ɋ%3!'b+%Yٰt9|vڷoK38FԪcMWA$lĠzᮮ%&)`ijc,#w.E1]xw>-]ش mrIQHiirVh>((!Z׷?^k) 5 J&YdW v~{& NzҠ4/VZ!Z聚X Sk4aW>!I_▄+j<.lfOe]H_e6f`' o:a׼[<2F; ”dNd^2+.9& 18Pcj( z!T9Zs8q늯ҫ76>q.a/~,}ThgINvZPRYAayHk pCnF-nW*hvΑ!_.Xx1cƌтW\ȑ#ٻw$,eQШ4qH#yYl?= Œ:Hc]=AcO`2 'seLWY5/V /u5uﭺ ^[n2MF׮]t\äƬ5$D1x\y^{Hpj'Xμyk2?Qy[̡-LZkZvrf<3Wge[4״#`9b5%ա46\U㌊cOVp믿ɓ'裏jtM_S!P|yq);dbhΟ~3]ؑ$cyw;{m,"X~870xA ')=ڵ܄_۷kr%F]gR}KFrU#fe} dћ͑u5Z^st"񑶖tp7V_ux ~߳m6-wԩt֍D]f~EvWp$7!vVl8@qATzC-lW'ǯj|-?Ć\/X"+2ׁ_"Mq5AqH)nvq g6tbUr+ Ou:Ҝ5։xƍog}VOgfWhmrf|4ف>\{^&.B=6ʃ/2ws>=Y42|KCw)>=D.8#o"$sZ1K(Z1ͅl@y1zK[x4_:)r*_*Ơ_Ҙ$s%m*LF'"$o`X L|0^w'^Òk|ʡt8?Ԏ),v(S1hPTT4  Uߚ(q"~#^OSޠCϋY駟fܹ;޽{k|IFRX:()2c12ok(ƞCzAV+5{ ?x??35xf7~r]/*k5im}4Xhi&J H_PRx=X:([b}=Voʔ) <`ЍwS Sh}83BV!$H^&!cLr&Ůy%/z x o+e50/BW`3]֣#AG{yljLD$$:m\pן~ 3DH2 ù Wʬj W0&9W<&4H@eOAZ_IPsM*l_ō q8y ͡>3O_+d 恟H1J΋QxT3 H-,-4<׼׀u2߉{F' uuwy%v)MWt:ej։gfҶfpINߖN:tN$\`k:tDRjwܩm2g$+ynlCQGU_( MͫqeN.=ʉDAdSN]. 0@%m|. 窥`Jk%% Œ뚴]\F*}Ț/:E6/ݨU3Y{\ZJv瑗_:tT,QĿ`֭[1lڴIS(rsشDUKWnHRVWa'2XwěyOX_KO=#o\<7GD4S[UC :ҡ@CdtxWr8*ۘGqX$9xN:&H\6m⋙5kB-G'щiO$?5&F$=;&Pu}{)*/dJw]!vФ4$!nYvv)%dr(9w+ ΡkyOf԰J`# UJ趐NQ +8b+j#m(CܘӸx(AvǾLxL>~cC~ OĕcGcǎ=8-&5ۃQŤTTΔ4LfzgĀ޴KV>mf5MUS$A¥l٢"&1o<-נ9$qQ)iS'"ZwUU%$ު# N?6Q7hLnw-Sl"6!SL694I;J Tn.!\ZKRϚ|!V_Q(N$L(9-= ZK1cJvD$vSC=65#R_ |D\5߄=ZK 8qP$LH:t&DDV DitMR'гs[$#]G:oOtчf*N"Ɋ'@s3p&h\8 :,G8PlĥKұcG ңP뛥}O+8Pz-XjndEfawÏ"d8^5kRVo+j3}% ={4׮pRDJIs{lCk^S$U!u,%7 -ӥW2ʼ{DƷKjp#3t8']nӜ dֲ$/Zw&/ӟذaRUw0}t-{)jNnj[ruDT/h&P >a-5AS# Cf&a?QhYVY\^lYKyR>|x {*d2uD7V 㪥Aqy̮˙l=V.bڶwӛ. dNW_my{|=??MLwOoG?埨hcGp r(qC"9/<BIp$oǎWԖ[79nIN+US>vʱJ۵X("$H o۷yL=D-0<3o]^>ݻw C(+c%aoE=[[Q?u'xOUAt(VeuFZ{_DݻW6T!y^K uЁwm7~ j&wЏ[C"s8>Mw6nA:lB˺n}?F{]:_y8=ߍGW$]>/ 7v\Y+"iDaط,;X9oqc]e Af-"-qTSʸ}_Mÿ'T\%Wy95n K<#ޛZseA-6t4ݳ^W闸]7 Wuw^Ooo 0g1:GnKSY,kljo@zi_=xYEWE$8KO!Ro8hY f] pc7a&nXpi5=etl_ AQzu ͵@O^YDJ&8HL h3`~l kpqg3m;#B<:zFdrS>9 l/Yuq(8}(o뻀VVY_~D^iټ (Ȇ⎃PHDh)N *29p`cs1Z_@<Ψ]S″PRHxOa}ؾk$&m]}KNMXjcsKh۶~H`k`| E@2duNqta-Nb6eݿyfܹ񔀄 ^I,Na*w9[ƚ{.q lb1Ί砟ݵ[a25}+Q l[p+1qr)n5t?#uH.6w[>* k#;6{)KM3z:밐k%vAf[_pqj֠kEIgWseTFrvI-,0u4̍0gn-(kS/ԍf444 )do;|F *>vJM?0x{% Vf:9*]MH sϝen/Ƈ仞[HQ#P_|Q b喑[9;Ar3 ƮRQff&cv?~0B,y@aD2ɬ?`\SkFIIGc&8s(|M^=J<ط:$R96H.dFڎMSIH3}z&zdJeܲǃÎ|Gk#%jEoŶ}#"J7j2jZtlٺC{^c'W:zdj:Dj3nъj*vn _ߏ'5"8/C\>; ٴ$DLЛ0VJ9 rӎ[vn9#So24Ym++0(i9~KL,wC:cp=zFUm3T?|tŢ*be\i[A'͟f_02)8D)ᵮ6ΔIUQ,0oVW|e2wF+б~e<&Dhͪ gssy :Tǭ^OZo%Shy`ov+>W\,$GD-:ow\^|]vxv+pxj0~70?ԼC܉#c&6{nP bu7[rf}3F@W0Z`Fpq"lsp\)JH" UifG0)]&NPSe hX,,7tY O/ R]UU ʊ}WӫXx?F}xXޯc uc}rEabL&B_KcЫKxxގawm Z}' @B<>~p| ^7y Kg_HDKZ橡9xy|qGL~}pl lP{('|/P:tWw.<(_덤|YQ,N3q$/4ZFe(#I0ftipoDn2Ij"3Iԏ5RʐpNz2/< b%fK\&=ҩXm72rbh ŀg@irl>'!"7|l]2r*i zf\V>8|0>O+ Cyh/݋_lEIO^e pU-.\nd Kq^e08mIjfa t|>׺5L2+6j[S8oȕބ <6݌-{އNX cx[11( R`Ց\.!xqCu_kKh"7Yybvȷq)36ۋNQ[pzL~ga3-d 4Z nm\>z񬞬 Bej_n9C[PoblVd.dEbf υ@ˆ8[ƹ ܵ5Y0uaƺf.L&(^`XQq3m\QȤ .k533#0VV6uU@Zź?su[7+ZzPͣT0Zbde3n-Frz~dg/!oqA>$;}$z, hw@1pC (-#craEt?6" nBHOh5iqYXU7_PMJvɔɼ!rgBm&E]k#z@\^'Ze߀fYZt*=I^q :DPEͤ5 ZQ,Q38_YCP-&]eGrRA,MfUp*:J"P,&ёk"HA$dvb 2h $ˁB*EH^FqntV4[fR&b ֮rqU"ɩ] #Y A(q/lFY: d:%VS$jͶ]s.VY1r(eԷ4Faaz`.b6\Dck⋳H o"ܙWQWkѡ Ӵ!<1Z۷ZcҍtP*br4R5V Y߃Y,U6EH`IZ,4^>z u1Pjb HxuKA,Pӝ1oFp!߄7:qd擨inm0UbiAPF2Qݤ`tt&r1,$g <,FDj>cZCD;&ӵ6 e `v<*_jAsd}3n{!L%Gp~&u=h֍=.a|zHΎ~۹vAp$%Cڜ4}RQ&CB(q!&i]*il>Âd8m fӭi0"Rʰ@e^xLEU+ lDc/FMu+e~ 3Q̏[lV: OArףɤ s'_Rg$."gue5QaY𰘑:z/Ζ-!*AΧQ056|im@ii O\Li8h.GPˌ1To+9!c;cZЭkyݑD ṕZ ZNI=_,W> XXT H#:0\gH ~X8:`PYLJI L@c1``2dP0 6Ū"qX| UXi}v;r݌"W6r ęEȰZfQRu:&2z&7\!8uFsUfy[0k쥲']vٽ@T4p^'.$U&yX*Y[`wd&A/%/J뵉T2iIYiZq<$^6.%Y$H4Q[YR9z mp/oU5:*f\V jvEv\,A\n/Zk[<]&V$ LTLZ؍rM!tf;f, 04\btlV_ A3Eً&!rJȥb1͋崀womv=SW9p(ܢwßiiZ3M`>3,#/bfbLFZkϪXbU R@t%f"=~qԡRrK瑵P,h kFa֡k̥hkDCH#KwC;.Ӄ7`ͮ=XcQ _@rpX!l߱>z]뷊up1<:~Yt r;XO-Q:d]0нHx&FR6 [P13L19rwy'>OɓA/ژį/p &pDׄ}SG6^8=Rv _OO#23Aھ 3z6mCl~y a0s l%<[q㘩iڵ-"'oB0;-z 0(+6lތ0,5u/Q%2}N׿u7.6Ν^Y [9#N<ijh2e>Qo4H7=yX<^ \ dD@r T εZ$7JZnw@R=]fX,UG$J^ib8`m$ӧp*~f@@YcO&QP+cbNMfbm\0/X G2!Fx<͔÷0[_y A\!(#Տ |{FzCocGo1o~x1/~ wlv!*_jW4>DU Q,$-@2CrAc$T+^@/XE/8O+VD ΅1 URck]8r&ݎu߇"J8F*S*kG`ӍT=|_A i4Yl0;lBsd";t;608zPL6"}""+VÏ Z[ts z,)|oV-2XS+ٷlcVc_N4z~y_7A:ICMj*"B+QE1{{ fT,49X/0<:Y#ދF V2Uy݆_9(X577\NcrD4&!BV4Bn-&N)W_9ރvp؈ހsD-Mݠ]&% yȈY8,Q0kqi k3K]TH#VPS 0yJn ɬ 5|ڄ=-ڞ.OJ J%#|^ bKivCsshaL'#b8dU(wi2ݻ6 hC,A/]@$ YKfK(/Zg^DΆeWH#vVkp=F cOtλ޿F;͙ Σ={Qn5õJZ`9$T^#!<𠞄ezXK1DeR1|v.G{NbC9y=:082̀{|XʩHL"s^1IgQ$:*gggð`)FT70?WC]zSsXJIu Kq1C'p6ܺ|þx \[t:̴ָ(PiP++=dir+]2rU0T|9O&x[](VaFP2[%l{YnY [BψI(v7L\-lCId.#=-6PPl,F ~f)U)Ӥ a-s6r LOUvh_, >C =QN548J6, iH{톓ii.XZ7k7JN}A4U,&[0Y* OpPFpke㏽wsf2JB6-P#ɡ\LQ~[QBSfipD;5;]pr'Ob&gö[aS0q9ͱH ri)lQ_wp62tNj=n:v$f0歿㷷D=ʮAyW!,pd`Φ޺EWs܊Vr\A *deTdjfWd Z&pZ"?Ho1Zi](]4bBA,1##9\nm|pWϫ{SXde\PzWv ?p_24v{z V<[1FhN#E]^`E9C_x%rs&1Va$|rk+1UejXs/] $Vح0^ Iq^+'eN_M?mAʹWcu{ͳ^UXc;"H_VUYVgXmmGKM6sVW_{pZ5gum2_-czqaj>{YtHNu>BW5۳PK?W{`Y]> [ Wuخgnƅ_GWZm}dgiqnە&"WTIENDB`tipp10-2.1.0/release/help/de/img/h_installer_mac.png000066400000000000000000000603501274324046000222030ustar00rootroot00000000000000PNG  IHDR*r0 pHYs  RiCCPPhotoshop ICC profilexyWTKm}|3C2Hf9Ar,i`y*(8$J,$È TdsΟ]k]ջzu7%!!eK٘}| < I IJ0sqq#~=%!!A M @\  \@Cheݑ n/6 <p{1হYX(Z8Iȩ!$Kg52`Abll<''= 0XF&%PvkƤ]Xb>Q)  1.s8mb\nFvqIH6w>$,!a,Hah>Q;`@.R<@OJfw?9?t 9#mw] {PHB(XU €4HPHh4{Y(@podxH@tʟ B!)0r_ MUuFu8&cZ9fcz@x1P41] 3 0-L= #b/3C?x{A:џu!$LOE H&%$Ą*mBj}|ɿق Qh jQ}j2p` I0<0p?Ȃ6)X8;@@ vnِǠʠ 07.8L|0` A"BB~DBuD1F Ap$IAv#<8R y@n#cs 2@VQʂr¨4f=h"fGmC.:NEq81Ngsp4\.WŵpøG)n#`\S %bX>V5a] 6$^{;b|?"a+EH'* g 1;"H'*D 1M,%?D|330\ex0Ͱ(ŨHexq ;S>v!Ifffqf=fWH%o1a^adg`cIa9eD"ILIdR3:iUՖʚZ+#[[[1[;#4;=)"3G,G>G mODNiN+N*gguw\8. . \\C\ 2ܶQygpphx)3ŋ={ -f[BҾ%>A>SP\||d~+hnSCs܂!_BBnBBuBEmK ωD\5-&:K!c%y1!b)b5be=)$+&Q(1(1/)*([UTIa%ii/nO2|22i22$YDZr9]hJQyT^K>B\~DUVTTS+))*>UbQ2SJUjUz̫젼_[Jʰʦjj~>!5H=54C5Oi>rѦikHT mӱcwÞ~}[yC#hxqI)ΩmO8tqItJpuq-wmx׶m-~uHdl\:5OO/ӷwq p%- j Z8Sj)!!'C>SMԙPaFa>0(,5*j)91s6!6(73.:FH섩DĢy=! IOINNH"WʛT;:vryoCӬNc!郻vfٞ $#8c0S"3+^ME_u?xڛ/ZYiOs rb#>8qf.5Nj^qz~HjKӏypTccqǞ48v ]ŸEE5N2L99UPS*Yzt,lܼlPšJjSګV#tJR>{= Аװ8tYEh+ښ:6zLOR{Y޳y\ʹA\0ء~QbE'Wgnҵk;{ǧg׮wϠb˯\9zjUk s'{_|ƃ![7o^6v{龫}ֽZ;h?3#G7>;4>ɳ~OQ}zk{'/_zUZ)+o,{Ļw'_xZt33g?|N6KWٯ~7=;;GBO͟.~Z[]_nZ]^Z^۱N\/ِ۴ߜ ph p0S@NP7Ȇ[⊔#څUb"X phL\`hgLdcXI\rln1\gb[4B&E*D߈ɋS$ $l5 OS(PVjRnSiVS+SH Ԟ-գHl>5`|$L5x`eu:&n=ÈcSnWW7m |Ǽװr~^f2́_RB2P0pՈ[QchnqҎ$&ۥȦS3J:hwÞ"wr,R˿ڳ3rzJ<|ώL#=UZx$TYQPRxPuOM[mm]i9 M>-m} }(HɸϨ#^DON&,x56&5?̮uQG j;1$Cy .“C&WGC,ݤ3l \o]c0 +\-rQ w%oJ]n9!"M^A~CbRJڐ^ CeN-Nn[*_C^GFƮ&&%f_-z,\m.lcՎ}C3zDW#7κ)uۻ'x;7~<(!TְpoQGbcbĕƇ'h%GibR);v\u3 }nft+a:Nu0;9'!\<|ȟ=sǪ gU_ZwңġԼL\BR_W5[ TZqZAѶ)֒ZVB=;?݁]i\^.2|u_q tбo~b`rxSr/nKpef4 `Ѓ :A~h:sucX%^_CP$\&?32:30}f`9IJ`udS`ge6W7w#O9ol 07;T1+qV1vRT4USSS\=hEF&%iYaH5fvm44gihٯ+{_EA!hɌiZ wK%kIqz[gmIWΏ]\m0m<.x{{}۞g@ T jDφRcCB£##f"¢%ʼnĽHKJU&'$JJ Afg.J9u{|hLk{ʲcpPɼm 9s,z<0(8dXIDitY|9bweꪞ:zq 6[[:ѳ/;w]Rx{=ӟ=t1E;43!|4b-J!:(2]fBAjRbԜZ wn9?592sx\RC⪱:&'gj[u^|ڽ{GWs7> ߾{1G7<|lٷK>E~wڏ҅s?O _R_z|bEuep} M̀ͺ2=K8@"aF`AP&T G+Nۏbd ;£xc|:Op">uy f ,i_"XLv};G/g,{(^U-|G}V E~+u]%nn>~;JO?qj8iҴʴt$} 7&8P<`5av>a[Go_h)('4\8*]+אؑd|?cm׉t723> 5헳r<<H1ӂ/'ʊlT9/WWW߫ [?]h4RfyfRǻ?&/*qwul+28zƣq'Oן'6ruw?P?LmNoa?,Fuikeʎo4 =׿modml lznmo.":hP$ uh8Z>1,qKLۉax |>~L8@$+0$p9]$,$.]փlv\J8l|ݳ|&_ΙzVݡ? L| =[jѯI,Y'Ѵ`pk%z4<"Һ2ڳ:&vrmdn^~}eCzcލ3/6iD݉H/'t0 u@Xiq:}NߨM TTTcHvsܦ cHRMmsz1F"IIDATxw\uyrUWuwu΍FD"AA$E"F=yfd{x{9ػ4E"% D E"DF#6:WT?~"spP]UիWWO}S0"EQPUEQB`&EQ4M,,˺82}!PŹ)w>ꫯ2::oFUU1 A4P l6aPTTDqq*tAL$82-lq<(*e ,BuTihid1\.lKFAfBUU{LӴ7Q]cJ,E!paLӤAX`' >ožq}|>/.aΝKCCfiD"A*MuI)..fjl =( NQ(D8pc s05Klt)Yttв_a& qϒ L_g1 (!BeB7M4^<555x<cllp8 @OOEEETWW grr@ iFDUU"vMW8t]GQ[Y3U>1px5gϜ8[oQT.xp &T=di;`*YtKTUԩSx<OI*Af^A4Ej;Kqq1TP(d(daR>44H$bEEEd2R;Z3 kdY,7@cC&o'3x,i |"0NH a^K=4Q9o)N>#W!FӲQLӴ 8!*>ejt4 o/MZGu|>8Lfd&L 3"mX٬a)JkWeR40q$nBS >>N<ǭ0Mu׋iKa\0djjM<GQ^/a( `d2I0Duvf'H )f#{nd26Mi ).22xA4:1q*hnǥ z.p;Fz,ž}Z澥SLǺ.AII CCCBbYBg(ٳ@lM0MF}J0 ޕ}>ߌi{BzQUnLqg٦iRYYIUUTt]hTE0r#,@(* ywݑ :jIɨ41 >>>H)bkKGj˽Lu.cYEiibtt٠0u]w(B8`GYs8rv88Gq#\w}p#B#it.OHyMi!Rס( n";?: y-u˿4d2<8eo!Øi/lB2u!CUU$N2ˍ o>2Ի>LNNbT^K"0 %0͸BL}2G݆i޽cǎi&V^MGGPjE MӈF RZZJ(ܹsqa|>˗/̙3̙3cǎr8{,---\.:::xר1~?LMMQRRB*b||g}m۶|r~a{9bUUU|3!Nb֭0::J$abbUUI(..f``;wn:n݊磮`0H[[D"'O7dݺua&&&Hd2BdY&&&s=O?͂ '---J[[W[ Kz디L&a``˿dddL$JJ~?۷o/˜>}}O~,eee|["{nVZE*bϞ=:tJZ[[_ x'8z(7o`&nm_(SWWi255桇BUUZ[[x<7aӦM7ܹsXE]]wfΜ9;;$IǤSLJh,api6oLUUN&! x'^JK}}=/T*ev [^R]d- ˷-ww"HؕM7 x< fyꩧx,dYZ[[?>w}]P|S"Hp1^/---eY$I%4M0{gW& Jlղ, HΞ=KCC?.\`ժU,^'N?l;@\.***0M 6K/H$Xr%tp8L0Jl&SSǏo/H$ByyXEYY@E4%|r `˗SRRB&!())aٲe?#ׯٳJ:(]qwB vB@\.R&٦gJ!Ԍ2gy¶'IZM@րc#ʅ Bz3rI. ߏ@ /0`nclN__'ODu<>.|> ۶m̙3xw^JWf.d={hmmE4ߏi+XEuu5aWW Ņ ݻwsQs=y8r{졣2^u=J  K?eeelݺA[n~_ڊǙ3gعs'%%%tttosEy7 ?˗/g֭ 8t---;,^ӧOn_(N-ߥ%T~D9{,iʜ9s8z(PJy~i~_Q[[Kyy9ŋ)//ȑ#$I:D"+V ŋ9~8茶^vҗK/D4E 裡kr9:;;H,cxxN6l/l纺7_ZMM [ng||p8̋/illѣL&Qx<2ӰI \Ȗgs̡63L#Mx͛NJ+xx衇fΝ裏RVV6?t4M)//@Aaչd?~ffT|؂-b1Xl ]$IfBMNNcB֭#-( XEKK0vYtnp\ۭd(/&vwwrJ9|0֭L&C `ll3<<̚5kxm55550q.,Wx"o^x /^NI4[244{JÇ)++c477 vV\I&Jynۮ"_lǎchh*ϟ s9L䡇I .6l'HӬ_E|r:uʾ۷oիWsYv( ._drr Sc=vi;v̟KBbLLL؍/_NUU{/X&i̛7g}͂ xgpݶ,..^+))|FFF}(2oLNNr(**&y'Vu5<<̡C(++CuX~=444H$3̌L>yl~}vj9Bss3Vĉ L,# ى㡵J&''ͤ&FGG4ӧOpBVXAkk+ZAmGouԹiTTTơCXbv1f$^PVVF2$P]]Mii)x>ĄMFFFlM'[Ԕ}i;,)6 sCCCRQ+ !'D>FQrU ͳ (wҌslقiܹӎvww{b޽v?|>^|E;fزe a{^pH$㙡u]roP]]M0aY.A^|E8p@*[y^~_۝ϔos{=C:fǎ:u.2ML60~iF>'.,5MFy^~eFwRD.x<Ç`6dE4Yh_gB!}Q݋LEEhUU9r_tmm-aF ܹ41 sb&'N]iooS rWTUs^Gm6֬Yc2M*}]4M#s͛Gkk+UUUx^麟gWWWWۃ?(gΜabb^׾f.{fIRx<^=Bb jkkI$%}fOCOxIչsؾ} K-ɋ)++5LA6:E# ښcҥK>N:n0 ÇL `?F9tedy7ѐNA$~'ODMMbΜ9wLl#Ȇ8rg;2g$IKX ~ w6rο<4EƓY(pd$Q~?my>)n ²)Լ#Q r# a~&I2WW G-c M;s%sƑi"5Ծw|'hpG98Gq52TXrڪ=.HVZؓgFIq1O7dhh+Vm6 ̙3>}h4ʾ}p\{Ѐ%rl===tvvrI&&&hkk14Mcǎ,_G~2 9~avIQQ?]YcΟ?ω'hhh`PJ0I޵m`šH_?oWHRw3 *6nYbpikknFIRrX~='OD4|>cccv"L͆ (//Dz,RNb׮]s=EQBb1%'7nxl6K2d͌0>>c=;d2;w~/ښnChhl`xxں:9tKUUk֬7yfdzٶ}CCC$ Ex^:;;q\Ç'>[ǎvZ[H'͢*SZZJkk+-gu\&LO}>ߏ(v*YpzoIS6p0t׋W_}P(D2(F ǮXh۷M8t466fdd6K# Hꫯd0GIuUxʪJ>'꤯{ւ.`0H #<¶md2(iZZZ|ryXڵkokeIR466SOGcc#O?4iC6%pq=jCq8ڵk9ZLLN Z9\.{9?~~׼w}$ 3/X >Ί+ld&q071aDˢb1***Bؕ555XBɤ=[)fy{ijl4ihh0 gd D"-ZDgg9Js9)**}}}vɌRn7ve~jjjĉ,[`0H&󴴴$dA4"TjF}eppp8L$<}4B!g޼y9|5\ %F%O3v0 dydTpf@u\GSuAagt% %q*c"*KUUܜ}å02| ;KC*j;UC#7pN@e&baE+_nAK(_6ju[]3 {ZRIl UQgٔ~MS.7UHjZϗ/B9žwFpWu0ɐ رMӘ/c}]gog&EϷ.㱙+ivi&attD"A2DQ;'A( XX,ؘ5Zu*EEE9}Ǐ**Y@ v}ܾ^9z(ϟ'FmN[QvW_}%e ;'ⴞO|_gۻYd Gƴ,0]]hj.K4]jI2 CCC066Fcc#v… YٳgZOq^+W`lǎ{IR,^;yצ>J@xX5RYSMQQeee#TTUs\r~ݺuL%nAZ[a(q^ ɟ ?O{a|! :n;?3joMYzs7 0qoN:f嘦<ٳg9wVbѢE8q9s`{L_:ڰa;v?ER4*** ²4Ż˦MR)y:::WJ: ̙ã>J -[_"G3,F6Koo/sxǍ6ovs",>e۰@ @*^gձh"~/ 7362J:FUT=VFϛ9 CYY])Ο;OkI|ەu{=2 … x뭷x B\xOX(A]oAxH$0-oOsXoMww7_r${{(fZ&&'p47734lI6kfp<'̞QX+S{2k6%DHB؇EiEUW 8LJ7E-f->2{s5t32 36aYw΀LJsp88G4 uVoƗqAQ_@R =8ȭ$2"'Y7||>{t#."A'gs4׋@#ic4JL&gn 'zίm$}.!׬jllq\Bj׺+x^#܉ff0';;~8r+;>6I;Ij;r7줤8PIj;r'\߲絮wj/Ba:"!p!ox[Jˑ/JEf?psU(7Vo5v311Agg݋VKX(Ʈ(Jy7 L&3cz-rlә3gR?!aZ;VǦn஧FTVQUD"AWWx|~ ^H=Am&ljB*Rnb9T*EWWv+DBBxW ELr> "5h&c̢A\/" \o%!pzC$ >H&355eeE"4?E-\e 4>&L?탓4Uɷ "0?L&:30œ4Cp _N)l-wi2=hVyq?%E5p % VbEM FFBp2n(,PLE.EVP`!֯B+D]絓@5-i=() X ehv}!fB`LK*` %VE̚fpyw=H!+w> Ɯ'Iv1м$݇׿c dɟj%(F !T$Pk Dj7 BWHQ(BASeaXKU7z{+2 ]ox#qsfN5 -{ /aGCs_[(˸x_U0R8r>FDGgIuض|TDQ2ݥYƎH FY¥9VRSXmPoMk ܤnC辜fYO B4U6a"t?B; "6cnx`2i&BUtKwSHOOunc`^/0 zFpyܘ3QؾTnOG'-Kzb5 i(dϹek:k:M>Ih+lԒNuNvc/ `|ܧP"+~EuN1*V\YLw eDr> tP5EsQ4fbr=(@(BiPܪi|'|k+5~E(JVVgWݷBv, 5>C31/wȴW11,8 c #ǴjPZu&Ai|tQmqv/k 4U_f^.v\k鉳gCG]r55 A&:ۏďR""JuPP9Iweac,1ܐLfsb&|Ɖ%rP8XI `YKǥi*31%Jdf}ftzlc"ȿ{=.HTF_C:ŲT9RC@F)Ŵfvy0 T䵘,Ug [ǥ;A #IbG\0E_1KbQ c./mc蕋KNS k(f̼(%DΟJ^C3;Z0:`;}vy%f0P GGsW[$+:jjׅ_x}wwaf.cM#MGň!Y,a\5 S|&k:*iZyFKR[d5m>`I.;ưrT@RE^ B ]0!6w[A?QGϡu{ TLC0!; JVWҪU 1hcmbMKfy SX i%o)^iJ.`_ޢc;b9 +4h(pP{dǏ2M8K*}9MSsZeôZ)qD`{Nа3,XӔZ@3711 n]swݗ([Ѹ ϢXS?b|L*Xk [yaZv2۴rU%f4 %ȁ̃NW׳e[$Y&ltuG),VԪ =v."XgS\R@&?V,F5\QW2p7!nb#Iޣ(y)tڲ Vd[Aj(*6L\̼Ϩ(.]uwpu4jzoy|TA o EW421EΟGMs Vo?-/d!脝6 #且n*~嘔7`V]cQ[smF W;vؑK4Q ->B?EQs+5)UE2rd&C90c d9hI?N@;>w\34o~f-3|lSy[YVΟ˚Fh)V2@!3F.rz~SHY rEZN @EU1!oJ [SM& ]iD4Ӵ/U#ʌ$eaf>G$ Q;HjWr;\p "9?GzS Ev;<7R3EasQ+$ga嫹FTT,Inc!9J )nIW  }8*bA*A3%LMɿvKUV dMKUm"(E3t{YP&CtTMMj?U~a~3u^ܽ{}0&s (٤.TPP5Fk<EUǞr#֔:8iF*3E.a $VFn&t1jNkMr 锚6`r\Np}%( 0  7 l6VTM,CX&}UzUf|hNkYdC@i\LHMI Kpr-aM8NS pH P "T2 Qܩ07~RaFWqμF˚MfDޜTi8]0jX4d䳀-:Mxc$Ӧh4"6h.?ٺWU-pg (5ooioK*ɥl3}lT(7G^R30-HV>i*`L4N (i`v۵LQob1`V,gZGQLӼۛ_&J 'q?}\紅UWũJ(ȚhMQ\. EH1_Jaȟ4 \sh0P\ qmpȉIh?!:l> 9*Zp<Ӳ04n6 j(B6LIdnY[X8ԮmU+O?,?$2 OG%u62oZpmP" < PYHrw)3R0 1 XpF j oVTu]*Lo 0 kZ(, "t](o{CT/G]} [Um2266F*&ܨ :7t0x?qU,6/ꫯJXj5>"K&X Iu^{_[`&σd&IZ6bawE^{5 6PUUu}opW!b1&&&쁌&ur6+O EVw"6J63oC w VZ3<4ꀋ>}D"w0 k,yMHW @ ۏ|`@Rx/x}s:V~dܹ|{8(NBA(5Y~͹9#k!P=KN:L^Ik7|UP͛v\&0w[!Я u|\yq]Xn/0SSxmngU;B!B \9L()Us߹7-}E-?Gpn9rCHޯw# ,[oF6Ȱ;J&#Wl7;X9~S'_hb~12"LN-A UU  xa<܊Iol@08յXI&)-10h*c5( OV-jJaڎ"-cEK- RŠu9|T8ud/i޻5KShgӹ֭iP-y_9.5zBR]芓Q,n0u|O~HͪOR-.712cDJyd-zI]D!~Kl'աc~{G:( 熅~2KVWH%غ gڛHx{vq𥿧Lㇿ@)*T_WR!^{-*nNsn)Z{_AQaWQPɵg۫G;{/}wxq{_;7}[4-Wa0ugyM>Nu|jBM+XVd xBZMsst:mW\J ![b{Ckxt W%MMA.;ڊrkW8K>~}WM9}F4ptȍȏ0~]決9z%%3 r똓s৿H4&R\yYOY𧩣On\͹~FM)!P[SQZ+R$fç%rSwg]jrLIL NI'P\5}~P\;z{5氲#81 h\7JWʢ11v}oOڇ`0Lq|?ɯ| }ydtSCU`Q)\n`opςyL& onc %D\dz7!X:`ťxiCjO>WL 1b*~O~c(yS߲ʨHy^y/ɟjwAl]T,zmbozR IHH'X]Rɜ9Sy;gfW\\] IA8&LCEmac'|W hiʲzɿmvnwB,+t( o#brK#^a8u, -]zρ)MM&z?dJD66b !nm=n"lljix^8)%A ͥg0659MruuϽXF?xH4/Ivf,TWԚ Q۬?QzGiH,3$WEIşv;&] b8"$ȷj(Z_m< ܀H/7`=Zm9##m冠j[ZZꚂ݁DY,6 TxOtȀ*;,YL-uF 9$I4[H@kZa*RvEdDZ֬sFBȳZ-f9""bd .xyp@kf[iY81NK˫22(Br~~'7%M'u!] h葓pe&irj rX/=b?(=z~QapXY?޼u7ofΚ9:rO?%҅֟$L0i3yԔ2fr)X[V ǡۃD[(D il6[SSb/iEVU=sђxaWM&NT9(8EeQqZb㈋d)rxtԶ /%Lo`y9ɰ>N?~2)^I7z\—$~T6uQ'|w .VɼZWS5k}{93e[w҃@)[쎀|TVSl&/o???TsaIdcKK\`+jBE Wg`l2Z&lYV Tu1?%' f[EuP_3m _9-qӉcGjkjg̚ C\z-?b&TV^nŋED0pvҩ*@hwoj'I0E/gguk`tZ͎Q7-fN')X*SuZMnll;[QQA{ FTRpYLUFI5-L<<]q䌾qq.zø SB䤔3EE3fJMN,h5񃇹:c^3juN%1SWY>m)}^P@]wޭ`m & 3SO:6{\WwgUdV#iubӈJ4{T㜜UjkjӪN":Z51aNJʈ…k n߸qoqcAA),6%(8?x*).mndό/(ho  X]1w\3>W~*n ^^ՕU1}A%%%5*&o8$y R[@_/:&6zIi  At뵌!yHC?5G[[ntWT^'sc$+SJE1N㟥ȨVf<+ma'&=<`] J& L"rj2fbiiiZvɓEddds v̙;6ҥKhKCCզ&EQBBB !AAAhiUUb:414;b<<<$ܧOƘd֭<Z|9K, /.\gggs:N_b8Sw׊R["U˄ٳg֬Y)))@խ޺nݺ9sddd>}Ļ۷mۖs}wȻcǎQF"e˖_>fcL 2q ˤ$p 0FwB XxߏAEmqq?Ϗ1c4_ @L>= ^@RSS{p|g۷oݻb L~ JD~S>KHHݻ7Pxw 7trr߰aNLcccOg̘K!W_>|8>|xʔ))Z0@pկ~/By1`V#~Ԁx`/2PKOO0ʕ+20~{nD" ' x7x" Q7 *3zhs?hXQQQ+OT \”0g***00m0CPfǵ bJɓ}5k,ZwE0Bg4x` A$!lpۻMŃh$pF jK.EO> IIEk%IB˄y=kPg#GgϞ@ǏgNO?OxxcDw}zȂmC0ʘаÁ+6,~apѣG2={6-o 1|w oIKK ⌉aIc9n)):dh{ 9Jd -AjkkAw`P = 9h 999P0]Xr( 82GˆonP&f( p⾧NDC ʄHB2jB=h4۷/^ pwlllDÇ _j^m߽T/ LzPPko']#]`21RZZ3ˆb7%7kۓŶP #͛797(+йȂ9x;Fb Yڞl?>EƺCGg7F ?f_{;v̘1c֭KF!{.mx?6mZl,={Cq@m…" A58kڴilW ifΜ L z-{1TA *:y$w( (u}w} jU8:%K׿NLLg sN. FQ?eʔO?x}q n{ =o<Q J3 9N(zF_M [>hXX,/299$ f:y^ꂅqFFcƌA s8w} BC&A۷̊-2'xbՀxŊ]QȨQV\ Qbz u~YL%1jn,Paedd$ޠX'x.$$Hm+Y X0`;B#{hh("9;v;2B#Fo8C($ "1 V)6, OOOdDZpӟ#!eeG&]Juĵ%!!ust0P2a@Ʉ %J&L(0P2arR'* 4g_"zZI['y4+6ɻ~Kj/vASsss_rsYN\__.]/fpO*!ʅKۂ7ZZNN])g61r.^{5%33ȑ#oO8[omٲUھ}; LNN~wQpMW p•f|α>:vuuuk֬9{]d)))cG[zz:cJg=PrG}۽{SF6l֭ÇM Y^VVFwwTTTn.)QY-믿:t(Jݻ76h T~Ps>,,y4E R:;;d'''(M"=@(|`Óe|ޫ5ғ\Kߏr|/ TԫW/ 8##ť'WWWrѢE%öo>ziT(m+3-- ܣ~AZmTTJt] Bj y`` }!( %~)fE>}mw ]Po~~~hh(&Çcbb׿b#AIB@? ]``>4L:-kעn9s&̸qh] `qE(:Or vAT>h(np| H%׃L>d<'~Dz"yM o<)( Gz ~|dzoٲeʕB.]Dxih^;Xupa!j: " OB!cם)UcY9Akx/Ni-5䓓Hĉ 0v B8 <ă&7o 0\abBúo?ÐaxP>)XxH|_I 2V;p4%U}GTn%Hc%Rqm0ҁ'G֪a'D0󁭓'O:p$p!N77C]x(6H j_!---77*L}dzwlx^>6$xZ9!UR"SJRINwvS8l,wH $`;°##F #eHOz3pG$|,_jLwVoFỦj/1FEhc11?x\'Ԩ6D7i$סp{&T#qUGL,B!vi"B!WWW]AWΝ;#GJHHx16 x _HH.4%}pQB $H]~~̀t&0H4ݟ0tP$#|0%ӅAi-B} <2" =@1%h {o@iP?裇zf\?GAcQLL*T~N)\=CF(ĄDyQ+W r!;f5|x=Xh4P8&*Q,8Nkf.2!,vC@r7#R9O@``f_/l۫ ⤛t`  v^==$ D$k9:M>6g3 #QR: =N2UWAw}Sa@ta?xPP>0"RC@S>}W1砞څ C%%%&`8pرct/(%tE +ޙt.(#T?uwsﻺ/t}SpUVs@ PM WFJ /y> YX~yGiPL}P,pHa!٬Yoˏaۼo՟ {CxO/΍얦W?0>^ o K@-%%0 9s۶5`Psp#L?6 ?:aۘ?H,;{!T Q3 囝N$ i|t;)@ %K>C~'@)/x@H ƅw )`HI&]|9[ ׭~y9S R]CĄm*ו;H;Wj#aҍP~iaÆEw_ /շs/˕p.Q:7;X!7]7GVq&=L} ;Ვ(NxT }oaΤ;IM}JYᠾ'<˺Io gp[Ĺx;X38Tf*{9SgR&"5YBŤ*8'o6L:ϵ,8UsVI@Jig=$/K8gUg7ŋ,:thfgee}bs!"b}<8p **jΜ9m'fUWW7,,s,~sP1z;+==}رIIIpU>|xxŒ,&&fsll' DS2&T}j$Ǿo[vl}ߗ ZZZ :ujĈ~??#G <`usso֓O>$544?~h@A.5 UUUeeet[`` 0APT{acƌ.]B!@`TTT=#Ǔ'Oz| ףtq'=:1(7U%22vɄsv܉BBUBvE= #nG$,..FN}_ڙWW}M#LV}T[}OQ}a&鉩SZWWzj.$vAxNFRפI^u b ͛1H`# 0e@pdl6552$eAKK׬Y3ydԁ~vÆ pwh4ChҀEc{o p[osf֭1mϟ߿XON>E?ǫV[QFjo> zo/v !x4|@J^}WQB,NuK6F saQCL&n[{D%UǠz` _A#KW_SX 75k{BBi[,6$(5sL /ӳgq/F!ma_蓮NUnϞ=KH Dz[a! `1E3N3VN^k.7l2\"6pBɂ0BtW 8UPo9233AEoȑK" @_ ùh"z.x P~DՐnC#Sto ]1w\HÒ%K`*`|n H#JCm)@o!C AM߶'EsF0%H聼h)J|"_ p3]rOݦ#F>}wVO2P2|:\Lg3$X<纖IcrEkHV7?y!9qNB$6L:n9B{bk M@e:);'|`0d]pؾwzB䣫qz|cFBR!eBbG. F *vƙ V䜽9N7ի~8倳л`;p4x☧霥+|8R50~.FIxV}x/k=m yߪ=9g¤ @ n8L b~` Nҫ@|,*\uGRւqHT@L(oR& %Tu|{jx :?2pVvg;9 J%Nc7q/طhٕ,S#iH1P4" |ME$]"vePNgZ9j4ӫ(`ۨ6|;PHAlURdk J$j7uK'5*RѢK1*в2!zO_FۦO.IvY77hYS3n֊_7|c;* RE`=z4<"ll4hЮݻǍd0Pt(JG F 4^pmFj_eTr6Y1/sv+ :𡣷.Ze؆_ǟ:y2&MNM=0q8IiL-&">|;(J?fE޻Ѐ֮Xᑜ}ibb&%7nŜ)iu$TbNV1rݮZr ʛL21ͺfKZ18]QYQYY߾6AU988rĘ~ׯyS~+(ɬr8[S|~7wlw3Z6nt܋ǎ =bǎ\\7oٜ.C: ^^:!2*fY{ׅ9Mƕ HV%ņƈ𨬬GAՂ"c\IhڡCG;;l6{fyW_V&LfԌ vz9))bVf׫]\]݆ jk{Iv`0V^]S[bDpxƔ7U '':p]O<%pht:q!а>Æ&w'##566,hn60~fs;reUš+6ڬCBsr.wPVVj0>}b%%55SfuΣG'@CO4MF L^'BQ.+ͭBVѨK9F"jITQ 16qA +EYP)4gVTlUO@Au ~PUYdliՉReĩ& 1Q}A@7n3q$LYuYբ$p9M*6׻WeF/ A[I?mVH צ'.RV#[W ٟ%rcb\'iۡ@yXF0Yoiw ~uGq?|VMeZʀ`M!{8퐅fx0& 2"W#)5:[-fUcUYS[xwJ3P2,7BDAj5lDt&HNMͦ+0JEP % \ye5[yΤ{E N 0qgo dIENDB`tipp10-2.1.0/release/help/de/img/h_key_blue.png000066400000000000000000000005241274324046000211620ustar00rootroot00000000000000PNG  IHDR(( H_sRGBgAMA a cHRMz&u0`:pQ<`PLTE쑻Ⅿրyʕ'"WfIDAT8O @Ey1dw6l= >F8T';)6RQ(Rd{>Ox@]!w{]p=N0AxL%5mIENDB`tipp10-2.1.0/release/help/de/img/h_key_green.png000066400000000000000000000005241274324046000213330ustar00rootroot00000000000000PNG  IHDR(( H_sRGBgAMA a cHRMz&u0`:pQ<`PLTE┯嗩ߑًЂvrjԆퟵV_fIDAT8O @Ey1dw6l= >F8T';)6RQ(Rd{>Ox@]!w[]p=N0AxK5qIENDB`tipp10-2.1.0/release/help/de/img/h_key_greydark.png000066400000000000000000000017641274324046000220520ustar00rootroot00000000000000PNG  IHDR(( H_sRGBgAMA a cHRMz&u0`:pQ<PLTEɿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~H fIDAT8O @Ey1dw6l= >F8T';)6RQ(Rd{>Ox; ^At9K]p=N0Ax5H9IENDB`tipp10-2.1.0/release/help/de/img/h_key_greylight.png000066400000000000000000000022511274324046000222300ustar00rootroot00000000000000PNG  IHDR(( H_sRGBgAMA a cHRMz&u0`:pQ<PLTE  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~]}IDAT8On0P6b0  8Hv]7YrRJ.Pb,(nz.nFv#h:TR؏9q+.X@G9{VGeLP}Naܠmvݠ0|c>; ڡ 篯gӭX~{0eq.M"c%@+]R/5/ 7mMogIJ)b%"_TØQB Ѫ&')K R~'JݽIENDB`tipp10-2.1.0/release/help/de/img/h_key_red.png000066400000000000000000000005241274324046000210050ustar00rootroot00000000000000PNG  IHDR(( H_sRGBgAMA a cHRMz&u0`:pQ<`PLTE便眜ݓч͂{{◗fqfIDAT8O @Ey1dw6l= >F8T';)6RQ(Rd{>Ox@]!w{]p=N0AxL%5mIENDB`tipp10-2.1.0/release/help/de/img/h_key_yellow.png000066400000000000000000000005241274324046000215460ustar00rootroot00000000000000PNG  IHDR(( H_sRGBgAMA a cHRMz&u0`:pQ<`PLTE݌׆|pҾlʶdҀ_fIDAT8O @Ey1dw6l= >F8T';)6RQ(Rd{>Ox@]!w[]p=N0AxK5qIENDB`tipp10-2.1.0/release/help/de/img/h_lesson_own.png000066400000000000000000001502571274324046000215620ustar00rootroot00000000000000PNG  IHDRvztEXtSoftwareAdobe ImageReadyqe<QIDATx`\y&2 z `U:%ǒSe;dK^}'vȒd*(vQ{o2(=ܙ)Z-‘@`s9pEpح߸ZTXh$YMohnt8v9ƞ?cGPx8tjrw }VSsU#pˡQ]85; yii\_Mlָu`rSgqK~'{2kx4al~ wت֡]Ӛjv6MU%qc_*7}y^@Ww*#󤘖Ee{ ki%O[SU[ @J>>j+S7~թk(rv [MafդdwYbLs^sW 댆8:<wDžt)r jqIǯdl1%c" |\l qpڻh7o%.>SOK^1 pӎh6+g9)d8E DrsxQD8d$s2DΡerӫM!o]ލwo q폗TTNt dY#A]ӱyGD>UUSh`ipgJiX@I@M@,S GA&+2'?r3G1"^:'@&:N!3zGMz1qݰ(Tǹ1n\CT. Q5ΛFXϺS}aJ ]dv >^PPy=NMT5ހpΜc3Ka% c˵J)PQPRA丗7O{*&~ϟyidarde&$E'GAQx^MF9W=y,ᦼzIR/(hO.hN"6C".4:%:&1dEnjWeI&Gyp1EQ.crU$EH,N#ݓNM{LUo`S= dœž}JK&o\`!bt2Be4ϪaiJpV"ox.N}4b{7'VDZn&m~Mqcx YDNU82"sP|aRjPO֪~C=crP4aUn :0*HEy"SeS]:vB8BaJS4u8k/זh {%=a5szN!]Pp.:}Ѿa]^)FI>kݲAG12`VTxI0*"rrS"0!)c=DRy±F\F=EQS/\tOw-0%DLW [q 5A)#lbJJO,X4,\߂|Ut9]rOSaӖ1KZMAQ$4pTR29evopq &6J27iU5Iɹd#b= ԑ 9I/ z&Vr0`Sinɪ";F\bEhKp#,"h%RUs=k>k"Df%Yyy$ 6nQ%!KS˴d*8ү^0/hrܺի6r/kMܽ޽筕%QW|FƱִo|t|n[bXzqtDoXu،KzoְxD RDjjj ljt\~b fC\Lp\<'=OI#q1~b|1Sʊ&6hN)10,UL%l$D\o2儑_Wl]{Բ?ia7E.D9" H2N!L )[ĸLVBQ>zHgAn7AƆ2HT،]o\& [Gƪ\s(ě+酰dQӬ=15w3 :֖ QeE4AzW}QcL+hl6ZFA1ׁs'ϛn]$Tfbt5~R}\v- ]bb."ORXoSc:5W)# 8ƥJ^c,1y=ɣ);G5DX㡣<V y/N(Ggr2%S#tf6^ N.!J*>ą aD>[qԠ`YNEQP&*F<-KtI(CG,U9n( ׯ[ʶ#Jx_㶈b߸hIMыP(9<9ɍA z_VECtn83춒SC_X\WmvpўLΒ#/Zj)Id:yUy+|M].$kS@)ڋ3;ϊAw(Yti&Oʩ2G+tJsSh+ %V#N?1]^]0zSuJ׍,#^.H|HȈ D' T$#?Vr\)W3R I#rb$ddN }dҷyn NqFA9F,O[ڲw:d%>?xWn8&& &EduģUnoi4yg~C|kcTQY"J#Doiyy`A@ƋgL.SjJ+ 3Sa"bqli;.>f$ЀpŒ_\- fk:?rDJ70ח5\TBHf), d/Y69!D&*s$M)}ӠɳfXqp*17[-1eьY՘)aFK"ƙ(8] ׍ -?tK_ ?)q)Œ' #"enSe0L wb,@M>dN(7)DMT(hV͗L88=hH/nڼŝ0ITF"TAzJr0dB@Xu8"qzND{-p5yN% URwvQIr̠)$  zpj:z*H$~jYsE j0yFT`9Bبuzop7y捲ԩAY)W;Q9 x|E,3$K%'oL&Pa$c3I)p8>8Q@-sjwL95g+$PI$k r&C!~r3Lm$H8˒~q_:Q(٫F 7nV1ل+p18Rsx2OA/i\[_ܟ>QDi>i\l.#{Ӣ8&,q`𫱹JSd[HܹiG7v1n&:WJ<(15V_sד!Nsf'D#2E#)86䒣-$Sn@#]59bC%~tU!Xa)TH췒+©t Ո b~B.X[?{2UEt$KLX$cK8qM|T13's;5n87Ah1@7GZHQYQEAG>M(53ų]PnN9>K"S-F\dDȀzCfOïnibghh<>`RͰ@osrV PMq\<:`J*n 'TצQVyV;2ՂtgEjcD Zhaz4BmV~=x򇀙bglm (gc~@̶6~sc!b]8 ZEmNpZNA( F~g *mE8kAs ;f, #%łƳg0`68i_5YH1|mrpS` `"a:!> >%(qYA3H4#"iekVc(QEhLL27QqIbfb7 3/…G!q$8܌rX@Sx 0^v"ԴB,u1R| Khţ_ '@ pxXs!%Qd8P2v r h~  `am> s ,=>^5^o>xUpwam/L2lJ*o;{:Ќ!،[5a©w#6Є 'Gs}4|vuOo7&uF͘p!uE斅xC(Fn?vue:} †byZ/IR aNzc*e/ ϭ ё-܇CH!5˰yס,ƽ{ ^Dߍ5Ka?)$)̇Xv,L$AU'C(sK2pdV́f}[͈x#5`޼píLXW 8Q|tnxH53CWw6B}`mBlrbup8q{ÖWSQ8Pi;wQ Z4Ԕ - k,:هf2V 0JQ_ Ka!`L'z,?+֮CƙVoE$Boerk !l޿.+>5Y(F^ye X5N!Kn5._\de9QV]9NO_\pQDMyxɢg VP0T?dk㣰s d撮 ظe T0V`J* ۬xpl+m؀LdK" Yke=^v,lEA>k&" fUb%DL@S$04!cU.*Q&R-R01w,_m#$ωl‰) %5,ȇp6$T5DikPx?7?9 c}vEPYs XAK{΃#jE!vPC#s%؞q}%yɎ~7wt FӸb:[M֍e{lڵׇv1Є@/ ,:fmQYx8@|o4 DLU΢Ę+5DGdFt(hnGs}ȊƕQ1VѢ5jC-~Q"nd¤"Ss*M,z%%d1^)QGBAWjhh_YǞL#B"0%bQ=ENF'ŜX ;NsDpBiZ@|y"L}O*ԈޗpX~$z%4?/ͯQsDC}pxĞ֞n/C%\UVJNK`o6XJhϒBi&e肎`q2[5DBi.XfӔj+EPNVtj ;K"s]h;)q ~b89'*YJ6eK>/^%%B ^VoA } h46 7EL  ̃lsc*\.L&XQ!%%%ј^4~I'p")睟ݔQcO>'hw +2:{&k2x絷0f'3rjgx!$1}Ԝp<m]Cf)>Tw_ǜq[|9;RwDf:$4ZfRFGT6?ѮV@ZzW  MwJST r[qDEDIq"9',VI,vVgxwIh3@+QCFA9Uۯ'jM.R^ W=4 Ef1R;ldMcxKsyиHGKc35DH::;1 `4@=[FX zݽBW AGdt6oŮ t J >B J=}N=#0uE]1TݡX'D \dW{a"c+!Mʓ 5 OǛ*@̆1rG.o[DVDb:GU`0Cr~<8#w3ǓOM`H3DE϶;pd7_j P]U`џe( ++`Cװp"ox%|C^^*F<(*#*~??N$t+>ԚU(㐍0~ !fy5 $>!fǻpDFd1Hεe®gUc]hzzQ,u +ݟfDZrQCNGiIQF10GttxWwi|89UK Y:;K+"z"/_ V R8L±Qx9rRL"$X-_G$ 6r?~ =~ah&W!z+EKpm ~- ey̷k# ;Z1" -9.ȩEsM)EM߹CL8lfe{qۃH wBg "B7hwsh5s s]زY:9z'Gpd. 0er=v5e]PȍRKox+v5ň#EX 0 Aaδb#H .Mb58sUfpr'TE`sbd~,] ׏+]cLY K2qd3yC8uشv\;˖T͂tw\R.AB 2r ja1b|ҍc.)-XGsҬ00:n˲EDYgTQOF̩#H\؅ɗH_/C-h \0\=Wqm(%[RɵUNrz)?MMdX麵k2g*Ǫ:OI-Tiۯ"BcTbZIL8eQz=bO)BOI$[s/JCXT{ё|FM,9H4? fDxd) &66I>ہlQc,""LKlƓ81eä<Jp#AT0RfBF H%F4x>hoZao_N/`pa*yD{Hۋyed-܄Tx ^YDAv&Ɔ1VQ]f>ԈEB_W{6@Ci<>GxDP ì ;3#.)Eˇo.ͅ3%NFiXŦːjAGk6=kp{Qɔüh:t"Q%(#L ;MdaMz. BǯWw+ Ddފr}-9k # v: g0{;=c3?îRQt{PY[Ckls31BsK9\C}vSty$#toCӈy0kQF8IA*,h9iÄ;#iw֨/"`4aA(vYvwôfzO/ J xϣFJn*"v50 -!<ǐV %FD%m iolwb{ҋo_KD,<#p2[܀UփXV[q7u7o@nAv<D+(CUi>L(VS͛!n=-i ? -p &ŃJ} 󑗓{F.*l#@* ef6@xqytrʋ L`0&ue#:%D|ʋ2qQXsQ_[l±E?ۂ%aPa!MM8fEH%*2]DWwdVbēml%׮uޘèeƶLoAx2RStD]lRvC4Za27HDlnI+%mP>; (C^;T5i#v.d#TមjZ Gvc!E #qۛ\W4I%75Œ4S32?oCnEٻpGø&bPԉQc+G梁PSGwdx; RV\Ӏw~&7YBHip=(*PcITRX,c\ &Zz% ˢ́rLsi&:~ҡ Ɍ{O!<=}U&:G}JRRӝy®wt<ȕeF8}{w>m0I3 L_h`2TA'=p>\jdD4Z6®ޫx啷7#)&m!˓Պnp#i9yO^eӁɀQv bGfqhoiń/LGZx>(&S￉'w~Lyg?Dt2ْo }clZ/`׾Sh[Ɓ&e(BBcxykJt1Y\qldcږ^ {~왨(΀` 3GY1\ch>5G$Z C`P( w# FƵrs%GU d. ¾n{ClިT%b.5G#,Ja`>`0jii޽0Bt=B.nA<|ZJCOr.-FQgU?1CWnS| .^ǒw>v35O|jqz߻#Kŀslh҇IZqT>$Y*Czx,p/^y)8vzLy(ևpZ*݋?g>QWQڸ0U,z/S÷{V{e#-{qWAYA1SB">t a7ˎ /aBSVWM#]xr߇(YR'!HQ`̯Ċ K8s0cȤ ϾH$ 6ދ GZi&?~s?oBHg.}6uؾGxOeQ,␓^Ld&ww#ø:fc)8mDkI[^؂wO>\>}J"[jl)0뀁fA C(}Y3!l[gCKW g!6GTG@rJa}:v{.iU,ceg4uHkB"N'|}.w_݃MؾDc y(UFMбa|.ǥݿDtf+/bSGkZdHCh8s8,{/{(Yg "E 5j>l"{&%,BvdR,?u{tFZHWX0gGa E)Џww_fB|BYR bǰRƯaA>Y5 PCG7L{lVMXTdy*wTI7aG&sp?PZ.^R`0}!,h&Ͷ Y!(Z%;ntG }  X|.GX[e@JB|+ڨ8=&:;>8Cu1c;|xUh>2.NZPn""9X1w|몬x@[ m\>s.bzz}[ yR:هgOcRpj(`A'ֵoZ3;_#"OQ =~{W; %\~{z_ G,V0F-<"T$*,@CEM-r͓xa<]' \PQ@I2, {chC*t ?a&# r|Gq]m,. ʨ 4׺#]*س 6wFvn.Qpې)F3P]Fa#H݃0Fq\ e-wa^1Ձ^䕖p R`rrV&q^wPf\$FF7BQԗaHQ#Cìlpp驨YL\=Ry,[i&Dԇ! }~QroUDbpgF#ȷ+ԉ GX .!$z_I }wCb !q|A?Z?i?菎 hUA4۴,M\2 0CK  2rQqN n@kCT&2Ũ,Nsd9¸-Fsxk{|1d% {Nw-|,i{а/µwnǒ%㉒TVjBtό8]O Tפ}%{Hh\-w l&)Jt&1RÂWO 7.B;\ձ'G @JN!V/KZ K1D>\rz!Vceu*N\FGW@.O0۶oƵ7GAVzۮb6o ?F%36nZcCs5-ίXnr\>q |puڕ6" RbXXGN"t.:/e)aksQiŦ._l+2 QK XI=rd!+= "?5Y3|pfugoᏞnpPLdSRk@c5G 6ޑ8jSXB(DUfh i0Bd4Y25^ 4^BdD.x|V|VIXA\SF %QFE!" 3Ru#QÚKX5MԌj*,2c qeޟ>Z?![)3r)^&g4#&N(I\vZjR~ ݀s Zf">92CTMpF8z sbR1:: {Z8"ijSUA#I4Jf+[& rt&kc ޓ1$mPrnPI:[]C} x4 Jeii:櫐4jsø NL’BR6MD>t3Fjv:? \!mH7GqU_5E9 &uD(r 2&8RLB0[ {ȟ|a1H6٨sGJ5%BL?du[:PS3Tʜ3=@*KO1X)|] =È-/h{7#rL+*ny(=Se|x B0CqH/+c!EWԀ  /}50,P3'xzD0&5Gh*ڮ5ahXGE5Ȝv+F9h@Yu{<\>}bdc*+YC: DCw:Id9CMTVHj\:1_iY(/ˏh"AlqcT`bZ[,d"[|)ٲwo?,G Ǐ╋ &M=RD;*Ϳw0%cy .gPd5QQeualdr+5kƏ~ŋcNi>BN3J!xGB@xO6w+Z4{Q[ jgT\|kµ렎#~-&,zϽç۰u pFtAԲ; #ߚJe"%o0Qŋo^, L!b)J҇%kVAt i @3kEwwYR AS6-{p8DGm^Fn43CJdw?|idexz F9q:g fv:@ߕwmia\bɢ24:!j~w)?J^yyD$8 zS=ÃnJK~d@av| ccj''c] v,Y0|5`O"86lEU<b`fYQ7(-3/%o@1((Dn^0PHW@Ig9\LcFe DnV/[;ZkC*+M&d#QP]O ?z Vb ЌN͹( [g@^s>M9r&yȉ\Ʈ.$|E+f{ }hCA=6e#GЬڐ??#()DMleq\_\_/Zǿn8T*~}((.wmӦ0ӧWΩ,ja|<HnbF0ۙY߀9(B?]-J 7# D X&:>2/1f.B1yF{%f_jȋ!%7&cK8 x`ZmhuI)JX#D'(,)DN {,2(zQHuPQț`E~1A˩SPtP0qDdUvRlF=.14.2/S"C+ɿ?5-]kP#I4#2[gI Kܑ`Ӥ6©(S.>e B^Td/H%@[ Xa皻Bg__x%n {񵯯Dn~*0$z. FLy[3M(pTrJbRk{/*ʰUlߊٚ >s/!%͎0 Ct ްK huZHnބ5D(0eڑف9Ӭ&,[nibՏ,wpd43:]F HKA^)0?dK%ɭ¼׎2soYSn)L\RXZ[ )LGI&^kȫ:j~>dj-\3bt8" kv` l?3?4Q-fkLhgg}v8d)-#Mhuph9c"%M]5 Olt1/0ɃVWhqǼ`>~IOzhY)>n6dkun4X)" ̊&A8F^-bUg0>iU,a6gYC-O3n5Yַ-M&(ʬmdH~*7Km(r8 >%II1'7@q,z6mo}'Ϟ3]b,~ZQ#_KHF#SiX5oha}##c:  ``,gҤiV8Eyucqy@gEdV@oGX8g71 `Î`Eލנ7j4I -c@UI`-]ǿ\ $4iIeC> /]fIF !c6e{KļAZf-6l]\w7tFD^LŠ:t?ы \< uee-"ڇlnDV<c((/ C cQZU Pc/"M9x*Z/A]gB܍X3lj{ bwt'P}a\D.F.T0q~z pc#v7rc0H&ܵe_Z>ߤ[ \Zqqz*{-ƖBm2QՄT$B)j)/6u\`*|l{> k8r<¦YzͲɻDGZi&eUӬ %8Oj# V( jP.RP]UJ:zFS\݊4kV[իȩ,CkUL02#'/ ׬D#s*P^VنzNvm4*ԖQ]WD&1!QTHӌ;exv,[Pp%U? {ao9eEENًddg#4>XȢp#BZ.9(.CDQY1W\KãQSܷDƃIT+֭]MF3zzkV,scbt#53 ݩR)t$^~s7Q8,*n,M@'Jź%Uvzc#thYӒ -uGKᙉRO3ӤXAC1@ۥh@Z~5V-K&(k8v klBY`ś/zNCi5QXY90-yB-y]I$3QEVgni1X|ӑX ^d5:y*@M2Cd|i*Ց輫FZW@Ӭq=ʞ$& +׏hpXf!OO֡AtH3 ӑ>& zoѲ}frЇ0bҲܣA"]+0v=|CTiLo?Dj[&` lYǛ|UF<!gB{pی}'wër] J XFɂH t7zy*8Q\j(hnD2t\>% sM8yk6oA!x*.]P?,4 (*$HBF@&oڻQx{[{Q= ݍ`QM]<@>dG Sοz,:- Ds؞ެ&vFK"KƤvOhb(Ț4I9B OuVU'0PJ΅VUl tS K EM%EKRfMrp[uzF(tF3tФ2~n)?O"Z5afAW`F;^[QZQRvWp 4#Ybxҋ<4< x"1:~!Ok/o6op HeD4T‘^x=$*h« ڳ`̀~roM`7ΜE_"lxUZo= sN&lRO&ş<pΠ|^JBag3NUw_C !alܼ̋T`0D7}6YFi@6ѽ:+vl[pP.8aAzRҢT#)(ȲR"Ɓwlݨv*1BjT}9vx?$30MCP"#/=8NjdS_.0gb^}-[[xmbEhX^hav:QRCdu WYqǷލ6/'t~9jx(m0̣ځ1Bƞ{.PܒR_-蛈"#׉z%uZrqaK+Cb[z<<ۏ◻.bCO|u fw`E,^,ٲ؎$˾l6m]eٲ$K)QXA 3L{QlK-}l`g=wXw^Pn_r5ՆKlN~၄:rpgt)L8FY?Cn&~CLHDFĵ9zPi4|&6cKA<]8.%4Gh|7 \?1:ͤpmXǕ5f8'γf^>ͥ(Vp|zE,/}ܲe^eO>(n*6>kJZ2r:U+4EMy)Om󉚓c|x\v'/)'Bm͢8AFWXQS^ej.JzJm·>alƯw5ί8k2_nwԬrSDOPTOb2z' YrKpPdU;bpڋ+?TC1˥+=$gV%Vp$μֺH4 ,ậuKd&ѫo`ՖٵuN بiTBb"jN_Brk%Z:N#|ǧuQZ`wm9TmiЇ1FO?%8O> E˪puRnដY{iKb2LX6#b8:۵ D-jsDx_@+}M/ܰI+d{֌ Q5תi4`(Buu0r7;0/6HJ7l4p/?˫VWv oeKE+,V "dQ8|cF'6ނVjQ)h7mRW^E-Eu):-ސ#s"^uX"WaSL!:vSwuFF0=dfk}0;V07BpFJ?$RCxXdV >KEJZn1~AxrOv.d IuEv2l>BtFFf,n%ĂIƖi%'y]R*nw Yq)k8LFQ> sVfKki=Xq)S!#ix'OQ%Kc)Nr^AWSocӻ|j\zrnj$fƊލR^=k>`.J,@)/dBw|I,3+OY;[K1؜"sLͅOs{l Hrh!6vŕ(26d;B ?3WvJr(dE.KƋS%cAD.m1$ޏ[i!cb'$ SL %i[h; +?)BaL&6 cnaI-|L/$ś xBA)bfG|C[)bfPᤲ ̩iN$eIQ"fU%oU * Պ25~D${b{. ޑ̟ZrF*EX]4*b U _(( a=`[WY%I?"V%f|DمNHyrs?&IHҡgp~Z3,.g~z=h+X`᳔2v =݋Փ =pަ<}n_yI\spQrJj)/)E܅6Ƨ0ʖҕ 6nJ ?d%:{LĆ^M1)-z&ʪ7gVe~e7}%N4pC4ݪ, })$-^|Wx8too^NO ֍1#x0Ǿ Ҥfk oS(c3o;2}'b~oqwW} }gL09zll1? \Lo& j||#\< 3l)Zؾi?}f7 65s\#9O.bSDLI{ղ72YX֫<8‹E4\`·@Û{hf"}l^cL+4`ʆF֫m"Op% v 4k?^g%r>drQknwSEP ۓG b/"E?| |%Y~vl^zF=CJ z N1C^IJ|_<{ Ls׸8@t+tRe/SQshI@MgemP320c^li\nDRA6(>y+ l.:9~fw7$W΋R* n̡)',㗚y+~'i:ON,Kc233m=l^$?:m3x }&n\*2ݯNb011pY,Np sMb4Pvm4 }F]̰ZG٣ `0ζ0@]lыݲ tOH6B z=YbRPOHij<͚mT3 7YOE5iϦS["hJ%'$&dJwA8фʕIBb.2,]'y+3YG˱DL5KZn Y9.ŽyGt7fU=iYt:҆D|'y_+s9inpcOLkd1xP6x拆0#š.(K"/1"pQv__}[=}Uepjykbjb~%0#=<،ʚFnU 0 d1SRH>/damm δ{;9`U*sӸfCWN#^ŖE4mtc eǟ`"Ejh1C.6xgp 3b|IeTF b˅v=M<8)7{<ꗙFeOnRӯ"99$1ÖUGcq9u6ձ27Dl%zYF6oUrr+jvl_z6E8}WZ!en׊xƠR2=+&>)z&%vNI.H5aH v.jZB11 a͚%e|_XG).%zbfrD괚筮YY8Z Pm= GHMM:BPO[_KFPa&ijnr)^)QtLMMl4liep^i2 A+ƖG BIo?KA ,l41Fg\vrs [S/|s nUo[LVe;s/w1y2‚yypR**׬"alf4hq,tp{\`H/ڰlC/R[@eU}qdSPbX)ȤTi-eV3oq܃簊qW ? M5$ 37Ռv^ш؋NݝNQusTVyuN6K*O r^\r摳,q%A gNXgWZѻR(.f{=WK=k~ BR)DZ5QXhUP<54M/(T7SJw`&3ۺxTʔʓ(ElDo[P =Ŀ:syVI& t:f&/3E&aQ37%fedGVf6$'Ƹ/,U c݌ լRQ]Yj~6,%sTw&3}yeݲ%KrFC\mD aa^01vbdcwڕ=TqK/cA M [TXOgS(-9lFt PQGC%2l!ڮW$3c>tYFff;w%d&l ip<̝~%}c~1av+'ì#ްR”P,02nWdB޵- Nínpڮ/~uIͲɐo&fի6m C( 2=rf2R=M+lwjSlLsB,\SB=0?¡PXpUN;M|I_7qi`h43wugO*9${)[Dv MS/5OL^/k~p Lru=Fa|F7kO>ΞSߵ=~cCy]`B_03G9zyںZVZLWvQZT" xl:vS"&Fc9,`[+Wa?J:≕Ø҅/Em\K9D$)Ŷ+oIl[6, mL\Ag):',̌]fL7Ozͷ2bR.ݲjݺktC`dAH.0V#0No$FNgy/:H2x zw. 6C8ߍG8W2?LМƥ}Oc?m)5rIηv8rZ?4͚k08|Byc.s({۴34,cWYN%J WtE3 &rkV4kdz#\І˟Ff=YZò%6!DdsyIV񞹂X`bqZv~#+Ry_d|h-BHrZPR?p7Yg-&zdc3j0ͷN.`g;/,^~T/}G^9:-S=E̔˪9f3IVͯ>N4ɣP,lu^Ǥ3K p%瑒đ=E46I,t*r,y*.7rAFF}ܾkjg੯;{ʸ0ܲr#|c^v{Jg~OOJ%1K::NX!4? K,+.cZz[p>m%3F>]<[jKZ.c,νyԸ4]砫R' U֤l3ɺb0S"*2J-&*SK5i r'#15Ya4sϗR-0;)RYv[+baVh5Y.и|f)U6 sh()>GN6.%E省kܒRFh g[9}F˫1fmDkcGcM/=caI|C> JU5\nkjuգV b4 rrbZbUɥudgi P_QœGxBl&73m<*L9N;- vmBXxF tez"RZQO]xdgoR&MN^V7_8eW}n 7 렔-ӫ>(?!FPʄVN{n.?3Jn4f'U%ﻺF D5RH==ݜ9ېP|84U񖳓CWxV>T=0]LFd8 rG5ı3` zS-!!`NXDvSȽ<,ݽ v#o/h9W(q/& !uř(7{`fOh;c .f)*,ULӸ1iQ?M-]NMUhh1!èbeN^sy^!UǫZL&8V^od+Ixz=d/ق+wQ/ݔxhX%g[_z7Ʀy cg~mc#~޺O뷬e6rxXwNmLqAX~5˖Q[[úUߒɎ \h<g.0=>Hc[7ͪTV#/2. Éj|ڳXNԒ,&Ea2%Z=7n]dɢUG6MV,leذB:pΌM]+qo*do=سgah517{d..m3{>R7R$epgۍ Jk/Svñ7^v%=6&f%(6͗ٴv9}<-nmZ_7Fپc3Y.?ˏ׳hB=8@cGrAwoသB %>{ ׄ^ܽG)9h’[Ų<{23gz+36R[ٳI+@!&}LNr63kH!¥[XVTCS[hY<^+J-0BR *x6r*%\Io)ƈ{rYӝL16o=vuN w^5kI,`m19UbYjN!lH~^uKqǠWNHQ<9y"LNKN{ԬQJ,J՗hkEC~vbۓ-gaf r5F z[9݈Aӂ( DشXkii)ha\R\fffIMuD %B\'?? րY/ř\#0#{97lk…-*H.y"+c2}LZZt_O9exM_nR +W|1g6|LCS ycT3'ف`eR9U.giY>'"xpjfDa'.!7aW6gDمUw9w!^c l!\3S<ս4d&[u]ԅ̈X.jZVU^!fNEʣ̉{[VJʊ8NEU)'szEXEݩ p)8 +x$=9\J}C =<"`baN-yg:i;ї_etf 42]6^M_|K#i'1xtvHvM+%]wP(&=:H$;SgM^R-}c>ΟīaW=X:Z ڊb_$n%inL8Ȯ~Gd1V!ĵv 6eKsYaln2J#tH\d2fa˖rT ʫW1oq桏qR'9U\xUiԔ:Ej12XMaEBCoxuCb[#-fP!g TJNJPRI4SZ%B_vldB*N6za$^$ \yTZ=fc S+V\֊k\EAsdjt0g٤FcYithx2J= c lq|q'O(b&0]tnl!B^3l;X. g I F.ّ&ܳ<)4hBj_l7)=cJK+?@fan‘)Qx{ OY1 sjb)o@A8etfSBy~8oF2 'E1.` k-9u3Ì \ĩf"~5< ]PVgT=zcGNɴ$ߦD9eW:lZ.4c ŘX"p)r=k~eE4i'Wx c*Rd0щ#̐q\\\Pax[԰?Dg`g)˱a23ϣϬ` \mAB;?#y^{v>-yqc:wՅzP?c׭!զ7;Ξ^&mla^dsAr2%:K^n*m1X4f240 j !SijLbY%3=v0n2_4'ͥx#*Y5Păy^3Eq>FȩXGP1F(n;#%`s:ϴdegki+ /<sF'(}K&x'iヲ4eA>xbtZ⎩:{3T&}d靳G[(O_xVJNN:zaů2w {5GO~ǨLZbZFfֿYL~f5#reh*tsZPG"E /K Yo"f GV9ʗ+I0X,]Z)ɫ\ǎ-drˆ1V޲tp$٭hUQz,, }1!R]"S3=7IΒܾc5Yy,_BCX sc3T8ҋ'{ފ.Ǒ][֢ o}%A j-!fv;))esNKWQ]UKa@HEFf-]Ky֦ \IK[wĔ,= \[wg)ف`@\yyMU94){(HE8<f?OEIeSLdI(̌ q+N,23q K%&Rt4Qb-lټOZ;o߉n~'vlݗici]%ihLPtqحj&|dW$ݴLT'QEu=UG),$'͍+% #>֬]GkjG?dsXAv{;N^LZ*nY*"?+$ޞ9N fȠ!R&Pʷ Jh؈ʖCUe>&FS$Q댘  T(a V|J\c>G5`1qAiae)񢆅`PIB\;, ћ,DVcn*1#!%_)%ójU(IP}4?>@QpĤpCJl%QYK~Cs8䖇TT2v2iZ*^(}en͊ U i yKdk-lZ>^|H#W4iJk+Y+͸3Sxgϑ^T*.i.WDK?aQ֪dj%3(MrGX0 wp'~&6$?YJrt1+MS]꺆; Ch(Et57|I(N(r2rFzZ(\g)/5 6p#1AVaS]X7ʭ,2%T?@㋽g,%$:LLB&nNP_?,Vs&Bu ̇g;ď]z9s=bNj./f Y-%K)p׃,q"g^nGSJSiĂ_ᙁa?~7_|>p/ Q{d-8ѴN+/sg?bl`Pk#=. N0XmZ|q tWPot꭛ -0}'~Ԁ`㲓)X}xVSTUKEpL-/?Zw!ܽ<֬[M~Q 5K HJ$30RխZ[L|2ғ sgl{88iz4,[&;8wu f `i~Z;')V(%%-C]/;vw?N4RWSՋsK(ɤzTZzrpjJܾ!R I4+uԈuC(TZ1Ns'{&ƑλUQ.悪TE@)(e:FM2b $ /Xc vBm~q2sU]#s0;H̖mWق#UULz:x\da7+֭^z#dmse=|mr>E9 ;VjܜNI4l"~ycv;RSUtu\-F,Pң=[ܳ / NqI=-\eܵuCC819/U˨α2ST@%%H.-0[i~KQʞ8Ji4F(e|g!Q?*#$.RtO: w7-JJUt+euZ+Ӧz%QV wUK\㼕zA|! ՌV brIzIlJe?ć(ȢR#)4UJ^f?K$QϘJ5J%JS"ųZ{ {SPTlK#U (/s( /sCS;[_-3 {v"r;%ItA* 7frz2=&|"Q`!1(yr+|UL`D\w'٬pBLF))LWXi/4fVr&Ş&~EX6<X"BٴBs%dc߶b1^t*|r8<>m9!oi.6ǩoeRN~]-5UDžS80FASZ:7/U,%,bflCxAAX嵗|},IT WFyx1_7l|(pW(Ǯ5xN&G\\Coߊ)2-9M<K:9:AZV:q<,D3$=`G:{Y@~.w#.rCYcgLd?FU+ 6O?ŕs~̵ &t]IR$0lٹɉ!N P9Ee5KBrr1/-*Ƈ>2rDfchGRZcW[tǒ0L 0 'ЙNz- ut:gpiLESP-[/!m el.fp*ifB&f4[m؏wfAd%fFZĕM)+Ǫ `˩fz)E 0Rmo?Jضز}#Jضe3U5䦚yrؾ,%؂zn6Jffw?q }wN+MwSh8Stxm܂Cofͪ"v@[yXX^)b 6z瓨Ӎ1ԱNMeh -z`3Zر̈́h o'QZl3BXKظ,̂n'!% AǪmwR3աI *k،++ LyK"W{P \,+:7%QXFIʼF!?8Dk0*[e&HR8רJj eo Q h"SBbX{$0eDCzFI㒨E¨u'<_ɝԡה~b*9> !E(Z<{^_?_!ft嵓-ȧ8X 6Q7.yFV | .̏1s9yik\#թf(6a!j\%-KRsv[6pJ8{2S}94=JZģx kyqek(M|x "yVW֓ &r_QSkq9fI6cElRjy\8| q\5>э5c o]BR6mFGk7Y^%Ug ǫ{M[9},)9;v%7Ʉp3KHw;tZ3K'?NP~Ó ͓݉J3-VQ^nb^&t&ʊ詭gZOU 3o.N8MiT 2/9?t*|>G7_c?7ǂA?du tlD"ax~n@VH"n G1}慂*1&"rj5M!,Q|drV㛝S-&&Kc"]LXPI'AV$HWZ072=9MJ Z$!$Mq"Oy Ei$XV;MȜ(( t4Z +㐕l Z4\ͦҙIJ  Zl(rFe끦Tɉv/J0ĿfyC٘Q*L,}ZxHX\,΋A)1[mo E˦A_T>cD9;Os+CJ;}'ի֑jSVGZ29Uzbʎ*ᲙScQl'.@' @;_ y\7P'&o CFl袨z)ϰ7GeZB~ZnCa< ̫|;sLiSXš͸=lZ_Co0M?q?݅|$8H|ω,!7X9-I.NΞAmO ;cӼ0эMś'ƂJ;S9: 6@PpndP]*p R|w2鍒I!/+KJJy7RzjCnXUY Ǹv4+> 3܀q Z!]Fָ%dѥU_GTjѓ=ܢяʱI;nbb6sZx8hzy?fGx{vle¹a5J1B{gIj1!'Qo(ȒK>@ӎ%TVOFX$B "it%*)M4EeI"Iqڝ[_blIdX~1L ِmQq$(Dl uzq݈;$2|ޛd=U#zI"KH|"h4N{y^+Ӌ jr绱])_DX-5JXH2l615M{8FQ 's Fpn~Ű[-ج/ U9E{Y;ћ̘ƯaT-%rMEg0*yRtʽZZn7(Fjٙmגa0ۈxs3l1+9p QD&4qk w.ZNSXÙNaQ. y2R/ʬ&3 ˙lmЕ4tMQQfqlJ?Etwm+5 ,@M[Am}x /]̴̕AV@IB*/ݽԬ\\>N!/a[I9.61N"S٘,[!j }LID|wkm^ṽGU!S/bʔUJPRJ%\l~v?{踮L5( y#8")R%Q%JX3;/J~Ы_ի;tNX-;8I' y*JW4lEM΂rLa|t"KN1qy٪X?GCɲ+?1%1ˋ)#15L4nOfoi! S4I ~8?~w}]Z: oƼx5qjk L/(C^GVE%ހP*fz oWKNPg6I،LC3\s)%b1ߏљMFG['-L Ύ2"՛%baf 65j: M>K\"'T4<;=1I`%77K#X2b3gl6F8]Ė &B1g"$ǗES Nƈ dy*lzIEy\:2=niz#Ջ(9XS,Vb0(##whw N5.'LU{DUEWfd%q1uوԥ 2,$bj=LoXcVJdHQR SRы MAB< e7=;5.3۳Y-NK2 'e?te\GY^w~@dDAdSXB( Z;` :c@؝Nbs Opӛ">r:]Dt+Mdv7^K@(*Zpe4wrj_fqUO5S.=>ơ3o'OΆ]nn7 3?(Ţ$6axo< ^S*UV$^ rN.s*(\W1^ԧ ;*$re'U!vZmv¢HL' KֳLb Q*YZo2y}\K,b.BBY%)-1.=0$y9^9HDIշ{o]r2:&.w_(C/!eUx1:xo9MHgkqO×j+jl%zwgz>-lN}A1.>AZx ݺg1yY){_?Yd"..瑇v31'x:f5QKOžl8k`qn۾l+_b@+ FBsuxJKKR˯@1w쨳 w{TgFqiQXK4Y\j}F6,/ `|vƋJeA,El\Hc钳𣗈 q|+WʿiK>ŮO?UaK؄-`+Vo!m,]ˍinz^|6oUY'9t kg_?ͺz-̈́usayTz83SC?}Y(z{ CdQ33S^QޠO<@e+TZ3aٻ{xr `%mC -&}DEf L0#6B}$ YRr11/uEqdp|\"Meu= /T@fyT-WVJhI3"ފr92 KH 1<Ѕ>HQY5&9~zg(癀}L3=k?:JUU\X%$0`X˪=ٔش3EpM B-3׃^Xi5Nu$p!yQBT]hڏX}^nYB@@^ *#zŸu34w l1,6Rvmqy֬eTt3yNΞkgg]Fu| W*R7K/Z{6&cC[Pp!eRYr?"\ w:~m<_x#=oNBk\ENQRO1ee]!*hxòTU2R*!`M\f'"ddMשA,^pYV\[_ZJK/SļSĵ(MA]GV*j88 'M6v쉌'm~L˼;{IJZM db7oʙDw!++ |+XB#ByMpt+XJbf1 [*E-͔ À>:7 /HH!*7!Z/㤫WĂsX܅yU͚SM& No?\\.<œm9@ PdUp(jctR*x.*T&0'OB.=ZM?NQJ\G&rJf1z(ҍvj)̻'^P&wzDWVrVbQ!g#yoC lc/a&H:08%=]USxE^~UZ4Ņ 5c4maϰ7gyqGw/|+,ʷ1>dA_g6vóoe| y۽xm!VH&YXv{y$]הVN͋ aO wAIM-#hL&c}gA /?pH O~k o`-0/`i^W%{o,Dm^k)7p!ΉhI&//l83),y~aE rs8f>jkf`b/?ɬv&]֮DdS8#[F?`E^DZX(PPnpȰiFX<3+rpFD\TW?+eEZ:Ԗ-&`.'?;v㙧~L%L5 {ɱq:ɶńҊr z:iXԛ˾=L0LNr^K)>3&j1fKЋ+02hW| Z*:\07 29ؼ|9nJ,"G0,,[NUX.CNj_RisB4%pqeD"QW'ir`,}<ȝ<9*vJ/3qlK9vE碋e5m 4έ07P8Afm>LA7=wG7ǹ(["4Gzmxk=;ʉ|iF|^7#]{¬>C(Ey9>̉Yf2]" 8˝bY|B !P b\zX~;׬b\Y]K+;}7%X q #pՔf2y9F)Qfsa2=nSf=Ϯ Iѩ'6U ē!r*H\Ym6;T%1EAa)|)PG*MLVz'b~ʖR>erD U[H [2mKދD ω"+bq5WɗUyV޻A)#+iI++p8gb**Fq6 YHT]XLeuB 3|ߢy(a=G,^(ᥬ8_,䩼Fx]Kw_,Jb6ijO@snwd rDh_T͂3#4UQba$vI1$+ Z8ҧe;.MڬjR'An@,$"'l&i2=R LJ)y::ΟsA[ƒUpucڥL+N6-9ځUX{OZ,YZ/ͷoĖbcUTlRrrri180&pԈÓb5%-۶iWbrkVh? 5*._?K(C5Dw_JX~n_]o?Oq]p}f<;~Qcl]_+<Ј+*m2tU~:8#G0.!贈?d¥;M27,[L\[2Ogxr:%)M7M8uy,Eƻ!Ct} b1jc LE L5Q\kp|K-`KW.fGBdvz *j}(ʅ¥27<"O&1*/oW%+1LUl0+d${rkV,c~ 0@ c_w<Tor>cfzd)-e?wxW>ȓٻo`SSc۫XsDF9'0/ihtSXoF~zlN8`Ib++xwxT4l$f𛜛6-[SNjn!RR#8p<񠈧q=ΠmX*,S"Yl\Z?m;XR%b#21̨]j093%CTTbL9>iO= bM.j% yTa^Z.?sz˚Gw{^%*t6b]Ia؇mW7Of~ ΗdO~fDڥ8_ mKAN6[م œY(קJU䔔w`@wY&b5q2MJ :W@~,\Q)cz, M0J[(E ҩ$)U~|#F@y0RbRSKB2r>/TCVi|Oȹ9kr2*/R]ϪWr6qHX<no <0RfPJ\es sV9QPiz|6F, ~KʦD2kQ7Ǣ * dXpT##ÑEH&K} uU őudHR9BFg[Qm$ETZ2j[WfR1dQK+j/Gɀ$e9}کavOf"6|DXˤ&y["U5Y^fb S*[ደ:i},eJqm[:]\8DT ի( ?Nq yL-dZ8Eva | sV1>'WѕG|vɰB.;əgep=h~C_]̍ ݍB-0BQ昚ֳ4Or=[ȱ'92Sk3BJ\S|h.\gn2AY ?z6\"^WZ)GYNrun)Y 1\R1~&Isrg93 Q[M^6fvj˭mt\neq}'&LFN/Nu6pa˴"qO4; /ta.]~ sl6QabFyg/ gV%x32>68w,9u'~@2E(gV~~r7)M SP\.Kp.,N^iL0v 9>'GcYM.n'^cX/Pʔ֯qZ_$<*}"`ěCYq 5} KV݁|9Y5 ylٱLs4a)WkІ9aEm]"z %ٺe9nKJhv=O2طZ/1ti-:Bq5+2bXUV0\ΉA{z DXQc<8nRU SV_6;)w)SR s}6%}?θK|笿{}WӨ˥0/ǯ a6&M /~#N$ G /nRQQDEM-3JJEod2^Q^6,{d$ӛEvV2%؍p-}%u8"0:$9 _^p[G ':sM;}m]}+./&[XؾK7ebzELZ}wm?2It;zJ7leբ"yRRUG%hHO]] 9ْVI7CT)n,bF?ߺX߰n"05%J2=~Jv$2*P2Qh]`8eED%`"Muz\9ZʼK8V&bE>U]o$T)h@/Z R ߔ,N}f촣*sЫX7\VG;)[$kew,6Jꦣ@" bRU@&̷}Xd F,c.Cʣ]Jm]/GAMTG2j.E>Z[!uX$s9ĿAHtCH0+9@&>lΥ$,b^2ssPdQ-)ҠUUR&df2LPX{*Vmpr,j!T߉,R׍Fˌ΍q J YYΗ_t)F H˩%$!PG[Br+K¡Rry?IB?bN.H~¥- R%I='76MNc jF2C1bP3 eP$~^*s~?XjʦgL] D(bru!)>)`7;."g>C& }|XP+nI,OS<71g'n`@aj.`dbf'BV &i%iQhr`$ȁ78M`vlLU\ 0f^h&iF F,Ggt_"\8/?ϳo_b:Ɔ'Gy}xʉNʊ[!{|xƍ\Jf6sS3|xߢcTMԊӛt)?BbxJuH؋)ڄ`a<F5T f0JhJ}g1_}nr'YchZ&~qsLt2$%OEEni+EDEUTz)6;=ZY_E4lB%5\'C陲P]褫tQf%7QTʒq"vb8<?Pذba7ej`q=b[9{  @Nw/>HT<ϡ(# .Z{&amRhc\͒S/>Ÿ7˺Yfg_t7gڭg$:,6 տu܁%Gnƻ,XͮWh)ȁlyKS J1޹8oc<oNϒۋ_,=Clz8?K[fl;fF8G'٨7GPY\q7RX"}GhЅraԹ.MekV`I|MME|s`<t˜8%6;(ZKINVp 305,'^3i^U_/zoPPK,@TksXXe''0?z)Z1qK/j[!vyT8w.:<Є/P٣l]3n$pq7?BU gs= Co%$q&92J~-rh&㰈sI ? fIoeÖ--RK6*P߰BU+Rw+GK)tԳ 8TYvccV,c Xn4ܡS4uZy̿lFDB#_K(K험.b MIvY5+/" :FxIDS%E؉N(XR|`\ hɗyS 7cSsUsJ/ r W 4ËσYa0!1MƜ7 %RP['YYR[\:bn.L $?ۮ: NIO&y2;ikf..QI=:n %vbUF)6!!E$(aaKJ2BlYIT/0| h$=([zbN3Z^_*35RH5K?~7[qS%G\%d^~y%1M.Dz{i&ud,mexպ#c.~<ܾ4O,Jxٸaht/>FٙSzܲK%o5%H_]|cޗV$qkv 7g ?NO e.{$F;,[eQ_ݟ0'][ps xŗ{8G!׵NW|ǕC4lf:pEkdE}j&(Xʒ2a=ܵEuёy0'{ɲX}ףȡIQ8$[52֒?^z mn2+uG|T$t%֩EfQn0 @y8HmˀjKqV B}'_!!|a,c:a:&T0lģlbrt<6+1OMR~cjjJU&S$bffňd5҉vRDYw4OOͰh2DxO(*;SG PTmRDZHH>_x^($czfq,FM8IIWlƲ 12d7V/&<;#bB3q NTcN0(efv&B%U Vۼ9j'~*VBr>68S@ɦdsӴTB̓ E_Zn ㏓>9Ud0?}VdQu9Oߡh]tA|<<2Ye5g¸>ۏ_6FgOq<.&2`PJJJp9S85eI^=gsu.k81"/<:[>%-+LZZe5PY,Z/^vJaN_hc]F|aζ_[D  0X2p駙 Z!ezO7S~q+ $* Q)k`yǦ@XPHH &<яd'ߨ -\J V7t2rc_[&f&W'RZ9#7%KfQLSfձ2eX38kILB딫\` GB?u&%$d jK{VQY$Ū}W6eIªO_KP" s&I;^D gn1 JXT[ +z$|%D]_(G_ ,=Ю T_xY{a3_3}``v)?}6݁LB \ǧ}2Yx $dLI 9n|,\z|! 䗩 I!v\ʹI7_ZBMMMW_Φx5 pb&3s)_bvvIlܤǙ3g%$<'Ni!s甍T*9Kw/O~j/2΢ݜ,\hj>VaoL@Z*s]$%,ȲV-bKKKv5/_N!7bt{oN%{ɇ\;$x\n $S=Txi)RjYǧ#<3dBeV<L$A4b5юɝeT4 , aPko<_9x(n[ S΁Ir rh#bpP{%)y S"tf}_Ϧq= ɢn(zrs}``Օ 9Y42{uQd 22`Qu%#]mVo_`Ֆ ,^D?tXG8ɉq*k2MʤNkʲEӯp _ZQ?]=4?ڇjb%sx GmR2,_D4q8/wSX\լL~QeP d0>pnpu `?BL3~EƟ) NտVFI)B hA ʳb|šW #l˦~I=NNc9ۯq)t5 r3/*ajG"v~{Z¡HbÛZ8)k C &B>>C-9T[M\EO#`e=cٖ;(+,BIŒM;Y]`Ez.~?* L(Ƶºe43oǝdZPtm]x?<[U.zE+ضaͧ`)Zƽ0;IߴmwoݏXp9Xq _>xqyܚKs}t>gI~I_x<.5K}ckl6-ch*Ob-f|F F9/B 'wKA(e8QLqU=dq{Cz&fTږZ(9]L&z[x7׈m??t':/?V^^uQ86-\l\XbuŪAx|*OX\ {NKJ'IH*jyE8_tWJbhTomIx=+ H@5PwT^| *_d䖅pWALFŰ3U9B*@}eՈ~ #G7>lsl4?G]m)QEeRbsH%S1l$Dec H9̙'Z򚍍TUU䫕\JZE;̵IJa\~54z#?ׂ2/~D[#5θW{! j8J(8ɢ T+`Ůs՟g*<纍拎v'pbe֥IZ`|#3G7>>~ӭ_T)4(K9TVH_/١hbCɌHC)Ib%_]uJR@rfͫUy%{ծ[7Wm+M<%+6a5Ɔx? K5w.(,t?t܃n,3u7P_uZڼ`Qˑz+U7XnͽO^4Lj=TgVm_*]p>vvc_Wox+XjF !K^%c?W+ۂ Mo_g\ FIENDB`tipp10-2.1.0/release/help/de/img/h_lesson_own_menu.png000066400000000000000000000410721274324046000226000ustar00rootroot00000000000000PNG  IHDRjͨ pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_F7eIDATx]w`TUMLzHR !B  ]T4PWw?]ۺvECHz( IަϼqaEڮYS{3ν;:naA}deI;! Hşq0 Seasaj5?$_Asũ՚e˖9NfyaQI4L,kZIAq<ٙw=u: (<鰾*$HDEQ8Q?2t+@q8NZ0Auۡ*$ c7o9qɓ޳kYݰa}oo/Aii BBBlv{]m𰇇\ah_o nOI`BQIDAL? AEDze٥oE dGQ^߱}MӒ,$ãB3{AOV(<_ ߎ{yIyA#p A]=}&UV4"לW A76͟;OP(BcE.VIkin̙Qb ϛҢVj=<[Z!ipYYL]X}Nus3pܹʤ=n04-2vG{  $b^YUk(ǫ|\8jͳpk.׭>24|R;ܴ*ul6 $I"BKt$IEŅI& ð(ab5Z5hggJiU* v8It*J, (`8;N`*348) 2n!$^,ɲ#wH)xt(z%ѥK7X/_\Dpa?KJr}M F!"aAH(AWREhFQEQI`Rlllܸq=EEEI.x O]A#zbfAaYl6vIflefZVIXu%a6N(fytntK(J$8U eJ2$C!Qx:(J0EYٹǫkm5Gk^ a\,tdH:MVptɲ]w޽`0,_`eeeyEy̨Yf400ab޲ysGg̙3<2[دӹITTTxQ dfp\bENnn]m͌weffX jC!sf ϕ+TsSg,+]} 8N!kmX_AzMDZ`EQj2v[aQaEEy_R}G)-˛3gʕ}nm(9rXqW(GavKϔ&Oxm2ldXTT(T;Noow.XPRq'I G-{ԩɒ$0 0!i>AAGXkkoaXPT @$w&Lp:$44e?9IKc;_uldĕA.?uAxSe~ȣ=f\NNs\̃,҉ŧKJ:}\a7o=wF3Fz77C!Z__  ϝ2yR={nRlh=j;7&.660LPPgfфz>00P$?a ivh IR8^0?d Xw Sv|FJ<{Ә]`Yi )<ԙdRNp^&]`$IQ,<Q\\9iqc8.0ǀmw:!LM&IQ 2EidYf/w89a+٫x q:56VDJ ,k 㜾0 9YM3A$2xt_+~o0;("A(<$KvۺY!@W$_FXy9W PA<]~$lL+ Yqm /4P=j:[ZscJF(2 k@7=ȲP(1%`o"IW -~~$I\/L޾X/])Vknlrzy(?&_n40tCQ[*U+<uT~A$;ad2"sm߯ 5A7#cQ4A(M1*ed OeA X-)9y v$EQ $Q4M~~7c Ð(}}>>z( MƁ^Me >co`nll,>Q$=mY'Oq\$Ǜ|I鹅S9o#Fc0QVZqA <ӧOv8oVo2%Kb/cbFt''OF 07.q $"hAyUiEqǎmmXRRva]3,㸳g+ΝX?2,l CȂ/d4͠(qDZWܒx0 CO qѵ7#0 u(jeYv8828sf*s 5c^>b,2 0M8P0 0mmmQ`x"$(P(zĉ- I XyለH@ $Ap8.n2 ˲#2)VgmN;teIaTPXpɥKnܸAьOH -;vl?~$IvCFDD=`(ŋ8|ꪶq{{>f6Ǎ(koYw6=%ezJAAZ ~X(&M.D3nIBI ໒(TP(xNp3x"K/ <1}9p`T@ Q"F!H֔p R4Y[[[^Q4!N(njj*>QHeYV|HM G:Nx^\1_oـ EZC3 A0(A:ځT+EaYzO>0~~ÒeSL}` 1crs#0>6MP-fZsGdssswŎ`nlqR*՗ w.'kH $Iɲc8 (TYxCQ T?Ȳ,x*8!$8q wp7Maa,WVmjj1,,\sCI }:Mђ,C]߷}՗(ܳ/LE. +*m6V$%xHH( ]](^JtKh|x9Q+77{z$ Be=W^mXr6`y )(ȯaCљ3Sff=nZӏtɓ&S*Y^}'Nܰ>[OOI&gffDEE!޵˗.j |*HRȑa(y{{{zz[RrZ0$$pI(J(^P/v)\,'vhxa$q'IEI~s˱0(⢡ehcǖZ0$C(r  罽}l٬"##&&Mjhl&)֖,4[jК8d}oGG{IiBiq?>!77;,,ÉGcbFǏu EWČ{$))3.)d\!.$a=ywf0 cDz R*A2BPT~Jhoߪ@@coiQ(zHzBP(TJ zn yy9lr7WUxVyJmqo`=y.'U$Rh](#GF _իuttzYi~7Y2EIo~f0^{U/o]۷oY>ǝN-0 UQQSOTvrd'4L^I$yWQ(>>GJJO'$L::{`R9rӧ4Cthp`'Ƨzn(T*cccj w/X(fGqqceYVp:>`z%x6x^Ay1ɂMV=(`( ^aaa|nPpgeg 76#·~mw8rrwvua(7lE87+3S:77CHظo}Μy4M_0JFDŽF 2XO(j%K]!@`P+ Beyx>pЏ[,4jgUiK'hd 0˲+W hݺF [‚?=]I YZ&M 1͞^t῔ӦMٿYxo6X:Ol߱]ՒGwAZ 9طr՚?eYooo^VʫVYV**CeÊ뻤2X AQIY2$C %A@ zdY> :uhAi 8pN<.r`xY2DI8|kg^XXP(HBP<]^ EDQ\[F4QVi+Ð,0 3l Flr)1j\e# V0: Y]q!㸃A011NM/|n R h)Kf |3FACl4n]14ÇUWV5t̛=KV- 8v 5_h#A$AvK7\mqo6aaa7vFIn2 f"رN I5| (mXc4\_8pСC[n-,, hÆ ?d2}?G̐,Vs:=vujFrMFa$ϝ8B4EQyyy@Fc#?ཆz׷gnQWWwߞ a9|s:':;oeee"u,Vr!e+x+yK|9fՖ8 i>yŋM&Smm7|3v؊ ټ`ӳa233 CLL uuu}}}]]]OJJʾ}lق Ȕ)S>Ŕ^^^>|zҥ6lEu(F:Y@f?<#%xVI…Av(vӳo~FyDqqq歛kk#Ϝ9H\\_q,:'OCDzyy 8Ҫ*QHs ,fsXxxٙ2AoJ{a-J={e?d2}gUUUoWBBBgg/駟:u"-- wwwFT*~m_UV|guuu˖-裏^|3f |'~~~=EQ=== ٳWZs6uðnz롧Nq##IiP9WYa[0*jTU ŊW577Vf[.os?Z[cSLIHHXreJJJK/$K/d0e̙r`@W9,˦8#F, RRR@{ {u:SNc&##e˖ğa8^]}ڔ:k>yFIt (ь{/""RR-f6-SEǎe{x[ j\9sT)Sg~EQT*_| 'MNFE#fH]7tw큾e]:fܹ駟v:G8qFmll|'⋪Yfyzz555%''T* ð'A>>>fy…)))~) Ë-e9$$eٜK6mҤIz>%%p̘1ɓӦM =|pBBµx]]e^^-%>Z2잿vzھaÆ[c0#t:}BBVMJ;qH Ŧ%O=:鐐`???23N'ÇNI1&.ntL,&OTHHhbbb``Eaa(Ǐ0Lppߍu8y9u:(rvjnoeO>yG;q#9y ۫ښIĹsH ,^L獢`gVq<_vw@ (`E1. ]@N8qҵx(_2> exVᷤ%mOeoG^-@8dYF8::Yԃ[S ~;!b A$ lWx*Ak dY8hs j܏"J(F[bY ٟ+S\[~TڧF sUP6BET=W' g4Ͳ,$kTć=Kۆ *jΟ|F <%h4P%Im׮Ujju8<Ϸcr8-[6tH .RllAEQ[*1 .tn(d׮ $ΎNeh8|֭M&ckk AuuuzDbe䕖*\WWaXggg{G3FRDdwww]]nҊ7{tj|ϓu罘˝N@O*߸q=cb`yVVXX]WWX^^"N+W  V5g466~,;hQ_?Cia#8QPX8il)Sۿ7<U,[Q?1y'c%yUAvx6sFcn^0>")ibEyykk+\RZ߽۟$NQtz?3HΞ?oÏ=|PPІ;"^yʳ6&40X͛7BgϮYE;vl7ؐ0~e g ys!r#G{zz 7mt7`Q*Mݳߠ7tt-fWeaMLLZ7vlQqNX,6g0?zL)]7ĎϪkɷ~bSJj YuZaY$pBY&@!!.eȨI;jjgQVV&qs4qE淿C4;زez >=ajF7f}{xѣGܹie$I&&&͝;mV#FZUVڟތ;;;'<_BC/}< >v m2dK}y3#aǵ;+Z~p V r8aaa#**`ך5vq\pp0 T*UgJ3 cV^qdq,88yj2b6-::tČIw\eIϜZSSmZAb':]yy$C&233$A$Ior408[,;_.߬ '|0JQR&﹘6{Ȳ4Jfp8A%Nj F$/S e,၁dQo0b't1upeƅ2*`I ɾ5$z, 4d d'B (qxi ն:j}Wl~Z]]qqx f`2di,!b1Y/YwɊ {zǔJŦȀ f#,,[TȵY|n\FI> 3/?DH,++ݷoRDQiRѱkN.77@"ZMQ4MS :EAPPqq($Ig$I2'B( @K @]81=h8#<>߶lټa46| {_VmmG3U֖Czz{o^xyVW} ƞC?VyOXvlX,($OlroGl \@r`bFdA qՑ"2.K[T(;YgbbeFEFKVq!2]⡸2p!7BFDB\ Æ74?fΎJ8fuήҒY& sfϙ0! EOO/ jQQnnnQǎe󯷗,Yo񚿿 C#S&Ov|clj2}92,22e\O1$Jpkkk00 Ü?eY@74;;_(7mzR٢$ K/?Gx4M `ڀ u`QZDD%EXٳL㏭uww9'7=(PL%DQ)Qa.V0`t^C.曯egֿΝܺm3f()9' 䁥^^^C 9^Rwx;mZ//AΥ9 JM]v_׿[N|Auٳ;$$DeT8e+(P a MKP0=wA!rH&f;"b4Nwl옻fN&O|0ERO>˲CeY%Bk@y7dZ<0uj͛a6y^;nܷmnn(j(GUVڷCNI ^!t:'M\ZZ#G(l6㣏?lonXƏO\lU4 ުf{h4ezN\|xY9>ƒ3[]VQQ^vLY$?8x9Z8*p8(U3`+]~Cuh IIcǎ 7o]ߟ? 4VTtoPQQ^SS#bQaJR(QV]?2A$JZ wJe_?dtc8j$ hZ RTՃ_iiH/3(0L` ƋxKK˹sRRfܹʆq`ΜyofxxDXX,nݗ"38qxłaq:d2(ۛ:3uCCNgXX_x6idӻ|רhQFܹ͝P(VX)IײGQԉ %A"ˋ$I0˲׻p1&..,Ca<$/?b6LÇNwwwPxNlXf?>0II$>VILL`! NxVdZfQE L*H Q0QC3.^t_tttmm7߮{O}}}y CAt8 ð~R R_q8nnѡL<v@T6URbH#8ߞ``DAtwwY [4(.F$QbBCCnZݟX(T*bޏ( YyW.efPԮ%׹PvBBBfϚwy뮻fwY|F~mv<(UXTj`By{{LIA.= ,c8^[[ں| zN*];{{{q@;@ʺZF7$:`4V풕wx 8!KMuuVRrZ\VT^Qa Erܸfʚ; C,C=IbV3EDp V`8CQDTT ER3 p8OOyM&Ӯ;׬MOowMu) t!ӣJ綪 IVTZ.@PGGV0 駋AQ}ؾj!)e` KppPpcc#A3gNMMeYV*CЊ pgJ`Dĉ:uQf0 75=JڕJ5M30tڭVRtMFF$II ץlu#@D MQK^xk$ `~CE,0A{0,J"x,;0.os=WkwS$ K(GANp2: IENDB`tipp10-2.1.0/release/help/de/img/h_lesson_tabs.png000066400000000000000000000067451274324046000217120ustar00rootroot00000000000000PNG  IHDRgAMA7tEXtSoftwareAdobe ImageReadyqe< wIDATx[yT$- Ze+RKAm=n_kO[{*-`O{ޫV>( ʎ`@!=yd sEuν|o}wFVEy5 ~H fseuP 05tJb~5ؙS5 rr&&I?chz~{E `6!X#0~5@s禬U +.i1.v^ ica 0k䐴ɤi5#*ܱiu:dwd4Db^VdjBB:H(}}h'Mr4ZQhV}''7gg4ZV5v z`0+ah4{t!±^erH.ezdeUG$P7㉱qqK,A w'ut q,*/~ C>&m.D?~[[[{ڵа[4lΓ%ҔmJ,[0ֺ@{)uEѫl @qN̷g g8FNVEeqtWUUĉL{`xNf撙(DGGG<k rcCJNݿ_}@Ғ!i-rɟ_2Ѹ$)mpVVpp]ߧ}lQE@.e'Ez&QD8"GѤcٶ)+w1&f HR?p@`y@Y.NT0KH|AoMKKPXWWwuuUji8 7'-T- r^~ީ3akqShWXi7cmT_mEw#U>ݹGqK.CM(ޥ DWLe GF˦k _gF%u䌒jJnŶޖrJȸ'o9|Cr̙TRR$777L4Y5\cbܸ~q(?s淀3gC?"#"GG g̘ }aO!gdm?!//OREFA?ڠ)׺^Q^w ȪWzؓF Hke?TΛ?;-[>JI*(8j'ON\`B HGIєw5Jޕ֖;oڴ100 44I (ҏgK\&}ZyEYIiY!tee55`|OboN%yBQGF|zf|քBgv2)9A*wm}opyܟ7*׷| Ƭy7*e=RģH֍{D OY0&|Ds_`-4!$N! "-e"ʶ ic!dK,[vÊW^%...*UԧSSHދNM[0Ξ?bi5([` ۷prrξ8f SA XρWv֔‘D@hͦQ#GhoYd䖖5ѭkukݥ}"ީew!u/bqjYDL0EkL:gRzDO`[!=&''g q{Ё%/,EhO@INޛuԓl.}w7i@xԴT9"S.\p|m^:vwzzjP`pܢ<xBݻ? RU]e/}wp;5k0sbғ]1?xD9?K|"Et>h%TTTliYN֯7ϼ^Z~Zw77~ I{sOI]UMmɜ6ŀ"%&uCeZ7Je3O‚@_VbOOϙ3gݻ'3!j ,HP4+WJ,\\\\12<<cD$G6,**|≡0P0T*nj$7n3L%ԨFs+{y h:fJVcğ2¥ݰ6$]?ErϖnC.b7H]u:}w,|p`DF4[*e'n$ +㗸aIXX8mwTRzv}||}6X:yr Ӄ=`m+DYUZ""2R)N&bqDbԀiF,\̒;c P,8L{cmtBZ;ykg+GDgk#s!A E7*Qm4f{nZAl`*K.!Z{gp50їmT:c?1:sqvk-FVsf]l~ YGwW *U_ݢIfRr{xul6̂(+I=H:_ fhXl> J!DQ4٫ )fNm9e6նIfgt L$=|z1*jc$sy py_Wy}BjСbIENDB`tipp10-2.1.0/release/help/de/img/h_program_shortcut.png000066400000000000000000001247201274324046000227720ustar00rootroot00000000000000PNG  IHDR1[>gAMA7tEXtSoftwareAdobe ImageReadyqe<bIDATx]@T֞{e٥w콤齘R^Kc)FhbMWDQޗgfvEh?ސdۙSΜ2sl^d]~.?%P_VvV,DA kdr( $N [-O˚bBƩ#F&TWUWlv2t"Ql4 յNj5e IǙqb$FFFXSYY_Y^\!ۗ=2/JJ=e ԅp>fb7Zc' pMArr'CgJZĸlSjP j-Vl ιO 2d={FkȐ8/4*CM.@j9 ]# CHTv ֣G^@mhssO̦޽Y?}!h/Hr c4Y6IooPY>p] drXk4;O(QQŹ ۢ H`aB.j%}N\TT^QZXH:ACTJAy2\ၿjARdrZOO}!j^j F[߱el۱c#/d$)5P-ʇ?C<=uJ@ { _aBV#o5;zz{[*3xzB|tU>^^6Bm=*%PVZt+wV ydc:Jzt@JĿzzh5q P_Z' j4uU`k]k$1Z|ayYA_YqujJ&cRAe7yه3z{>~/ 65+AJU0:2BCɝX2oV;Rqqq}{<[lہ[!klmژ3?[\x˭wBС-7U;# 00?daq~RRNuO_`b9b,/5*SL]GA6˵ pT))[ 3R{uEӦ>g6Yb(V\69%u֍S}ڶ_5d K9~g=y⫯Lދ$O=y]𡾦o7,4,1^qq H?FOO]ۊƿu5UZ'[f̣;6ovzucGYc}݀A)AQ={e;w6F~_3'֭*/)  ~[u;[LZQjR&/+)YRsA3f 7xyǰ 0{&VWV?u_~f2m |~I@P=a@32XfMSaAX+BG3#zd]w+OKv{m[6$%$$W?AxfvHƩ7vǍS'΋r ;j|۷oq響 b*<%DɀQT- zʗ^x-*&pM b<#c80bz6ՕO?|fQ1ꪪԡCGO7x" DEǔ-޾y=ѣǗ 6+J_T~^cm B+,,:Mn4Ӯ63+3q;Hv'eP+ qvȐClxYG+U*ARzEF+ٙabxz/ :z7%JbeH~**J(>y@XF L70/44\P@'C2a>~ zEE=[I : HOv>>>jxB ?_$ q0Ol|=Eb,Ol1%GxJ%60O>#F޽c˭u*dVvfvN4n6k640:2XmV5CU(#DɊ(+Lj~ "F<ءssz;` dnN&dZg tW_ 6wW\}4m C6,fbRp{."6 bN3b6GTv 1$$g!C']w͍CRSy #F ZQHhpдa#F8ȑ#jELA(R JRۇz7ߐn۬vt`'ࣙ6!(lmܐS&cP6ұ#!A!Q=x; Eơ^@61810S jkN<3/+F>-J 'v'@m LL_h^ Ъ*+axb3z: LJ2Հ74uLD`H ĠW^q‚}v 9U T>nq&LᆛlȐK.:tX\lߡC~]A!AP@[{6+ojLb=<"Ps` )-/Kr/,Yzŧgп\)a )SIJ <[T#8-uhPPtvAHƑ&MZ`)KH S* <WVVA5BÃ1b$LeК=٫Gt5k׿_CcO5U~ށw}GEExV'!(4d'O~0 IZWx{LڴifkBIKKV[S2|N%Z-&o?~0xH*1&*dԴ!u@R:ꆆ L q$#cС5)Rsr:tE=#>@ZQUU?_tL΍6rí3OƎ7ь3iiJJhO?lΉâ׭_RS{?U V -f[|\(KW "̞e,>9|,tONg=xGT4FQ b^wqO͸:;(f (PtEEeTk6.XMDd 4  GCTRFbaoĖԑĮdgY C@kWPVx $)UWg j"(lV0]+d[,6BJ~0@ͨ7i4rQW["KJj"T+fD*V顁 u}YU<,Z-o.YlƝw)t4.Al#TRdll뵍F+`4J~_Lj|j[o%S07j=ME;uFъ ,nLjPA€.l=/}߾S4()uWs%Q:65Zs2"/~p\ټjU +Бp /ރjyھuwzffYޫ*+ަyaN\1uy P"H2Ө-6hNsyAp{|ɠ@Qpg/>  -zK؀g YS_ˀWZ s x`x)T,oq_%'˦\5=Hܖ$==5$VJDzTcA(G*2 dD#}XV*QFPGZQ2(u '6|u 8PǑWx`. gq!7Ir!IoJ U8K? H^}uK^kEβQp*EP\A Y%C5x*Мgae֬?R_oԋE,`&?3HOL:&S~b)giHŴr̟bƌ6jm+ks,!O}Xl#`M %4$fH2΍9|n4=s:s#D OJjc60G3`;^@x.i=Cu ,\KBB|P+۩B+t1oz BI{IbNFj6 Z0[@m' Oi4K\~ZܔdjxH<v*&Q>A}.Q^~tߺHlpٷl)kě/S_i(*;kB L䘄?ob> !O` % `+1\+T~jň%kDnț/Q*Q>8K#m9qb'2ٕOȂ%3Zd A d25[CQ#PX5KvUTVK `z91uz{5<]&؂֪F^"{톭ii:&}2B'O[,Ą5M7Ap 톃 =C7ևk/SṲ@Vr;BfXrss釼N1;;PU" 9B}ˆLC{wmDƵ:IN%4'$_Q\LOWӧGHWb9ᗒ?FAѣ]ӧOC{3YYz<'NZ_);@.!t~|(.*=s>sn#C20fDWvh2٨h?b3zX#|Xx 33'?+Ėx8w}>9s>;n(u6l߾ ŋs̝9me~{'ֿ ֯_+3so/TZ&!vɵ׼gگ?qoyM[ۻO.[ytɒ%4s.;FVd5#+Dݺe'˩A[DhG㧏?3ss ;s/{fTZ¬,[3bd&}}ۯـm*R:x𠗗g8n9˗gz3|ѢEg =OAXl5H^^>}zϝӔJaƌ'>jf3P$H 4p=rT*𧪪jڰ VSPȡo~u{xaqNj:9ϐCKYe2MO?ӧf)"|;x?4ʣGc TTns? FS l6VL0 N:AaQiXXZol9%  Puuo|rrMxqO*'O1bں:G1 IP*SҌƆācL  s{xxVUWAjhe\{+W\qLz-:S9nܸO> iu׌ݻ\qŕfeĈǎe~@@.L,أGK/ *RtسuPr􃅅0% }>O6 蛐tqBlWGr}*++4BۻHXxk筯}B68%'rJ9_oY^VV4P#/+O~Sa;wnINN줱A7Tܹ`',ð0$ =^'2Ar_t:>!!Gpeš{j!%pb:O@y1 oېw*,1 q&KF6ePs U狊@o`eC"}I[[ťe'|f>1tJV؜[ƏHjٌ]8BɎ䂱6.+scً ĖbG֚!yQ%19"H 9貛5r%ROG ʈ\988ӡuJD5}AI ىQ|BP; q)*AZAȅH)Xyq3&s:R"[F:JcڲՁ]g&f>~qtrnG%kgéJnzB %kHS7"ĵ*:wb!P@K^ qypCsl\m!TC"\3*xnx>vm")"u b~"AmrJo>Eh|)bc+적  J@@Sdr:t".ҵ\!BvA:AdGtzEWNF V@bIoyB}}]´:9EE(#oZKtZ݂.U!`aC[ȎCTb3 l&A_qRĉFv]Ζ4cXpMPctሆ7C)BEA\/r:{s N&J{hjʲ~Kߵ%/;}KdY9-K:7GiH1<DEB:N( s $3)1g$F &UVX>O?OEH):uliYr[CmuZ4nrPZ#&R]m!VrQ-Do3uJٚٽ׋EXOT{ikH˒qn3#JJΔ&D0`'镽@RxV 秌&1 Ņ$"TN˒[Ejjj }ϪF׻Vh+**<<0 $LKJ3wqQ 4&!((f)2%%eZJMW7\2^uFY=ϻKBcȩ\"* K|A-NlunBhVވ2Nqô@Mc^z7P -]|Qx*ś@f);;Łe:xa0B w{r`CC}FFƶmi9YYٹ4j| _wWꫝ;wؐy!"72]Pڑ _/Ѩ I[t7޸y3gڵ{ܸqJKKH##={*ׯ_޽ bbzo۶#F?]SSSVVV&ZMAAn$ A 7n!44j={|y/bmmݏ?.6mPѣz<8uQ˗/_V@aÆR>tɓ-((nhĉbC$Έoi"cupR֯<[ +0 "aKrVsi Jft:ZJѨ.]֣G/>s|i r_  _ct ~5fyyǎ5k/Z~1)++%hOXx⢢o]x5kd ƯZ9 P{w5jڵk`.߿&;nEmvEZGZ:]yvq8yvB|Ӆ%묄$x \+t"]H%AoӲd.PFtʔ)e/ 7d46%$$ 6lGnXRSSgF]]@@^AAA~^;s + e n)::3;w#.ED4iaȐh]RD.JMMa, &{='N c枆9`FMM5} S^M*]>]Π!Ibr!N3=\,qS:tvu(B/IX$L@(q$`MRtѣDr9\=hĉ,Y:A䕕WUUlvr|s&% 4_]D|zzJ/7ܹsÇUqϜ)ZG:\fk$ ҄?~PnGp|m~~Q[P 6ACBA0` h@%?Y&88 SG жk/">B)N x qӧ @hHUE˪*z* IVd=#=@j(ɐ(YIs&:1ENfy`ZuzZuPF\\!c0x+008?? xOdd$"gʔ@wTC8S\1dHjll\``2֭[]}' CBB 4pL*ֿbmmS"""f̘O?z0hPرc(CBBڒ˂p7egOLw޽W^y%PvBB߀ɓ Mꪫ8~&ĸzv_Am#,u>oƲ ,ŸiF':DKLNNNa(TV-f ~~}Pe~¶}6iS^z.o8Lbt\VjwyիW_st^ Am^;EN6c=~W#s{!Hʕ+'O x ]ڤ5!ݴ!J4"v=9')aQVN36t=&8-[$5xy i`X#P Eĵ {L27w?!_4!}A=)!eLL[o4]Pt;8$`JPbbsQ]}TB{9ЕvZP5/z?FڊĶ}Kt9>R&T*CCCA͜9s…DDb}P]@KDW ER*b#t|ip8wltdިA鯭\NԖG:H4$!ֺAz xx}uy}ܣ-6ZEE*ꄋˡ%TuCi:,/ 6Gzw!m- i}r&(7nX]]_P`46b6I-pJ, tr\?A;gtqz`RU(:0$n+۵F*ǥVӸ­\FjQj2El3RHzz5u߿GC)RrtQrwq@DZgݒD\TrN{ӕ6)hkΞ=P)9*::y*OT{ o)% ugHV+h q,v"v #<̅FD2ݎvs;"ԏ76Vss)%Dj3:dm"p--W .SН_W~>EɲV\FAA7 =)u(ٲ:7oȦܗH| [鼡C41B1N9IJľ\FA4]<Zڨ}/t5ԡzNo{>Ҁ] z-Vv! EB'֎/!ljȥEXHG\FYDv t|ԴZt$9@PHv2"0-cHGҜHMH, j=yҴ 7Djt$Mw | EںoMvBhses.^GLZy(ɐp=r4#!rZ#bz\CPt:],:ɗ8 #gnH'vly[|W{4 {H$XV@ Mi8"_~db1r/h.)qFz>]DH"JDFt Nz;nawBq x6thڙ3|=̝ipPpZ0_?mhh0 Q8`398.zE_ |֭]_[W[WWu=zT^=sHUuuu[~}uAAݻ$pA\~鐐+hOLp]wvwυ!lg“P[[r@#Q#9s[݃z(oܹ۷o/#s4(%44D2P+xli6y_Κ֭[fXTk׮?{,ի#vl߾{~S3f8~D("Y2:؂F\|3F@D ~@C m»$5 (lO-Z1ꛕ|Q; D[A)8ÓVH3pu.byit~ގը33qug\aXӌGݲAGy u'nv+J݃qfrp{Ag YhN,99nc>CfKm]D@rzF;bz(I`,TC5Dw62K-xD{p< fACɱPTg:}=Ɯ7 -sDObcxΣ AR FXXN`Pprq[_Er:4n*:TUUo;_qDFrOj3#^0mD1tGcGB390y8?odqot!+lSNÇM aab3],D8"jr4D2Bt? 9cJ+:JLd(oP_]ea&$I3Os7%/7SC t%(WIv:/:WU4<JJ+Y@WciGpf䫢݆{B$ vPXF"N8$ =F."\g#d49x; uAGP4LiG0cNaB.(\RFtj+C%f-˱3@6!)!ƌG=Kjw>v=i7Լ;6/m!sB3޻A2ΌәCR8y"2{aA7V(\aӐ pӗUHg3^^d 5ȪA$$!0C@lSHh fI@]Ĉ]J " 뎡E;(oa' EXЀ{R6P#C7 v`Cѡ I #ĻQIRB!@k#K0E:!gFr`7[nh4f%Oll\ISHjիx~0)A&窫krJ B.AhꔂM}߿h5#$S1c֑!⃏)<7u}Ic @9H|i 7pi=)WBjklVɓ']i-|7o^\\IəXzccqb!pł7aD> /??W^6 ՙD嬵OPE6j37 c6-tf4 +$@אip tt: CY+8kk])wx!S+ʴ\TH .,6?H"g>$;pB$عXBs$Gܥ 9}7@r/2eʔ%Kt#Gh6l\qq~XӻiiC }98 !pq:/k_|샇tB(m|ˎ~m"D  TшJtB573\3wHd/$\bIOQrF?]A"v ?ZGxjQvGqM3ٺ<m]$iL7XKb@b`3꼓/.aO |Ӎ/Z֯JZ)6_o⋵kN6<%%y̘1v錡,:=! lqpt5ALj  {WGH÷޾gm=FBU^-+v3g⏟6|ի@*(JA(Qɐ=8.AZA a:`1`k%xN bTqB])f\^(n)r,0 5"ud^cDe_~9jr˭J[oMǎUgBQ4E#DdK۔0fh2,Og-c-&934)0Xr$[#xlGw]T3i͓Ry{1A^bBA Jai@$5/Dn@=BVZIdFL}:ZhWxP⹄N;4>"DN"AGKby(g;0)13[ .#.D0"1x*&:5 (l~kkc/%m$7/kkX>{)o&?w{ȿ五 (mDҵ\ @t iJ|i,/^y#k:+=\^Cl[1Ʌ[im0@t"c3ƏGsjcxZ8`,q -ݏpm#,Ed  ]՝eD08LI){/8$TJ=wiAz׋@ϏU ;*,1[A}.{!ICȿ-rtur쥐%ƬQy òi~?N)f(06oK&L<\Z m"JX'}=07Qɡ\C)2 :(I bMmAK&!,o^[1oY;vΧc07!.ĸ%x.!zI.u^E\݇e7Ie膏!24+ "g=#|._)Fλ761퍢\_q+>;˲cpgKH16<~B:DGG79rjлwÇFu| z033f_@\_t骪} `+** СC&)&&&((ȕ~I(?11=/$X,y uFy O{A.TW \jz؀ɸ;wرrMwJHH>U( F}ΜO'M丷ǙnC8e26k氁^;7 ^zOnOJJJCϟ?f̘G}nOK˗/n^"5kŋW\i6?C\~A>@Rgo[wuPE󁦗.]:|pH?;8qD=Zq3fٳ'eBW*os ͖-[JKKg ; 7|sӦMГP+(j f͚vo5[|)fOg[D)J4 9Gtllc_Rr<Ҡ/^ϞATpEĥ1KK2=n 2nHE0==W_:t(o`w5j _|*n:rSH!$$D/[l֭ =. Ҋ+`$ė,Yh޽6l ={~`3#sDR +//0?8TH߹sa… P-W^y*4_~→{iL?p O?͜9sڵ@ea`>}X,pP( a`{]!H {M֯_??H Ϗ<ȵ^ ~N/IT u%C eC/#{XZ J/["kvPJ93#$$?y*00 hԮ0?nCYH8Ēi\<0a`QyO?4" 7@Α`(Dsk`3'@ɟ9/ *(9T7P P|XX 7' r?'ɓ|1Ps=z44= ㏁ReO]^o/4gvkXJsx)| ,iմ| yǯ_f jժ{jc;?pȝs]R5ZszB`H5E@Aiӧ`$ J.:&)nܽ.!.js"sѢs4utBC5z$qA{0Ayj eVVְaî*HG$~ C 83a|fʔ)/pbP``L[v/p8@[? 鎃Dt=I3P #<^c%>:.Ñ_yedmV]]7>&tiT(}בK*K5BgIšӌiD4  x.@=~@wi)Ye Mi3wP FVR=2!zL |@X4jFH@Ph5x*p;ABŀ222@% sVFd:3~Rmg$.4o<$.@?Ph>9Pq\ӌ\st R&'1 8Tsl {ԩPcOA3{P9Fs݉H0m9&S9+u (iB `8`HaD$ (ػ Ⱦ1/B!I(,0$( z_a|007Gs(~r'G զ 즛n@:ܠqB2Pg`0ǦN B`::Ð!Cva !nb&3Xbj@́.&C[@Cix:7 _ כu0tʊ|卉'^\q6-J5ZGL(}9 B$S#-B :]Sq57 j+@uʪ(J8-/?rdORe-%o5VKY*0aC;K8贍\D}m#yO8 %tw:ڽmn1dJݱFgwY?1`e`'JhΗJ#EmSxYUb>'AhqzוuX@ku^nn"׍42W{\LڔemjnicIIJ2IPB_3޸ o$2ZuJHr81M[EHrֻ4CrC1cW(~fz6@:%!Gi l7"< {R݌vӞ‡0H"/J^’ry3TGKtH #4vV`Yy~c _2v+51mz Vrۡ4 ]JW_bLEj=oBC3=}S\ω nȹ.#݁? =kk %NcHTn9.vt< BddoQwЂ;x)a4~xRi*7+8X'\8"a+]ZNSרgH.=`! ׋rG:7W!Rw]GF=BK^F62_AHJ֏ZyrQt4" ADrư&!d g1flo2dSLqV+R;G=,G'Wqȿf4AJ1^G9[#ߖ>#hnA7i^E !:D:"8Uhk_FSryNzt0D\Y7=2(E.g!ֳ$$X`G#~w3Ê)Ϭ>8䈴p{׈*E4Za[/OFDG /499Qx Љ*I=,®IWPp8=vܷ ĢY|Egv-iBBi Yγߩwgv@^DEI^R$}}7 ~}vvvvdffbfB7lCFߎ~AjFJV%F[~R g[_N4 Զp9s)PCA81ig͑ДDR`E"ND"q{΂qjQ:>V+%|D@8n'6ntyd !ޫCnp1/t4[rh9)isQ>NdHv⢕9KкSs׊mᄻh^w֪eFGQvs7m(aAuTw~#PۆQ&PP$Zq. }/GJFj#nC -3qum~z-jǒDN* Yȑ s֢UG4ZjRo]JnH b ^Tc%.JCk jA t.!Bp4fs_+ъix߅;ոY(-Yʉ<HQص}^Y2"D&(2v;fhwAJ7cY@> >hbE t҃:tol?%u12 (M!lKEIrh#.@~}xsԻ2z^/y¨`ف2 PʴdDI{=eՉ~-?D pwL 'p_tG wco-$B$[%nFյt'ņ:t Qu thYdk$5~-H0Q)u?|ғ$׃T46mQcSQhaNG[R;*)@>(w.i Jn||$Y IϸzO42QOdz_-ӊ6F%|:<Ӯ:%6xu|n_d~-# ,U*'*or'۸Jk:f BH+ߐYP7h(!\nF#mᷙ( m7j7r7R<,䟂6BI S#uvl 4YhQ|qՍk9q]3VwUSsҵWɪUB4]Uy}8jןxЀkĮω`[V y3Xi愛m1ɗYh5^X٬6vLLAHH%FA@6Ւܡ׎UF4Y]xr$;PvT__Ұ"ޔ7 YD0˙"D  ~_K*֬2A&oрX1,# &t2%IK?pz/D,Z9^Stc24,p{:vk0DS 2A\4 ,q$p8ݻeq=sȾ݄Yx'Z6@Jhݐ}lD> o Z +.~ݻ2ZI~b gզn$\EpCG JZ(n7Rz ]HSpR0j.م} !a[|h3ИdOXgYs'UdD$>C^IXTTխ45(k<Ցp 3q]&>u{$WО>YK%BREm #>:CW`hTIz/`2%sЋMVH"-`z~!{Iˆ osJ85_Ҍ/FْmD(z:3Lb:҉|+PAQxO=c=˲L>YGM\.YRRR p’̋!I;|̨jϟ}z JUg-1` l)/s^_~X df㶴Gu8I&Z{?DΝ2, hi׮]mmmMM;}UСʡX۴is.ws8فz'N7pmdM톴 6fYWSSB"3 ;Ml˖-;vlm#!,ъŋ>tG=p3};e˖z_T?zhvv6#GTUl6SNNBrCOWYY ်闕WOp ~޼{~+$PG?5kր=SvNky fHLL _nM<)Cl#!Q09񯴳i-Z"^v_믿qc?ҋ/ۙmmJ~׆ ;:={Y}]}W̜9+##=!!KOO{Kw3΄>1cRڴkz> ?o$_' I)嗗]vjݼysZZچ @K.y衇V^ ?2tPq.е˗/rW̙3JW^[.] KndO> Ν;VXX8hР /<;ugOO=ׯ?g{Jm:u)dx6N㏷mve]wݯ+VٳW_]'x=G-(_~ᄏ Sڤ]ۘ}eQ 4:H9={6C/ȑ#;N:?ArO,p O?tEEE޽݇JUg̙by晃B7@cA;>?n ?wމT76 0d^BЋ'yu4&4M{}6I,?ХKo{?cRbey6B^!8x>9N8%}Q:!"Y!`Ã+_%h !ASq&h)6xGYY}n 755-7=(P$B-#;Be@]u؉? hmv1~HļPQ^yh(A/ЏD%h2xzUh &nh6zhhԨQaH:|p8۷/T&|ZZ h:wzXByBA"PDi>(hG^/$;@@?'d>,f j2qPjQ=* O*IEG2b8fL(}vp*tTW}]v4,f3}Ngq;.oYcM?W5A q'O>3NmOM8Vl~M3%" &LMYMdKcܐL}gCF@V橗Ah1tt⺐<2=@8ؤSL!˄d"y굥,=sϧ.3Q[#hD25 L:;vINJd(`2\$鴴k XѮm& EBxhu/1xBx)H?D SO&ƤAB:Ll`\D$<|gD!BP0E&*`0[)Q1p=R`)f-5f"n,#2b!LnT?itZ֏@:MMJjFB5cSbNh\}j6HT1J4PʶZl |ZdݣXh!nY$2WPyj]؈K-&4%&|BuQie"Y,UdNn4Nv"5~2z<J J(IO<]FO b#2<R[g[Ѷ8H%pƻ1a,xfP[!(,? lۺbhʛ9E ,Ҿ},U tF;5$6BImۊ>cH:z5:t~۹s,uG>|@͜jR~[7Ft|ɜ_ B/6mٵ*%$*ԫ+ߥaY,b TG :.&AnefV@Li%Fؕhhbٳg;Suֹsڏy<7m=KO3]cQlYTTncHHH̼ˠ/e~۫woPӦMۧi@ƛ$B:|;K/>}k׬ٳMN}K.Gz뭴ԯvn555;zիzO ͛?lX׎;IIyJJ;uy!##(i+3kgggr-PqA;vH;@'%%͙3gӦM a%rk9l $ZyJ:b|I>$>UJJJ6lPTtUUU?<̌~T /xS/9thOgK.5kMOO1s!C^zEP|.,,|WYYf5uuhEź~{Ǔ۴i3cƌ^={/|?oӧOy$/~@6֮]裏r5cA}g |O?4-- 4M+--Z+PsJX2ڧdkt"=-І vu9:|sl jL޽@6jԤI+ϿJh1KtN"cnj]먝p.\ݧ޽{> .puHO`.-҅Jv җjرgqFJJJmm-dNݻW^~4utgF8N=:C&71xB U=jAcAS巵kO?ʪ*B1Kj`QQbbNPu¯>fr~+W?oHA7Kk0Gk֬矇zbz͚ŇB,KzV^?~|EEwJ>= ك*tNZN3jJ}&G-ԢfLTdbpxA/Blܸq@[׮i`\PHY9هi߱cuu5h&HvժU<%Уn{gA}Ç`1?41{w޵kC y駟rrr  衂Fegeee]:I)-С(rh/^ pd _O|#pE;euBg[.Ugǜ]sss,լ$F"r7MC8D%% -頖Žc= 19^b螓0Ǖ`?/SJH9'p3ѸmcGHsg A"ZB&8Z5l\wwTf $Ey<"z'|Oy3L62+Jfb2ǀ@eeJU'pLR*U"`17;<chDžXEqGaY2##ran4.Xt5 c,;d6¼ r < }LLϪ#,2K^Uܮst6%z4Ѫumqڱ {۷MߖPoH-Sr|Yaj+%ApS\"$J셐#3%wKI%,޵kLj/>q}v9[{:[ӧO&DI#򋯿@aUuW_}5{l}3$`BH,2ܿp0nvEN-Ng_!]v@ezJJ|޴/O<>yQrm75Plۿ=׿@ё#% [YUȤ#G},o2P}3̙w_|aΜO3z<Ƶ?iÄp|;X3>㄄WWWoڴ jϢE=\.ݺu-[u;?Ӷmۂ.ܼy3hM/x@&%%*$ .v رc?+8rHPtlߡNC!7dU,֛|pϗeUwVBWwԁ HjMDɲiFUQ{14_jy^xAo֭Q~8zh] jNr?ǩ#Nm>C|xN&~WD:"BKည_~ھ}]w5x`:RSS/ nxPmv^vvI@q y饗t͚5  Թo*!C@CKJJ jd@>iݱAƻ9'{ǞxmVnw=\WAw۶~̞=ePy,] O ᨽyᴴÆ]v믻'o]t-,t 0O"^o*72qěob@ 7ȭ?:BS޹sgБa4ӻwoJ4"AAfffr 3bо00{l6UP}ݻwC7ĝJBm\apʛ$e֤Z'_,0D,O`˲[}9cx ABX0F @xҥ0QD;hF6arCX.p-Ml闍ztJݺu+ A o(˷~ޓ &@$##&w^}t<;u Za.|y\>ؿ.ץK޿|z ={a7$4hѣGE*'eܶ}7h=jÂ7ؘ3C+wuN/1ݼyu! σ{!F\n>%32zL8R"kJR.ڰgV-غ@%,4AP)r3ZKncAyDM*e7PCw+ӈH6IIg$`&$@FNDI: !X-Lp`:~eiqlƒ )baFrvfG^g *sЯAh&eZIT2onDnfOVAqM`lDX0/0q8fSm0-VП$DɨEY}2t ?/7pļj 5m L1`b,H4ipnBd3&ܤ>:,He^YN'&ޠ[IyG/clx6n҈F16vC5XXP`B)N 2_cC$҉WTVU󗂦uEm!Ffeb" =AIzZĄh4XMS>ϱaM]!1gD@dYvޣjJuCT>|A_Xdb"j8TcZǀ>=2#YXw 5#D,$"xP#DhyiӇ-HJШzuhRGSDpqvm'nݲff=@\af *1;G!?M#>;,bDgΘqy[6QIߐhXmz͖ _ݐfXl9Ϟ`OHw yIw-MfGG 40G}@|Y$к\_z)3#λLHH8|3nIIy晧*-JHLxSS>ݺ'&$uq >++kժU+W?~ܫ 7^x<555;ԬX.!^02 DʔV'-pBr3SS9_D#6$dvdeglvK/_y bJp[vv~[S]өS>SG;Pi>lٲ}ݼǬY+ґ#.u={\}>O3t.+i $hQzz=f:m,-+9r rܸg}(^oAS5lؐ}z..''Y=qGjNS9e=9̐F3է4b~J} ~~O0-5j@[ȲiiTi$11N־]iP_MtM'?a4KNVǎ˼@.bZZRՙ|SDdGRb£K:M՘*nX ?~IWvVD˯SjlD`;'5! :;3ϬQ;~uAD$i=Z<|ЪM:Mㆳ  qednNy &Z ?E`cO@ OkV" <7@ϋ0ggLcCD$QZ%z1OxAxDd#>Yo.,X pxD@˙ B@G{^Z+y"!\*#Q\_]e5"< M7ӧ4y{6ivV'>bIjڕZW>tj]CfjlR邍ݬ#Tm[׾߮{BL-iVۮ];s-?^Y/<>bBG tbۡz-?5կA)S}0Wg]m@$7nϧ%QZA`\^zQ^E>JZzZB`빖l#j'J#&*6d+U)_T~|^M $AE⁍]`Ch^K0# ֐~xtwr˭wkjYt3.#Š!NFNSpu}EM9_؂ =W_y6}g#4@o|\{{|so>-N6Fμ ^D,"|2{ﭪ (o}nN 0{|GwjƬ1 2quṙie_!<y=$&yAZM[i*XU E't^' ٴqϫ<WS} MPd^9y#\=$Q#QXjoL:yErњu6$ͼY' Ԑ 9fjٮp!)E&Z*.n\nT탔!7z*$y½*VC!jP)?i$y=-k* /| Wrɲv|?o' r Zt :u7lLAGF[с{#d%-0B)F"4:6?+3^SO}͜s @3t{oEg}ކ |3|p5޸ZEQmfɲP%iU ThQApvuxqcN¼>xObbbvv~[lXVo~ݩyΘg|W|NQ)\|2/?3 6Kof)):HϷܹkny]toT|;"IV(I%-|YCwr zH\ 7hVß~E߾5kǍvOi¿_Xx`565=ʫ<я?|!,y-PЬPh P˸]#wDDWX`ý[v\o뎔VUVTLZvM--Mwo(:bi5%%4wο>Go㞤^ߢ_gݻgɣFO(|ӛuA[t><#%;PwyvOV~mͼys)(GpyLV׸Li޾hQGm>G߳o>aGΜI}' f* u8^Tvq ޻"-.)UI]x`?.ܴim[WZŗ&&'Ϟ=cʵ7t(={vw4錳jjkyY$˥^%w][nԩ3n.x=z.//?TtcsUUU-3 .ݾc%?;恊e=i$%Qw?Vl#ܫ+V(KI?7;;>CU,>T Oknm]C &wE۶mBzwѳW5ky?>}iZxjkjUUsݥe^GJp1 dnUDh ,65M >.!3CǛn Y,vB;H,_ˀ/tn߲eӆ E*+!/|`];:PtAM 7|ҷ1S}D1|@twvq Κ޽7^7)1Z1c&7g6jܔ)7-Yn!ڝyzΝ_aдd{ؾ}͚UHM/Dc{a#%%SǶMM=:wuCVAu)yy0j2(Rɵҷvl%g#}TZU~ AM Jyz8G0]aSR^9VD $>z鬐H>RÕ0Fz*\6(V`S<3ǝ9n8}jSy_VBjh,H>Q Y[]tRd:@UZyMYw>ك:B8>#uwȡ#w Y 4Ou'$/4} FUNKi 4FC扜^NMEQcNr?T "7) ty<̠=ᎹD0wg3v Sԃ^LsYW@ӉH Gs3ۦ&C Ie5յ"Mp-637ex%e]g&'Ǵ)7o5eXP!ܯY1eJ;]4N,އ*kYalDQ߬幦TGIJ7 %&[Pwz Odi` Oȟ8;v> M.(QhGy[j<('  =222.b! (֦*y]E#䇴GpD'BzB wWz`Nz >N'b`D6Ks?ޙaEa28̱$D"(*A%8ݞ&ybbͅ{[,T2hG#FVRGrc71}EƎGMtb 2Q K'"A jB#ӎXICt{%:j:yjMP %Sr #KSDhnMp $o& 9sYaC "DwM! m"wCD<6v蓆\?Q#i%-na{HSND#M[DݛWMOP $'<@w{t fp"$[1 @Rn,l&"#6Z&Z4!LRwq˪H~2$0e,6Qu:a28\FJHYD"( IH(!VthPl“J$j%cQj !;AOHAFk$ADDQ6DDOj3,Y痩 =%\gJE GS>İ+kH=1U/39BDKP\2SL&u"MA>[D_o׌0OW=:DT5f_W*5"94P"4 -*1ĜƨQ׾9}2FB&%-.:#0Zu$ j ҉^+w} XH"%N$*2!1ʐΊ,0AD !$L&62ꔐM`OBIeĘ`ZugD'BtSq2r,h1Wg%) xIyz"(.LňLPQÈ_G?bDD3w'~Ĕ$ܡ̸0!A@44DPd)#D*cHLj>`d.d _;)e-e 9DJ'urb%BD"AaUߍt&+1FCߙhb,bJlQݵh) 6Mxt AdAHШueƉ7 }f5fg3ܦ'RR7ߙylGո@JAĂIcdX\ IYMBp,Ap=JC7l}n&Z3b"6#ן;au=5LFQF!IYA2'6A ]װ&- etpZ!|K[P'~gDtAP\2 #q$$ jZ|-(C1G$x BeF}!/F| cm#NHID8D A2qE&8&=] uZ{4tE>*H 2ZT hd&Z KpXʸ ePdb!![g辄ذ_ L}UE b 2AH 1!OsV%0"ju)IS4HH5Dkau4׆E(D=+L ƪ!2$F͈Z a~% 86##Hf#EuϦvgmAKţHnW8Է[/9x˗K.۾H.5N/.VܽWf&,g]:ROJ H=^%-My5-DgL6U.Xv\WA~:$&˯AףPt/! ғ7ȿwYe'Ȳ|N:>L(c` $=.cjߏGVcy6m%EK;Y. bLGQJ@C?;p |o:_js>/!u+~[~1Gɂ:t׺fɧ۰ [SVVYQcIY/{RPjbW%~1 …W\|ժeeU.]?Pn$HHc} S F%-q@H~Eh-LMIJe~ɘ:ME `\ ?+WTdytn4,P;rO 10~&L÷Ҳrutmfx==!_ص{*x-[szW\RxC7v?om>W_}~h`gZ p.S*n+/5m~gVJJgy_tɋ2O>jڋ:w;s^z~=bw/bƫ6͟4ޛ:"N-(VM GUz|^OUԪʪ ڹ/>[R4&|?pk.:gX7mzO{<ĄdhEUdUUnSy}/̶~[]2 g}Rb5Sn=Tx`)LJL5YR . E,6p|w8ÆwܶdN37àC׬Z ? >oYmE>`0$6| 22ꪫ2K>z-!eK,$Mɚo(_ *}1|ǎtz≇.rIc}Ν5#ƤT U _Fמuy[Sg)=bZy?}>ppʔ+s?e_zՋ~/;p_eKڷσN3Y9\z՛oۺUu:=9ګo&sb?Ap׼޴nszZ~=9{y0)9O=Xj1ge x?A WyU5Dd.6Ϳɩn"ٿ>狏  i o>c7ѱcu(2E @ODX;.̜:C9 S}>_nvXr螹I, )Yf 'oM(JGʷUA}7$l7a0~A%.QHZ]Lp.F+'c>s 5ztgCMBKt:oΚyW]~sIJr;j0 n2˃(>'ՠG5 ͐n(>%! }r=;D$ M9MJrUU-[uoɲ펪ZX)Eu޽SCm20X-.9)o]9#;dzhq.64s^ ě.t7WYz,zV1`ꢰuDDE%v{YcK~'X*QPd(cڍTU4Й_xI3ƣ2/E //Oqk aܝ%%pq9g|4!IѮd5IX7m^^x^^iE"5UkJ4)!ڈ##gHA8dMd䉑H}N/יHc# Ya"(>#2aq&ԳJs]\)pD,9ҋg8Vk0,^}3?J 4[ -ŢlqݣB7s{O2KO=`69.4T"D\YUˆj*T}>y$tq<{E|gPLrcIDx ٛ2]t<ƍq Aܮ.ۿb}PAKͩ i ,Ĉ(ً1-+#{6Q,pLpe -@w(T@ϓ;6~QVD?#\kxS~x'/)6 b ?k 708 Fg9]dc 2-$0HB{U`FmѠL}$1ҁA =pyҒ+|Fv؇]"(յe Wut_}x{g7hq[. s pW'+C754 P=@58hCE K @B"6tXVFCbW>6{zzHD"¢Q@d'HSsACmaFH:& N&d"꽄>a ͳ~Ű5#\d bhx1lVm3nQLQDA80d D3DYфk)""Ԉ{|_]_Y3f rgX`"*+feC3P+bɵ/(1`k72fCP%Nƭ7y®n`0(L0LqnTjPF .݊iiA3&6tR`;mvGnOx2J8k.XIe 9 $"<8(fsX*0]3%xae`emH (89*j KJ6>Y<¸at ~CWjf3B52rcU9 V[*k焳lRp ]"{ڵ˽pŽ^&DO?bTmi(DO@ΰ!*U@bQ7 C">93,"1h;c StQN;USU &8Elې@tD( ]tX ])!B\lSxqﺍn ^x( l+d*N{i802I ZQ8ՒBAFdMq{sJD1pϿ5= ,#e!qiZp>6eH1 @"Nb ZV) @Sf$D$A0(j`H \tax݋p*$L-&M.:-ƓL0G1GƵ(`\R 1A#M4u"fa1de*vv?~1''.q+__%N$H +xyUuSŸT`83q:㪒7a~\na(w-'~d#JrT[{Kֶ֌E0\6]51qܸ:74{_|&UpBnlM_ 7VL@3dPa@pG9J,7Eݏ9zo$VVJ [qcw4/)/cJ$ <<4(T9EQ5VKKg6WR5)lbVCCrr#1*u tf3g 8yE? c6-D%vhd,a]M3)o, 2e=lwBv:ڹ#Un@$]*a2\ Xa<1sa|tB4<22sRe͛S3`݈3] 1::7bXwNZ;J@?p;Ϗ@$D0$FČ{E"aƚMXmV>QG_{u췈(Eh_6`8Γa#;;RgD=Đ1P,Wv!JJrANKcdde?ԃ1u%0Qk #;'g|PlEXm0ΟkAE NcQC@"#T[}F?;[đAd#b?Hiq%#Ν}_$de ə<'|0l6 %x8f8\u95 ,˫ec#:ٵl^"9 Đ yv&ctAc3}}*1f)б(v1԰`h.47U\71ёmJdS!h4Vd㶫 9ێaщ|2[gf}l5yWW睧6hXx-^ẇ @`;tt'^{w/u+7,tAIG3cG}PޏUO)..1*Xlr{נxYg϶"64rxp{.7څ^3t .=NC8r"BՑA7x0;LeL| alQwQ /GZ=ic*\ w# u 桷2t=Is]d;bnamm#y .^>&0Hg;5gblLF=ϜBsK;r`ъl$Z7.!Ĩ@رj;Jkfa:4obcG=C*z^(Vf/^,.`>#H ,dk2!4eafM>lKخ6tK*apibTi^ Jn̙V^ ?̈ Li@^nJ˂ĖO>F{ V޿ּ"ZahX|]><̤ޑ Kf;kE1Y׾[~3mEXr):!1i5͑9PB>4̪ *u @Tec j dʤÆY3x?Sqi .* g*P7<#Me%8^8|,>,FạLr0:3xZG8Ϛ\'5P69@ߞ{u;[L|]_@ 000hZ Q\ЂзN,:PUU^? 0$Q{}m,Lťa(B-*D ۽JW~12vMa}]n#+EyY ؀JYiD9lq1DIi !&_F#Kv_iFȒ"xNAEIAtE5̸՜B xphUF1&YQQ^DQ@2<~rkس-S}hal^a kݪʘIdRv 6L^26ҋ L\`PMCYqqqNRi$& j4)~j8fFbAp:Uz @D3\GU =*\`⼵$Ob:ҵ&sz,@{eǓ_zW{]T@Cl˧.w8p/\b1|t{+SN~qt4!bU0t@HDmoG_o׮Eh=EȰ8Lov.hQ6~s /a2Pƛ~fɑ<NRj I͗$S AO#k+: Z M.r ^K#kEJ)yQc>M z&@E'"`G˺A[@uU[ {a*&O"f i3\8'M6]>_[?SGFmGezPf3gsO?mrYQ#>^=E\͛x`hg,//Ox>ϔiC8Ǟ=ḊZY%M^slflS&$w`b^l6m 7 k .7dhetl1Rm%c,W @Nț3ۍa4mׁܖo4!S% J---ꀸIksB!j“Jc[$Cy=)!&v (=-^G85Nɜ품bڵF>cddd{Q:@D`菉چ#z,3Ӥ[9s&̙uj.+Lƽp{~ 6mڄEN;IQ=ω'ގui9)=ssskRZT&]ޙ iNI(=n!zؽ{M 6͸S#wVEv v2@0RdEx jmOD>"N?3= aߎ .6+^V>bCbJ}pgnufgc##excp2:7b&)Ym5u6j }XkH_Ʈ@sL>ZN]T!ZlFTM؈AGvfOś=NbB#ipFL'ee@_MȮ#i_wDRT d QԖ4ڋW^|[F@9/GawԜu" pNAGKZ>yk3  z%&'vlKK8l+'W7tA o~4DU95㥐Nv> v)>F?}-"#Gˮg ?ΣgsZ>z.﷞P89 sYw.|r-'T[?VM]q8s3d;UQ=ܪsf8ѹ4ULx}"_r<~/?slKgu=آݞ~.?v=&rgSOОrm<]8t,CCʞQt%IfDj!cҚ"zNG'ps=7%U@ЬQ OźK{NԯyrC8|j=fȬ[o< cJ) Pހ9s?Ġ% cuĒpQB>4,}=փJG߿ n](^ՍT7D]E| '6\ڽ+Ʒ6.UˑYEC[ØgEh7JՄ_/Ѱn#_R3.H 3qq.5hfsDrD,xZߊU g}2 ØΟ@Gz+m+{4Fxٯ"*G7k}u&}`B$Jrqt| 3qnt A:g;Pr-(Sa,EE^>u™v3e|tFgy(,L]ͪkV'Ӎ"[??~M|(PkOEN"$6<|b׻/WaѺ'QWBe(s(/CUY˗3^R,\Gfj'<ѯZmM]@3D>V?%?!|?7 ʭ8ҦR݃&F(4 rػs cKރ-@ff,L6!dfq8l;36#!>.&yG#Yn<1w Eڇ|:l?сrdf3g۵YlG#S-83ό)y'fΜOmIݰ ӯ9fI!,~VFV&W"=-B0n&~kt|ޚVxG;~nI9N4yYPN6އ2a]v2a*d+=u2zaV`<\N?7O$%CC#? QF1AM;O˯|/N.g7Ѡ(~oo//^|U0O>QΛ;!2p|4jjNͯԇҲ֐1 *j 09& H:ZXMU˶R֭[Q__J-Ͼnx *TBYZ}6u ]9IEL"~c޼y|Y,1}9a0Dk}B#@p|>.^~X[] v16FnlT`v!񿦒rj͛zj)U̢P T[xPZ'YFZ-jx6ߜZ~ȲD4t, @[_j!PJ)@*Ь S0V/-MH nLb 1UG75џzgm )Rч s6|!(~wLxjdGNnAVN,"Xq玄,B\x>ҳgϦLt,[ E"#/}9H ;sLRҨyF ~BvhI]\e #-z5\&,4I@RtARCZ ' K4P_T!'Qtߞ/*ٖlK?yRhis۹sUAܐF |UbpڡH/ h)5 ϶MZm_JxIzؖ>v5> T+@"!2p\x 9BK2u$Y#Zlf3[~Hz59YB[sGcωU(IR}=a4*wVįHHDmQ_nAjY6Ow_p_p⁏ݟ ^O# @h/ _iĉFSiMy>IIq,L(n[%wRXI*aE@%2jAnV:fEZ*GvR۱LG";C8$"ݝ,Z<#Q5‘}c>'P=yyFp:3 ~Ϯ_?]:i "?g"gwwop?bHh Z/Gu܉[աlj̝s)0# َ\QQP!0|z̪-L$ e8 gZ!*é|WPT\<-ݖǟs&Mc ݽ}\vED=RwGF^T Bz4wZs`K I^v5O}YxCBLh_%O}Y@-A"; 5Ds\BX4+k=-,Xjfau ލÕer1""+hTwdѧވBbB+Z)Ǿ4@RL%/{z7l,%eɚIlp+MTF w4JM(w[n̖\!H lf3۝%,XTdP䛲N 0%bx&B$lJt{=n(2|agE}3###*$l)dn]mЎ-JT8Rev]riP%]7\2Dꄂ1%2͘17ߏۥ2雖=1=eޝ,*1˗MeR0U@0ZvV ϐDld Ɓ8de vl820&=\ +] l~ Ҙf7/dᖢo Pqp+_wgAfj4Ed޻ >xCB-f̆@{VnY0?N7~R̩K(LDW7sKqpq䖕™xdJ͚33k*O#a}vi5MNCIKZy:6 j CE/ְ 5U~6~)S!%1,Xy+a ÙDR/΅?ON]^. KRYw (j,C&V]CHX,A:Z2't%jF7ɝc00'"DFfKO)(Bk0fBB0*>Y]RV'f,lMD5dZyF dD?nSD TFj2}"*NIFTNU1%#27Q} T!`K5'̬˩W}X-Oie ׯ_4Tʙun4qɊe,2\ՙ\F /t7)20ܗf6}z+_"M-ZJ`Ȯ0F Y/9C Jx,RDw̫3lA?F3DMBŠZZh<͖DUǤ,SkKďz !wZ $U,VG{ȓ_AQzjȻ"D GnlpϬݷl=ބ?y?} /JJw>6&"\;/^?$+F a/*fraPwJ%:E`x2kVZOŰ?9U>̫ {FR 8LcZ\:tDe9F̨CINb2+Rz<~ NmߍY+7@lBUX2QBg#]-Z8svhf^1b.X N':cblN *!Ҝ( 1bCbNţG`ϭ;A$!xZ> xNڃ^gV4$(Xm/?TN+0GU&|(!h= E(yB&Dhj';J P"pimlE2=~KׯJH=`y {&C{rJF[N#g^ڎDgk'Z{'b2@тz<:1?>s1o35BRTa.|Vd.vXWV!krK x)ϋRLXuX0 7K#lXNPa75IRtK 0 ;g`D8<@7{pd#B)g,@u ]$EGodcȤZ~4Eun~>ґk`4_#, `ˮS ]h`6ns)#Fg^ 6]C &eml[!{ ת0Y7lݮSNe` 1z)N&VԒCg NmLXcйsg102sx+)sINk: w4w H?Ffp'N<0ۻ2Jtذw[O0./aA"7qm4SAG?^XcpvxC]yUU ^lgOxڏw $btx tub,PVC[./7P0us;= l\oytx[r8i[|_C( `@ t0ͨȆB4كF2)eP$[>=-F~% ٥ň ]_@ƪ;pߗF%9v4 oY~ _³O='?Ym]oĆǿ wF&c0 eKBtW}ɢ){HmH|IK"ቯ$HDDNA=5jL |NJ bȨUk?brU Ԇlp\݌e0* q8cv>{ܹI=SNM4M%D.iةd|кiSbӰOgQc1Qb0P"'ў!ԌdM= $j LXk^C n)@QFD2b`TM\R$g*b((Vv5-l b7^bhf6%n F;eFc}LJp{ҰbǜkDK(;e`K6TR-CƕF\lxiڮ\@<2|0VEp!%d"G$8"8 o2XO5c6eb$Fż%wE3f2/ bDT @)wtc˻.-eA ʯœLR؇:Rr4@SkOS +qo>tϥkXى,n|O} eՙ w -__IA$1 Vc̆ULjlXzƤ%/d/}Ҥ$%̻>̋zK=&W@eH9 ;a$2i4m@Ö r̕3>V22}h@l)&ez J߯:ahhHHy*%较t4|&礰2jC%"~uΛij1T1%ZY)|22[xh.CjѦCkOBlıg4U/)28N{׼*`L⡱8`Hi3ZpI\N^gEDmmmWmYYYSs% SWMfS{+(e63f̈($)I }35b{zER3{T@˩}x)c Q }x?`dL&C8#0؞șV?D4[(f:uQ=10w{?EA%sQ"ZqO5NbyUj<㍃ KDaeOˉar8y`Μ?'[1?ކ%̘ϩL|w)^{&ީ)#k_9 s NȺV1}+?3RRv ̯Mh_`}٘2SW9 FwhiY9EBbO&{YQkGύ531߳MM8s4pYI#pKEصc/ g"c`b8pH7" xG?AwЪ6 K`Ğo<5g&:nǿ6lnwc8d+tɥWќZYeihh395iL]fT za)ìB A)2L|?~RӴ)I/| 1E$2 y)9/J8y u`RͱK\B?q_B@ GN9_*19m= jvZZ2(Hmp5bIT &N֞V~as5ΘirqIlf3]f,fB)?֭[ \yS@1\ɈelKRd2%zq~J+K NnEEE0A^^^lmĘBcMF,-(1jM&=沸6Z`δȇ@DHq .iR> nR Y%#"D4xk=R&CRP8&Rd bDS)R)lw0-IS& .;N*keP._@XNݤ lGwv$3]チWݎ@$z+N+A)>|! I$#a;oG?~ZjO609NUGE ]w0*2IdU cχ4Z؞(+},p$(멅gqun''CPM{8~'j,O`;?mw (>|,282^Kg"YJ: 64C5y  mIH7AyWɶa>'3Wyxr ]ESi۷LJmOX*%}'3S%X 呟 {5"=&S[N8C' 1dSQD? ˍt -gqr^'!X;O ?M#\,I,X N ! Tx|o?Eih]mP a \n+-Uٓe VB yϡ8;1'4O=lHIKQ}&`w9xv=x rMNMpT) Z0  (j2h~VTզ|:I}YQY;#^PtVOdu=@8-HS(} `6ݩ&3L`0@ o5r|'Qț.;;}}})e OJF,=/UF$4v3^M DÔ]}u2;-(--US:/++SA*dHL 7 *1PDch.kjjLLa#H(HJVk4\uS F%()@c ڵ'+l74[j[c,+F($IU 0f3[%zJ~*`;Un(qtV(9X0 1U) Юf4zo>|ga$mWu$\;^|W,CKogDt5nl| 񻗟Wנ:t_N@XN8gK ޣ7 +d :w nFpLs],6گ_CgS:e^v%_{R q[h0QdDӇmQ\.\:S/W (Uc?{Wuh6&X c^b|紎{ZNIOqjI݆!!;k ƈJb.}3b$jh޽ywͯaveqwԩ(--/^DďlC\Žz;E[x2`TwމZ:FƉXeF.҃ubJi!sd&|eܼd9NmY}RS f;*/cCK\r:.ut/o3_z%1Ɵq o ]SQH)BJL':,dĒaG'O#9' J;N֏̴X ܢ-x-T!HZxgwh^s=W^ys%֐vOWEbt-4~WP*X’]:nN@RbW˰Ǡl!f.HDb|du=ܒcFQ$W<1vI7Do^~N/\6Lfнv$CX / Ñ  ŧcٝ+|;A#l.CpljJʈ8&CiѩzedbbMJ}R$/P\+^!s s<5ƹ>"pNPw]аhWjP/ tS 1\hkkæM%$$!PϷsSoS/C Idі"UO3.F-txb8."j$5xԄʆ ;Ɗ} _3l7B^^.]*P}NAteF \UUUue/QYtG|{9qD+GxrSmm_뇞h/0W IMMu.CϔJslgţ>!2HAC 1N 8 O>B> N!zlƒӢU0A"B(KW9t1p X6b2>tlP&,Š"&.bGk_C۱`X$e>>kV-BO+AnB3vmǚF6>ٹ zO ~_@z_:;6g:>b9~nƌÒ,7L_2KF'{qAc)j`;t#kj4g=Ţg 0\5>xT!\>OpB/H{9533@F^Sv2f\8iErR*ruee,%edvŃ;Dա5f e|p|6jL7?`3AJPE!Z"=zy)*u=UC oHU-@k3#qq~Msld@}_@`M‘Lb$8sJJBh1HcE!pq RBHa;c7lP0sltsss7@p1c9cnSXX) KuUw{ry ~*!;'-WM\qvY6ճ,NeϱtwA9[:C 1h^\s\9ݯx,rz39fVcHM>+~,mwaō]? ' _˜8gC/{VRok w*b(^1ː}`M dږ JaOUS&Ph||3YOB>8N?&Ec}A8ۡTـ 5ZVJ6 n'8}Xg {p>gz f,kTWµ0% rh( +6 7^P D5"|m6#~O 8'(s}VGj[H=~s7`/z{]J}w|;6@?_+R V(?|̬r7=DLyrg'#%+ {,KP}|*[ ]} ?; > Kt01Rr&f3*DoLm9y91,*[ Tv}Nj˨ű` ZBe$Gm`м.mn\*N_1\#g.7f-Tt*kZ`t+r bJKh/K~Dt]%GtJnczKZe߰ -~~tQ\i@'l9$+{|mQOsk-'Xop$mBzR>OV'{ʂ D3mЊnϵD| ++Jf@x@9g`%Cyu l=uBjn'ӡ=@# +z*c _?O`F<('}[-s80{)ERݽU%=DdШP{BCedLzr6>Óz%6s~COfI,"0= x5L.cgOIIjnñc}BB@m)**wkHeu{7偊O&j?.q)MjN^9!IbLΣz?r| ڇϑ?(F?E`RǠC0'CnO~$ oœE)ԭ?$(|49;HI6mgޏ9tBo; 3k䆣R;Iޔ- B7%nij 2ga42󪩼%EfN̒RJhߒkI&`vKvvkf?|^?'Aٯi)` k,pO۴bn!x,S"zrk{=KO7B Bxϣ*g ka9jH1q|nf\-Lmssi#'yL{lqA{~e:` C"6j9@`BI ' aY;wmq 3pp~;W/z;v`}_Fdttz]z[ 7R5lǧ{S\HRtVETu4\*cB>肫C SOUZw3 `A3g!_'9 }W`zN>{ 36&dho#0 E`+J+`-lDF]vQ7!E_dF ɊoQI2+ڢ2(2q$CR>2'H2 8a4ڕdzxs&L:Ř4h!.UȊ#(p=}ۭޝ8Xӆ xSm*\HLK6#rcQ^gKlk0ա ;v3)ș2\$ hz䴷<j ʟ^$>3eӄN7'FeA踯>TҎp$5޷# }9S[^e #CǢ\01@Z/5 =ql1ՂW4bbNP2eJ$LFSK+=t٧DG!ND\mbmƚ%F[QaS>)ƪ&!0_Psv$RaD-7s{;D ~1*҇E]{EP뽒$u5 .n8L,z+>$-7HN]3Fz)9"=gfa<4oABZZ2bQN@"c5C諾G$+EO4IȞx$:p݃1X_aΝE@`=f6iH2LIr7YI?E[&yӣ(ɆUN=Ma%HA%i=ʐZLC4 E 6 "ZH29P.)a$dzVgegbʕa[\\DOEz]zs} :)3gMZ}n*;ͥ7*^ x2zx=-Dbad8BO'  箁]JA! @pAs˧B'W7^rrr΁7ZuCe\x7ɕPm:jvB@fuPv!P 儝lLԇA8ˣ! $)aaqЇ$=RؘrL, 0Ecr|>]R`#bvcف=q*nL HOjLɃo3' q8f4{bX{䠺]gLiD*j1ƸL* fv9̳,धfaJBLڟR@Rx(3rhn#uy,㫦1BS9859(m5$NBN8AXfm\fgqT;gÎl܇u@3 J][8kPYCwі݉%  (~A0K0eʓlP`pv$;}([ދg)~g-*=pg! OP%*:ooe{s,愘M8+w1Ǿp $ABS7DE1}]Unl@UY(8wW$Y+ 1!L>cgB mO -U9uZ˻ϲ((H0  r3ͩӫ{ nӷZS]{<.7(ii.6Nد#ڕ\ˌ3ԅzN׌ߩcWjkP9ܒN?M,]:ܮ?'\7&fZ؅ƻ:IIK^>2NK~bLDFUU uF󘙙ᲲuƑȱ%רif7"Gj!+Thf^F;t޿޻/o=YYR009IHn QhA*R@%I~)ѯ; I7_UN~wմiQ3p_+Og,\Ë~}vA!'5x s])#;m:;u{dsϧ}%d?UKoY-aRٺk!<94 & 8KJWz}Y\ܜlU?n^ː8L{p#kB@t @sX5-VwOzG\7QSasdh +8}%ҁG539v8sy]!MZH8y^׼`pܡCND,xX=22Q7$MRL N vZ7l2{%͇c^_Ӯ"IlC-U|Ee&RTEYy)DX 0b`l5xo XD"X\r矚q7!%,}+jq9+KVdGKjJ!$o`>gWyYߔur/CST/NCGHAH>aWVJp8,~I@%00Pt%׆լqA㮲Qh&PMn#\Xϒ (|sK-U%UEC}sL(g\]'rڋҹ}qJ @!Gr=KL ɒ208!^ ,wv{Kspy"= #'n" X4"F1K| /ht(hr\'s}jENE4+W4+!!Ҵ. "0;{^r^)F&@&~Εw'&2*r J"_*"Q̗ݏ@7yH:MaezpŊybfe~.˚bWזcDZasX:1g~_>/"^f`JIZȒu"U 5MIԚABcKTϘ^i9||LI1UJK~K7HZ ! )7cAuN\:ROU!ijje!$ج5C_7Oh,?,ey`mw,2LDhaN/miA|.uqo^LH4'@i1y$'i5 n|RDdC9FtQbit--/5Mڝ4&W2_KA+YTK:3,J{NrPnno:mNdK8Oе/=/ݭ*kyHkXI+ZͮO %eA2hIAy&IG`i:>Di}bc1L&s!ُfn#:yᙖiFм S. uL˴ϼ]' iȰhf$L}Mt6#6Ӱ%YEPng?nPr8BdnJ/+ VD]NIޮr˴ e|qѼ e t/|yl6ߔxdp:LH$H *0|U\ |lXV×@wlJпM"ISU^)߂(@%~NqORm2{ohi@J`WL.n5YBBRRbm*R}+ǯ]1g:薭vfA3DR \B, {cP)a2q̉ZBR4YoUJ nlexQ'RIR;ic v97,>LE.!}.y7>5,sC7ɣ U%,PruBKpY13Ǽ KIKxKCC4H:tU-.BMATbT4"C5G,[ŠC[Y%O %|Ye@V!R*^@Em-3N3hX$*b9UXH\Dz`9u{=nΡ()1 !YNM #*xP^aĘ` zNtԗ9}F:6,|3cI6TC"4(p$v,cNM%m f&(/@~~>E8yDWy э$y) :D00BSDBp(@n,Boڇw܍b c0 琰kd[9-v 5k P41ƗJ9!7~G3>:2P`0vLEر%p,!4~rlݰSc(ol%H34B _Z}P\׊\PyclEpTEqi1"8p/>2~ߠ>k$af8m܈2 N#csdA'˗vy=6bd‡J v_@Ve "!  E)I0 s19pFxpQC$ #.ˆK"AU0q):FMľ=vw$ wݵD30Sx@rNof18 *E\w'Ʊ'Zp;Qd7Eiq..fsR*3::=yd ퟢ%e(̶ ϜfD54o^ (cH':pR$, H3 E[6oKCjhFC=E2f Ûo£mXߏAdV.0$qyVW-X9dLIap# N#nˎ OGȩB|!&> ^ًo킧 vyzp-©=d!Ub|4oz 9NPP0A͓[V>6](ѣGs#4&3AПM^E,e7^w^9r1d?D s3 뵗Q܈AdBmu!NFqe),jgZ;`ž3hYQ.p|dT MK\"^Y={1Չv<| ':Z0?Guss"=}CXVۆ*zG r<١ ~;%%;Nl63F/ j1u4&FƠZLJDȋ D7'L$ܾĢbߩNQڀ].Z}Ρ×LÿW  88lDú 3q~ÁEϼ&.ڈG%W_!{Sw QRӈzv9l hv8FpK$/j-Lj+֬)ȅ# )d!^VY`N(hqY̒a),A(LDSN.p(9:wwF>F]J4V砻wAdEɜX~z; mmmeZUyh =KZQ^2ҼZpD=immݻT wG`!N]I1rf$U.Qk7a;Dh@Yfz)aNj V`dpQ"-Jкj#鳘AGS;4"Z%R(_Mp SzvboH*rԶ41Q_S T$KX#%wlڊ21z W<ŭ(+-A#A0VAK3Qԣw߻{в}'&1Ϲ]f4 a}rR.ʰh2[߾t bYQ~k]]ݒX@hxC". Zh~IDeE ,?L< nܓ"DNa rL >B)1w"vBľIi a.Fi~`*9y X$%*g9U#78:e'F{6ʉ4$ ?.c*J 8FDhAQ׌!Aٜj;xn@Rd,:^01{Bԥ8QU o>pD Mfv.H݂ D-}@',֟,dߋڢR; ^/{_eee7KWY,C__trfbu]cbdqKɑ~3+N$wci/g9j "oY(ͣ [j) 85%,&O %eɋ#"(5RQE WlWAw "}ˆ-ԔQ1iO2j"VLT YvMz}Ey,IDA砋۱9Ly2KHdHV2 Ztn-d.#O"sK 4iz/j dB ȶhJtky] Nb,n2 3 h^VN 0(CFbǀ>}W%%%7`Mi}Vi]Bo/}9AsB\ƵT:y~VY2[>/rj>UB+0z?|:.+ ?ܝH 8Y(Sγr) d V LeZB4-$ t)wd=t@fڍHiYzF]zNv$!2mw!LUᤅZ#~dZe(^i j`oh3,!u 'i I(..NQZ;l tڿ>p71F:2->9[bEjۘ###ȨؔR2-2#%Pַ8p2$-%&/dZeگMOyall :&􊵙ikӒn7W0{S.p,Ic6m|eZHi窼%rYҔS$,Vv(!"!+KFfVhf,9@,.ݤ^~gğL,2 ]jts2yF9ZmYE'q\7xWVut+x?о}R n \(YLmvH[03͆1u_FiCQ+<bv ,3C$[;1t J[$BnE%Ν>N]B7m_vՏܒ*MЉHBHXP,óz@؎ ƦgаTZ|x}Qq6xw/[:!̏ kV;;HRffڧVJH/uL|sLdGr=҄#(=8_B$, @0LK[x'/bc\LsT5?K +f"4Ћx !م,*P_WP܏XAzlo+De27/wݓOϣsm+wW:ŅzZbkI,;l mzgQFr4Z7Mq׃UҎǷT^g#B jY`IXxa"LGD-u\xv8ukhN1l8fݹ 7DQ%!5dA(TעEq+Q?DO}^rL@euL@dڧJ0J|a5`D <\2MU|Y9Ιo;1t(x%@"~ ?!8Yt1"ۯ}&wHߌ#{`NcmV#+ ǶQ]RG{p^?|*w7C'PXz&+P$z9pgLiN"N7*ܲhf#!j+s@ܼ 9=?O^O9kU.k%,w}m 8#ԚwRbv)UĪU`]۱AtgBRmgi}T b"ہPVSӆ}e Um&F23 Savt"ǢRPpTQENqz_0E#g68?\uirK+QTɳeɟlYfgx l@dID'Bai3 "~\̀@.s@Fi)!0mMc B ؒeyyWԻ*f^هidɄǜ>#C!31Y,n1Gm4q.af]\^Q4j/^k.n~\V;F,sF(٧YNQ .~g#6O+֖{>)3n2]u.l&AÅ18 [PUtsE+$k[{a&cLWEe)^S` &E׷9xB#H7N bo=uwnKTY ItBR%8tYU+\cxq ^zE%N]jPe*Xqx|`s,չfm]dUΝַܼhfD>x8&YcU 2¤afVmڄڒ\CϜ{6T]$sԜC-8닦g\L3gE:C]po ͝R[g(4<=CUV4WS,Y;Z[<++'zzGHViajg"լn%kZxOh~B,JOYl$sH5``7u8o]*dɂ.tMhgs+<7NLgϿ[p:ģq6t}3x_a>"va4|ZZ>*yqvw@crj܂|8*3F#G"ݐ_ppLT,|LPjmngdG_-x_@?0=xba znʫ#gn3|mÖ\bQ gj XnCM=A{T75a4\+Pqk -uZu-8Q5b"dkZ OҜR'Αw>%xݓX'{{}Ӱb&$a:|EuML\FQyў(,uYŨ7k(܆mn{W|^9ˁޞ"6_\eDmm#{p,8>5t :>18Jaa,jB3W>a~80vr/ɂ⫚o'/P~ *<Μ2ߝ7b!DPV5@uYz/G@š^T?WchG;WN032˗ᨬ%cB,E^e#p~ J1<ş#(Eg sN>Y#q ;<ßY Ot/aj> ~<&CX~ OL9}xԻ5CS^UŹ0 /X@iu=fhC53s,@O[Zr3?E@t{vƓwƐxm,aRhimf6\S#LC*9),4Xp5ʚ*t؏K% :8y('0J sk0zQ̎ IU74, \%\Q8Eh+bwéęX+% ^ ڶF?8n<مUԅ0g8v<8"tD> ^Ɓ]g3=ԅf#!zU_܇ïO]&|IB # -(,Ǟ]o\;326>G13 8wa:ޛ8?<9Ae*q}dݽNQ4|tUBAD{ǻj& /b7MѲ}.œ8vqpZ!tc?SW0;:Uh.q##8}oݛB=>Fό)ttb`K@ƍy#?~ ތAԯE'G.`zr ="nrH<L{N@wu+:QWv5ɛ0MCGq0IX!QB" 8=ǧ+o?u;?gocefeg;#ip.H7ZMlh*JKV[,NWUTT*L2ӌI4}$}4XzeYV%|wW7-*cߑve098NSQY߂,+X][IT ;{`+*AlE>py3-N^x&摕WcF|G1:GQyJ+j!&mB]Mv?&Ak*ҼXBԫ `n>2Z,zFs?UA (+.X8Pc(IT/?QԴc, nX PeB+aJY"*F0Qb"f </Ϣuey1 $b1rB8Vv /՝=.&b&lI汒ByVTVנ-a3f (--B uVa=Q ]vkouyE($"ѾxO}˃\ʔb6vP&2ON%0xOEg֬_S'O6ޞ^ʍS$GGGSI (%'%/;p8 Ot>nF% bh>oѨBZr8FtރkV!ao~n5;Z..L^ZJe^*M+7fZ2w&оL^ dw:G &Y"-B"Y.pRpp=QBQyMfDA4 "ST$Th+ G؉!^{֠$`R=::gcZቭ+1\4`& ˢȑ>m&(G+Qsd]Dz< J2"D*S{aw-ܨ7`QxaggԎc%s@&a"8JYi} 6#Y[D2&Op)"uk!t4i5D޳3eL@R}vPa6$|j:PZ\{B\BeU{2b27]|+tOaɊ#R(A\J._ш!7ύ:UTUar7CUE09,xcb,a*x#;ˆuDSOBj_m#PδL5 HĂX` ñȩ =SY*4--P|~![X$MxR][O]ZĩsWc4}6|4_b [4GvS y%٘W!=|KwiK-sӮ>T ŋ(oCNJ04cN쳤(mt1k1ZKse,g8v)FNw|&;e zfbhcih1fmZ؂U+w/}q=uy"Y,F/׽e1\:{uE[i>@ ==.k@ˤM7@kS+>oŦBhRώ!PSXg VSzgɼl[mn4h2}4M'̕Wί MkQN,v컌"'O"/;9Vhl,@V }ۯp/vD$2?I\݁ٞ;a$ڭ]l4$^=>~NMNd zuF/^^ `׾S0~tw (0qy*mU;N WC,i׋2gArQ8;g}&*+KXD"|Sj)jg3QV$|̞O$4o؆NY y6<^ùc{klh,Pزq""yI3䇤Gвj *Wm7QP G$F#yw ̆щtBB6f5cvz#0!HDb@ȶ%eYDo"R3Ǭ3"ϖ[8r_xO02Ai̍Hԅ2 ӳ4@f2g OƳoO{4L}܍g)?|/p-@X&>D$B'WndƣAcW+bFC ֢ 8Vm۪N99xJ1l-Bdn [tDJI+Ry-Dϥb q#96F@sb4}iD$밖}0taDO=666MFnRߌfHf cfW4Ξ\5ŅrD1o0h Zd^ sfO1sɣcsC~[s<\^`DSAo6mD=錷e$3aY9fgԸ&jUaŞfo!Tfr}Qjfn( 1P,<28{N-2CQ!Cn23OVW_njj,MI Md~-!F|pqKߥC4rA..`0Ȍ##n .? \=t~@X۰*]Og3y-p٬-΂EXJ̡9dmmxk׭aNifr&:A" ya@S?L#͌]Pq*cp{0;qZ0&B>f1)P5,iB,_Q)J%`J8 R]˒ݬ^:C`0_khV[/h_?pjaSc0CLc4`úzϼх/> qCuemxؾ]!NC<g'.: sA5+QW!Ι#hl/p8 ͢s}'?c} ƱȁO?=o;BSI.BAv_NGmy='ipd # 9"}bz̟=Uw,Q2 XHˏnɂ:dm,yLz!-FE%FDR_DȤx`!Lcx -.x*E?-8_`,Q_ ר#َuM{o7!ZBzs`bdO^d9?C+ˍyoބ8; ncqypA]4!((+?w~K#*e1h߇"9e㽽{!ـW !68T3lrُu5acvg=pVG(ƱӇPv'| +7̫ BN>: 3ixdq3;rrm ZU9]hX N'1 %eHӔGyx=x'g`Y눳 ͕:-t`˫1;9 sN97ԀıC% l_rLD9@) Laӆu8wi?Զ??5,6Ԭ}$={w@4DCqW0nU mbCm/^w߭'IMn:768ȥ9ؗzqi'΂fDRaXG+QQ{+zcX{^36džvZK%'677_=yȑN??SXv;Xv ސnjYW8WZzP"/9@wXXv"p͝ i&9\]=V\xfHL"\rZyz}^q_'Lڹ\rƼPnƆ\J;6"܌#T}o=%sl^X,&*+>#E܋]]ضmmrmm{tre97 ,v-cj7!NMzz\2, fc,҄fl#&/]Mo&YlқJBV/,C,RRgg-k]n6?*4p.??aϙ>%Iz<:=MaO~rJծih73a!b!c_}ŞϴGB`HICvL d0S+}HÓޏS{p9$xug @6堲8f| 'neS޿Y517ԋffbuD6"]E05ie3LǎBh5&3/S܎{?aG" xtarjAt;037I؋걱pal u:w4\NAH>n)4cFflj|NM"j-[V1GL>J.!PC=OoޱM[DV) q 9n] >,#$PW\NDۇ +>ݦS .ퟬBNN.\N+"8XqmS=PGcYhZQVM˷@9aG^n."a3KFc Bi(ZI P ߅&ۥM9I?i܄ncyn j%ccd#Ήȩh9Z6 Hhq[I^Jd|eKjX) d=3.h2VG # ێN\Bc1YۊwCۺMu.9r 1A]NA48^ jP_-hjEe+Ex{˼YFQq6qy҇kV 0'/ +I8s mx$@D}ynGXœOذ#=PB(.*͜qcd>o.H8 dyp,>΁ ^ym6 x/:;ߨ_id’ 65ԍzW݂O:l =u=~ \W3Qdn-߆&MoN<5>w>3qQ.q#cT14} 'p}:-A߿+3W/1211yj/L@*Cӊl=|:1ZHQ32)Tہɶ4"+A Aw=]jÞcrkaeo5v3 ^PFO 2{ t5t06 ^폱Ǩ>yFy CmHݹrY+bDO_kG*t~qn\P(q6FgS'00nM?--cؾg K8}C{ oS .7;0cB~]mHچ\Cv2-VeC0L. Be<|Qѱp-^zq 12c6yzƐ n}eO иh Ƈg$V-Eho4f$lFF\Cݣt#幉]0vВM{ *P[['/DWn"61= h>2dn<8<4; fC4< Zffhk'O❓a`q.o jӃo'' B:Nl$3DXXp)v+:R~E9()Ȇ&@nG&Uf1$^V<_; <HC+O(5w^QEQs<J bJPxnN!lʰ*Sሉ%! CԌ,h|&|Bn"JtzB2Q!ȣ@GL; )PiN%(9\i,9H."K&BQd;/HA\fʵ=N$doZٚXry+tBEbD х2fJTn+G*E[Z˜܏ĊHd"I&ņ$H.cƢ :U8=gL %]RUJbO0׾gAMA[4Q)PTHNOG6O,~cm L#9-)Z*@fv.]'y/d!hGdj^xVd\{R>~vnZ]&saP{f36?=rKk rx=|.# `'| L?QϏ{v9^7n$"!;,dRPG\yj\Q)T' XBK^D>pvZa I{1"u* SɅiKrSLf^Nƛ̔:hjEe6NwxN8Կ=;=N_Q)H=;;MbAkpYMrtHUJ!Iw]aDcMtC`ey+\<[;5^v&7񏏏g=:_>~rZjt1476@. Bm F&'XFCV#BY41>].QjBQDA-G h1Nc3!x : ?g9tM"mjo#,*?DyQCೡ}+5p󏍍!%%垎EZ Ԉk[| ”2Vu~a p51߃P3!FZ z95VB,0z RA&T-:k`!JD5jqDƦk7!H09CM[HVan~h#& |d |aCdxr 4r-{t>ۨj+먆̅P(@>\xX7 vfxAH" 5AgA}pq:.Mfm$_}#joTwp"-v$(E)B= `h©Mo} }x-wb?UC. v(޹ݏٍA$f"(㠑Z;il4gU^|6O*Ė.H¾`sTv+~s8ȅ) K 8iT Uz n;"!Ԅ6LE4nP7 0N[7OBiտx{f ":031jGCkiFnoZP 9$LM{%8s$mvg.!Z4W+W^:)ʀk|1'TH]ڇT gY_"Y  R[: m5H 8c= =HhBYFJTYRaEiBt,KϿzPۼ b1212?$6s=jx,FX"u38Z* vCjRȴIP(Bmu2*)jB;FjE(IH ¤!ԄpE,KOU Տa4:lBo }7R 75Y128 BĦfB";Ey:6 OlS?%)e؝:Dے%b rx7܃Ĝ-H/0LVd_׿ ܸܼ%hvDaǞx^~9Á}{5q5\0b>^BedrW[wpJJo.`nW[ǝ$? /x[BU??êF}?G],Z6j=2Be1ҰP#&Da',*&K$bDelDBƅϳ9 j+o!;D^iNB-"|y XA`y\V~`,C!~&XO #_P .ɏ6jͶ52D C͸zK&tm 8i64vN6fmj2.]kWA0} քq|kN`dE "D^!bG%\8Fv x5C-g\mf2;7Ee5&a_2`d‹B_g\xMc>6.7uGL5~O.lBST#l 6}!p;p,5aÕ5ؠ7"\ko2Zhg{`]#;](y>U л}5 b xZ?&qh+ cAZ+jkP{/l./}ux"R9ypvC5br̊lF1acE 87I"`Fui^O@#A6 !NyW#{1o\4+0?G[ K(ne#%' G5P0,&򗑳P#/ !hz3JFO>tCq] DL0.-½ #CZj R&GG 5nCsET1K-GNN0::Q6ۈ7a L'+j 3UMј3̰: `~ 㼞};E;v?Ceh\2EC(BmW/`CZ^*8gMm 6}+WR_!|RخGQ[Ȓޞ# ::"2 qb%A$xfFGJX\Q$X&(<4"væ Ǧ"YwJ: X|X?C}Q,xE)tN C0Z#j[ _SZ"bydEx,|P x\|O2!ANEZU=ȪLrpSCJ!bBMƩvYR!#j hbgDx$ aEJx\uvwnrl͒ Ơ&GY^P#&}ms=aT̰1HfF.j-,Èy#fhBsSOV#Ԃ3 S#>6)ʒhG(BCQpQiOOKP{p̅4F'Kdd$4B%1&'jh-V!ܮ(W r9󸙷~%BF B-(C_5kݨcq~~~cEnhPɂ7oZsTa 7ZQu;2ԫWpLHdi0a#]>/R mSB,:BuxUBlG G6 E5\Gv~8&7iAeE1&b7!2)Ώaڇ=)hFvNj`G# 9mh?,pѽ6Df=j,&xf +J!sZȴA-c3֭z5 YVqnޒ̏a*Y?[mu[Y9C[m+ uBˌ6وwob)1he(~=)JmL)㑒ƕ305(ot#H,m-~H2`8-@L@P$Tyz$Q#>5 r$^}U\ٌ23"oΣ{҅ B Q X2B-PK א]XjMHנE45wIY:ܸ:N?i$EɉZKx !x00yz*IBs| 3";]_7xg <1BnN"0X"Α7 Y鷞KpmdC?ЌٹE~yi/ "x-sv8}N}}t v:b \BSUٗWRP3`DJB;m'ea:L72r{SFl"Uw"><{#L@Ty2j2|l)͂ "aaRm 2s&6[4r9qh{:b>O[_ SLc+ш|iTp;lЪaI+o`#FRf6tBYn$D KyS'}%c&e"->vUE҉5x%h utѲ>jkP;{,܍S^Vns1bMŃ\!p^䳼A|*-Bݾv(eZ?0cB.53D~1ȍPH9oPjPH0Z#X_v 'yF>H$fA|b;{=ilȵGv49%c~\Ec{2 ʐɞF|tԂGé 3'6EQ 9;pN7n-0%(/)\g;z],3mLo& ?3.qCܟ"EǷCjimmm jk:N4A*-g6|yXއR lY?$;!2V!X FP65"pjXo%Bicb`XIGKBy4ZqN(n]_^v*ɮRaϞA.?4H5MyJͲ4O(5PFEi1,n?DЏHAvP#6v~85.XGC͎!2.&KBM%g7К) ,F Fm|w[Y5al7jnVjP mPO^a] b5P=\ ҟAeO(D@`X *m6x\~=d#-eQjtv'? wnPk-D %G2Ҍ5[ NB.{faRâńrao-oxM|Ͼx4PˉSñ0wn1ZuP½'h<42P[h[Q)Hja֯~!:kQ ѰHb5|N-15^*vaHMv?BهDb#9#;(Pa Wd>\\NNťBͺa$~s92KONOBwSrraKAZcɑ4C%@¼rsluiDp2Q$;nBFvzZTe,: Bm ?z2YPDFkʀ_~|rO~!SDˊ@ڇt9U5\C:HeZbiBBBC4Ad4.6j>j0?;ɩ tw":5|J2+ PU<%ȮDVAl/.Awb5-^`ERQ0@Z K @J yt+n,*! d|dh)BM,@j6']'2mFZI}Amַh!l޼ n{}U]MtC~"N9Mlُ3w|+ʙ".!=T g(P;|2% + <ॉRU Dk)fg݃}PJ<+χ\"ZA>; 9v2byܳ>)BK$~1G8͆ e8G/chX+CBF~o^;+g_9ŰdS\m@( U&cppVSiU"aab ^+ο2~|M;W4_d 60;@ʲi!> t;ɢ>Ο}(>N@3W9Mefo^'AMc=@Mþ47kXxHx>pF=@peH(lǏ`]&r{(,ێ1/ѱ5"BF@pa[ +=}P pmjkPv\a_Ul>Y씹P6Uעj>>{9R)BBjM󘛜\NԍB\jnԄśä Cc'@/@5!,:3zPJ+ÿ_C eG¦x?)ᑽa_$P[BI RFµYP[+ úPhYCT*ĹE[cjzbK^;xa 7\#B嘇hOjKs0*k~h <[X# jNlۚPX&atX'1 BM$]FYaBm/ m3eZ(ϊ8%>d%,f2.Y0j"+yaa:z:XrS6Ey(d5#(W]k0h#-/2جv5q\q!dzEFЊ$(χjQ83Ps<ȈOH̾G=3:&"0ѧ.cvEJrb-5/qМB푇":><PTID!ꃇ"ԶA ɊHSDJ)sAPw Oh, ދPsKs0 .9٘\ E̙ðxP57N%m(d-4\ b9fP33Dڇ!fFb65;Q݇V!Hh1ή|>6^P`jhpѬ BM f}B11toq+jPg7DEGkRH'r`&#> M O @U&X\\ZbB:fmCCF'R!ϵ1PUϐV7QTjM wcfy; P(]L"upLC$& Ϡ4/OPk-BU[JBPKHj^)jYAB9rTnHa+Bm|A1b&4[0eڶ2q/"A;͍+5Mشi"$㋩q8S(6juF N)!L.o±/>O $#xqSHDj‚5)~sRkP#;<ׯ܄Hux8CsHL4g2 R3j΍C"'-66P#0AA#TT%['j7Ͼ 4 v܏o# AZTt1[:С28\"P1㑧'4n\FRNt_yqWG0102!RE7r=:bvuc<+^č6am#{sȊXh2}!ҌG\"&eE%ihEs Enܸpeq8u#Ԩ[#ƂDllښ!P}&x eFggZZ#;PkGK] j[g!5j& B{x Wn6#%,C8wz\/"Ԉ6&`qzBBg3 !F9h\B}}:{ǐ[Q>Ԙ5F;Eh1{w/BY-).>W^gq5W&æ@Hܾv 8(|e8O qz+Rc1Auӧ!Pwlt eUPr;,J-#,' KE u.%ET C5MR҈Ic"PZևqq-ꯝO2 f1/Ɠ"Iр$Z]n"G*8uB- Դ1T7)b5o ~!0AeZzQb!" SbNcJ/EcpSIV5mNP{Q:B-!RN~Z&{bВeĂ~)G@!P?^7xyJ,6f  r#HHB*|?:'!C^H̫3S3v 1[.J T\qe!.jH-xp-]"5`1 kP'[Q^Ωτ`NaGr&2!y,Rs5VMO7 |'I}FvJ2;$Ӎ*m1O~+E݉-#5<)`J復MNrÒQJ4 2@Tk@ OC, :cXc4of ^kT4 #e}N.C"򊠐 E~z Ԫl~G\Eڨ8e[0;qA/BN[B́VeVDnZ} xKb x@TW+"`i=6L?] ?29>ZX/=N,UC:[ IM Jeᓝbh.D<,,ctԀLM?c!̗NO0^<׊CfL c8Y3މ4 Ax z զY#3?'DS+3? v!7^I)̶m;Ha lVK  5VD$bf )SAls .܎Co&cuCHۍx_i"CRj":FS@El'-3юYRkL`G9Z& ~ qz6k88 ϡRrq$ځ? F:-~yD0:\:}2iRxdcP? J-zqޮEr5,-2| +(5brb)-vc-lYz\2#05g`dXT,(@eA^|e4K‘ <<1~5,N0'R E^|L ¥Kv:5U6`{"nF_{=tB % $iHZM'qcJM(a! ߎZxhA#;8-J$&o2iHC҂bWt@w)Y9ŸURKц#2JpDp .BAB:[Ks*TkK) 螭A. -N!!w+ 3"SڍFܻO^y&<4vff܆I6ebi-߁ቷJmA?i07E82k%dgZ@ϣXs07ҝplwMf(A7!ZPD&ȯ D$7to1NQjNDؖܗذ) TXK >Y U`%f Zc"|n[ D$ &)B-f&P[ty,9T|QރmyhhJWVȡL0y8rh?!ZOlMhn*ԋr7ϠcNSUؾ(3c`ðh=$QŌyz%"[ 7YzA n$$EppHcоJz]RsxɏW;7f]XQRJӿWp)ug׊>}L±0xa\QXj"4tD5>n5Q~ |1nhSq(}QjDw"PZ@&~EQ۞"|1W"rt=D j/]/ÿHCBJ ?^jV~+܋Ce4߲;"BN^.4X.)JhnЮChA jÓȥKsWd5Bm3#PZ84Q1utgX.C`z4aJ 4Vi@RVԬfC 76IoJS'J̀с{ QjckR !hk" +}DjT f#f, T .5 ysNY A! PC,u3Y낓(tQJC(5%?W&;{1 Xm1r|2)Kz׀e*#8߇RN[09J-*/.(5k=4MCwo2<Rғ1>i$نY*WvU@=.,4 6f!5j}83K=+d W 0OC(F4Ϣ3p'#M9,K TH1.45T``"Ž،ӨmlBTj.`6q&EIhFn^+r %XU(ZaܔH"YC.QR"|,@[ԏUx1,ȅ{ p-ȍM}Nȡ Ls1:B=nnD 0UU(@oEuqh|`מOs~L8SaTߢ /hƾE ûָ<_}ʊCao/JkԈ'd_-LM"0o3)@ ݂T} qB4#&߷-W<؊qq++{Gɮ|4w;^co?q@~5uЏ pH${g2vd>lJ7rf7h'Fǭx'dD+p~I1'l#2>i14>t ba y GڅtOC%ܜǿ9 vb*o[$MOGG<?@F~6l.ǚ0m O?]|RGvǁnIPnB=ώ #oKFSm Cǂeiq v6إ>vB+_3VS!N9 %-e 1<~&XO @Q,Z(u eʂҬTyaЪru"~1hcyŢ e|D4YNdsMMޟۭ)ٍXLlĥg#؀LC YUlւ%."SjA #qzfQg'R|uo>MqIB?bm/TdAU?ȅ69 ؽ"=бCopa#ǡ @PמyH?a-55OnsΡb *%Sfg줜:@'nC/\.?H٢XnyJ{& )qcFǷ}Kn>#WCNs} 股Xne]Ƈ}:%jSShnld5AгŽnQ rT!vwxl+Fwg Ljd|\P-zh䁾?ʽcOÚ'tcկL3dĬ[Bgq}Res"V&5=>*T0ݽ<zNr3DCy T*m"jK$|v!J`]C5?5/fg(B-B KD aX~#ŶpىUa0O?}5/LhpٻOjn?"DŽeAYBhhӏP+-=xZD% 7?8T<~ d~9MdR;)BMM)~pCX';=7@ߊ-VH 9K}tjD@B#*(NP3v7ps?aζp5m8l c8U;D'SB͵0 ~x"4 C%D,ES*/~ZLV 9qjHBM L+|i+JK6jB`vN~%z%RP;!=.~!\ݎY mS*Èͺa$} #37?\ZBb,!BAf1 g`fcWavjAZ;;F jJ CUAjttނ,<}MŬ ( 6ьUPSiY ď^z &kB)b+l!"Բ18˝D Mkkՠ6PMp>c55ĩDn >cTCN-ⷠ τ9>S4qغ ^B$y[Pv4ļ#>AZ{j3zբyU;ajAXVS=[րxPA 37jAnHW 7mAq|w+ &0,Hƙ}g}<^DYn" ;蝱`/gku^}~k,xF ;%n~>w_*<A ,t[ 8wux|5^ϟ>tq-VT޼ZO:]Tj/V Fu:NKq}fW1'vXn8v.^l7Zfy7r#L0?foh.~,:n՟iVNJT ِ &Dh4h~ (NTc/ӣ[ %PC&H%qP1Ղњp3cbwf#v ޕ@Guͼ-}ߥ.B16lp8McbqZuN9I$MS$6, @$hyK{ߌ"$̻˻]O_\Qq1hGkc=֧xb: ThnDfvz[kQU׿v֣qxo/$mx^+/7*BW7v=;z-^ڭعq9zm բ]8^{emDTRba<#;)a&UBmQ S|/b߾}<&s}&g*ƄͤK^ GAdtxlvT9‹@@,j]b 揨HغMc(:ڃYPWYAS*aM~B-ndƧNր.oԭQ].тO1`6\]P鍟/n`vaXkA]hbi lvl~4 x](tR ;I׎!P؜e GGuXغŗ{]6Y2:b|;ݻw ȂX,;4_zYx HJ^@jgnotR(ԂĬ,xHQ]#oA(KX*FPoy1MVV!o_BGWH.^ЎgjOډ^Edf1  w!FB-5O/b?/ j &٪Q("gSӟje[eN¡A$g0h6)ԼB펉%xyy9yzp`8.r>f vN]6)5^|FUj*52XEy?UU,ZOyԆ&Isjisu9 |SQKC Hdzq튃^ ^Ec]+P3]q 5VNiACEE-IDkW'}8bƚjqE6IfZuMfûˁ`Rg:F~|Pql agc PzyrJv>f)<<< w(؃7G`dP⛏¹tSчc(=R%WEnZ__I\ˋ,Ϗ?,V}S,uVByxZeBEk'BQ,=-8q1PFߏ(:dZ qQ 2,7Ff/- hwKH+kދho~:( 8(aCMK9wBmcЃ0e'@ G/53xa}%-` !}hj#QUjjWQVքנQABDD><DQ ?^8 Y"ΖxdW` a~N*E˵dنUQ8t 6wSp`j)6mqjѐ'P3kj>Sft5Vlm7WoSByE\mB~vΟCO=˧pE$ff"*. bCͳ貉mt47b:U`;jԷoǹ \BgBX:@pW_}s(Y@i!`d C*˯`C^6*jm\(Ԭ8{$V\fjvQP[EYkpBmÖ D4Y,f4!$8h$s*Ͳ~X8'LtA EN $4W#cB́slaJ*zcZUI)̾i)ԆF)܇[P2JKjE4.+tȌu+p fVzS;u~!Kۀ(||Q 6a rBmH@ApBTJңkICGplٱ d%?;(LkB^ !%s ppODeU,]4, cwca [4 Wp%$3 `:dd-uX%KEFI, Bmg2J^HM KijCk+'ӏ {Ú?)RXB?;څB N Č,aF68'ښB.'a)3fbSm1Bqyhkp4[By3*oѱc&@啶!äGV[|R>K<.x]`Q%މ{LB8ʉVo!a-v߅`sòYL]߸V8~JS3szZd67lcKQlsӱcǰuVQѪ||gluܮ]v\}'𴸍0g=1ӏu}z*?~\}hFU Y0Lv/gJYKJHC$BSp;1LUz:9,, \*e.X,:2U;[`OUTeȰg@#ai,G"]쇺 Y diŕ&w2]c/04TA\bP#Įx@I0`05)a JPa() `:rkPMOt_wH0"H ̻^WLwWil֋?3R$1HQ`~P ކR-cŧpXu V(y2?G6,;I͖I!eKĬY)};ck '{RnȒ&eAZg~9}vJ6BrjA|@uie!-B=$CQD@ZF`s[0 lܗBւCuO 땣WR}KDsdm<@K9a' 9`Ұr *l.").BgFE){ZMf7|p dv9~"dv>Oי4ZFNu%*ϔC_X2/,`:h_lw\_XOrÕ-Gwr#p/:Ɯ}+ۜu|49fTT TqpUEwkOC,= </: -g EexG7±[PC3hvP, -`X|P4[ǭ2,0HntK>Ucl层QD]x-̄TGp,Ě/T i݇Gh]Ke~GSȲpZ؈oiL'>TVVcZ$&&x,{{n,w!S>LHgTY+u_'"MLσcEPҩ|fz\"<i;Yp2% 5dXE[OeX<+'}w RgiDzp}H1qHzBn}`!7(nˢvIPPopV&6l2onn朣c]ڊ[f!v 3 rCW) nH+EEh_o\+|@񋣙'eBG0}wU±J>^%(n(_6K~oBDE6ĂWj wQXQn99dxll Q!. uOroJs FmSp I,~f4y5H4ש37؇iS 0YQ's{Ycͯ/o2D}cx>gR-X# ҩ4X\WQg/5Ќgr" J ->O )? BU.ah&% S -0t`ZnZtM'W@gE3=D7i.@+ mtA  ؄^*s@7,'3hDߵLGU0RqMM|/.*š(? aM+T%DT]8SNƚUR;$~JT~f0xy`ڜ\{i&s(S3sEw']9>R~(k!}܉HY9*fR p -'o#7!u`$*UPyr(q5b9 9-h#E_dpߢEJ!2ƹ V*2e ǡ Q\Lxk߻HYe U6~G?ؓ#BֆN .ڲc*M3xՆX&" @<|>yȉ, 6cx֍T&Oރ5(!PR2p`I5`:][Hi<c ? qIN~ `3ܿb,GmJع;.Q_uIJ}01^/H#H"_um'z@[=eY{ ZNxNw"#-qBDA^t22ӌ40&+30<}ŔC ir`7}vd6Aܷ4A^M=c@j6g+sHdjzBf.#\n飗aAi0e0׹` @ 0%&#}E7r;Q.'$wes`*G}; C0MnM_u?kZ{/%# BO]^llr0&,.Ҝ\ٴVf23 DCu'♴<8a~ Ӏn_8@iƎ{ WzMq%.taMqP4f!6DBIv!zk&ohx{r2m&K(i#C\(yPBgIO=P$l%KO]װE&lɍcX[㔞f}aˀ41kB&Ԍ1=9~S`"L}΋ѥQ"̬ə>lWyvcg 﫢'Zͬ_`Aбܚ-޳𸨄)ˎ,܇t-.P1GN, TJshUĂ0 Lf[Wfm%:\ (0p~$SzW"ς:bunY=OPqϪ'WkF޸EV!:.4B0zd ]tL1  FA0Hӥa颋.w΋FFh;O[qiޖg_͹u{P1PySo罨$C˛Eۅ[$𝷗f>#zT[  o$#h sq yu>Z{ @zwm[v Yׄxk?l߱k(:|ۑ`ҵ`a{هdqpcL+҂vra@b$yGduw-2%Ml}wz/q[IENDB`tipp10-2.1.0/release/help/de/img/h_results_fingers.png000066400000000000000000000642041274324046000226060ustar00rootroot00000000000000PNG  IHDR LtEXtSoftwareAdobe ImageReadyqe<h&IDATxx\u&9H9grQFѲ,y$gkKֲW^ #?YdIȲF r8$AD7 L H=FuN?NJjU_Ї>t0 $?mOX~dJw{͘h^eY9Bx;o4MLUÜPY6pP C~醆/gdԛnY7cJ_AQ;!yoi?|^:bC5YgSӹr&xɯ-GV0Lzi!BÁV%_~&55, ö \U@t\`01v[j'ܗ(:q!axtuDIKn̤e-gScDMG$eʲdJ;)Ez 2CS)UDK7L0~:Gg'eUՋY? ?LOlZl$Þ$rN/ \(Nw؄ >FG M 뚥i޴LE4J>,+L'a }# s2AϚ^f,k2_dA40 K&Y *$bcD؟L[m&M-ڟl08?b^iҼ^+(Ϣ$ZJO"UUzp cizZe$EÙΥi1MOUb kPP9[*S<#3#٩~+jf?5B)V?ɩii 4YM̊u ZQ̈́ }ADLWUU+UzѰ o!p008uAP"D, :@Z&6΁ C-PfSCb$s5"4 C"v1357˗Ի{raInI1!IbռhDo v7'?#md<"B̡aqwJqjٿӺ~lPёUSu'|1(%Y3Xy`VX$ ߎ!$^cȁF B74#-b,fsB52a"` 4ZqrwC v0ѱ'kx%a+ǧz)f6* ,(YU]c0altPH&ՌP(|rP&E#MaE"]2= ,+J9&PVΠG,cB|pWA%Ԉ D ^#2O4 :4L,pa;XnuLY{a~Sbvv@ P|%y8kusw%&?x}3&_4,{RV3͞IdaLs= ӀG];ߓ&z"ؾxgr֚Tt;lIr!x4a$q?PEu6ItEgc#ɼN,f$U x!ҘF1qa9ľG^뼒rv\ CIA6D} Nqf%NK"=)^ 1PTcb|ـȢezĒq = ?GVV֜rm '"&dAA_ Zg8le[/ag#4ԃb0WH;p⾽1degO4,[|N4 ծןGʚZ,^^.xsn h5tnTc7L94 F l3qjۂc}%9,ȇVz?YԐtT';
@ AP0bևM0NV1vOÏmEñ﫫kF4({"<؃Ԓ*c] YX WV3r3{@5ԅL/!E_%2{A{7bdzϠpCw<mf5Rܷ?H3jJܵq)zڻP`>ZNH-ļT4$-MH+G.YL8<~c v`c&z@QQXc> c,)oσ_p}!6Іl;݌,>@Njϼ|/ŒR]O2d!";E@ݑ8{`a)l3 JC%gW`IMqv:N$+ o|xϢ0GpFF%ļB5y~x-#Q3| T1moGAYۆQQYt "'SEs[;Qx5&PV_Rj=ǐQR-cQ lm;6<(ԯzj=>T͝Cl?G!3K+ٙI118!!߲p }hwSi#w!]@ZJ ^CdmyBzYO,HvxV$S*Cg.tMXƼ,1QoPXRw!$e Ƞ U\Q#oũ.XS xSͫo^T ڃڥL5:^FB@Y1cgG]܊JD%y<*F{🿪GUE9zdVѤ?ϴcrFZ: tYI8ZGEȒh8P{kOlš{/Buq.[3xʕ6%A8:Nq tw3!l\I {S0pv@bz6 sUZpN A,,AhE~D h%NoamJ!t24>iITKqD~SHS 3|5 x12?Yp?3gNsd 4~Bj!4܇Y~2dBxgLǺ%_m/.-A_Ͽ } w,C$a@egᒩLl'*K4̟F&zռ0h2/\P}gQ|=R~t@c,Ai%"ɀ_=ة"5+tAl %]1iE͒UːPTcdaN ¹`84WE Lo?q Mgۑ]``BLƪ Ȋ7bԈ!Ĩ%\l*Jb9@mG'SQyKc ҃夐+֬$ځ qML,΃_4ڃgPYQt!4Kr9(%[db5@m#5!+/CCވq q&v%Y2G Vc"M J([ hoh ,T.^I rarS|ba7sjoۼ< ;ph (- 9٩ t0 FP]S ) E QecXT"ۻ1:2{%~Al7ӏ"t0F< Kz"x!RQ4wNp>Js|mPܬ9A|{lnP rLu``bFpYWGB=oAQ },7PYYɃTsJJYĽ}29 q_4CN/DE`edY%=%WXV}GkK+y(d[Q w$t vv#(.)& !UoAJn!ɗnkBTNGei!WFʋ2nZxJc ˊҏ4B(%܁Bzd -(&ZʃhA#"ALggxI`#%yh~(O%A<'XM<%h] 8UB@pUՐɿ,rAT4 bu@fA!(&*j>t %GA`CҎԜNCY&tg믔ī|[^ͯ`_p`2H~VrJ&[br)"a;3M),Bqa ~Q| )8؂WbuMk(+A88^#WaC@O2jd}Q|:&b j]v  &0U2Y·w{pwK\\\@nܓWd֞'`%U'hѩlVRsXFtZZ$GX dR8{06 =1Gy'e" G,ՎdDfv=;9]e?_hm% ͉;Ar7o>8+&g>빱|fu* @5 :;XR;Wtg`ch bcoW/xR3i/qr1z*vQfp~s{DuM(  ##ګ ʃv^9cn%@Ńw05ߛO0dVw29n00}`ˡc0 ȉ+qa'ʜ ⻺fgg_?ZEk|)Et’Dce6TTTՔˑL1rպМ0^^^~.$9Ւ,xAH`֍! 'W37q֑v( /}_{?OWfиrpx 5Qpotw*-*IQ8; qWn&S*8$r]qŕ[ ګNBBܮqŕ[cH BR=R$- |F+LO=O4W\EA(n3z\qŕApJ8|a\qŕ[/^e`..-s>sѕ:.]bQXagXV/a,C;!O)cB06-|G$v]2K;G˻!`0hjBmE] T F/XTPPɷl*T'%ɶN"z@&̶TkHNA^~oBȪ.4FQS[ mۼmlonB(7r8ܪO {K 2,YMLMwmэgUAtQH 77RdŋO^AQeR}tC;'{_6&G(\R1tpz. h#7?\7pmDZR|~L C#ȕyEw"b(Zu;Sj& yXeHLa3Q]0qجҒtEbӍXq+z}*rhR(0ҫVͽǰ`V  ]qPu5iGE۾3D{ua m=9cωМb@0:NXP$tDw!Ӏe8^ ;{Ju7zVc8c{[15b +7Ӝ>|/ DKu0& .YJEUM9`aD͸5q8_ [ژY7Q4ރ첅;43+aQš_n9}vjFX`ZbT;|M3o@x^u' ODe fH]Ї`(Cf pw_&h!NN~# UxE5nzvz,/W6YDj~15acQNAd =u2f[v^ڜ)!PW*LH-% 7`  l%AT& Ə,Ę5*R8qĮ: <x`-Qff1Vr}Y) C>&=0jij_i & /Ag qmm.jvM;_l C[99bFvy1+tQ@Ȼ~_f@cɭ3< m~l2 P>qde g Vf OB8Hco k"Z|Yi?:F{Ɛr"=H_H* l@W=b 9S0"#Ep+͐P_}''`Vm"0 yY7Wz=gu.(0 w궧cVXi@,؂T ǿ+%@!zYa6!5e[y“с.(FNCj&^v.pQ@Zn]_CGI)Bɖ1^OЃw %MKR&bʫϙY  $6E^frxSq9>)~~f>~ x)b6.- $S1|}!)? <ۿQ.I>%H >"Vq)%_Ύ#^[jHIQ}~2'1 u-柀U=9ŏ|ҙwh!~LX,q$;aAzSj/3P ̻Z[ ivIlB4 v̓%^qN.bﻂ5iG(2枟("l%*Z:: G:#oaN-VנIJab79qԽ QZ_`,E-]L],aYvD+oZfrG-!cy M:'5B} m:_,[ h*sZA ijy hU֗= 38FJ: Nx_W>~~YN+]qAAFeD>kH.}L YCџ[_C8j@Aɺ(m|ef ý- bцŐ%Ahx1z(JWG" {biX䶱I}Dz ɢ Ժ21ؼ-S<aTapSo@W_A? (̭K)&$WgF{eD>C9hVm$pXK~{|^ϗDWio{jniyhtz=QTGzv6B =1,Y\0Kn& -܈@"((Y]{_8D:jJ"62mBgK/ X.=51Ysn;,s^]'>'F:_>YpY_.bOG Kvl *^#C.NʹN+8klsow}DT^[r1'~l²܂nBVxĴSI A3)"(E&3(ORNALSQZV0FF781,EY䛑4 *#P`zƟ&}BA˵t.< t1ItOl=t.ӢY#_s y9Je @Pl@`2@ c{Ql<3}jǒ(`ˍ0 8|9(,B>r~߄nZdV#Z!0I(@Z0*V!#Kjju(H-FF<Se'5aŧ}ƏŔتׅX*u}!葩7Ek$e6 wwT&0E_$WA>dRslB,su=.TYWnA>ԗa^M^9~rIg/reUܼ|fF!UasezYC-З=te.Z9VZ! #*t9eI{ LVr blb.UL7Jd2I'^%v cW擳"8 /`KUW\@#‚Rd٤72+ Siy0!4wdl[8pJˋWZwyRk2Y+Z{ae2-[϶(07g#~?t j= p1S;O8:W dw)YYR;vH)J;Ҝ3M$݆FG|~V(6}&ZpS( f'^_FC߀Y{]\W&]R $۠o4?gkzNA ^hی~ap΍yeG8$S_Kܪ!oWVfcpBx b_ W.ӝfv}'גdLyGD?]pNgj;5T/]VG/۴j뱇7`\+l[g?LM st@;T%S:"v , 4e\98?emI .-':'(ʞqIG*@`eÈCUX1 } 0z{LLyӔwŕsIv^^Ϭ+P_;"j#]s/;Hu'V>@`|U٩7,x Mh^6Я>-&{mӷoCJ\qa/k̻^ R&,o*wpWϓY2P#Ɲeil05+`u ;f_EWT~1D#Q^/5bM; \x,APAG&,= ?2 AMO7[ci1w\@peAJ@ ӷžF~ h16H\iZL2?$u*X%wӇ,",\{?~;d0v -YD vu`)YYOB_!3wW"߅pv^x>H {{`,}v _#fPIXeUO={\@p0yoCyafB`,|}m3 u>Ɗȥ^0!Bh f@`M9>lq*Mty`U#7a.]K|2+hV)}v%)c5P_*A7/ړ<H͈VC}O  Vf90'Is=zOC!W#_Y 1'V8 ?{)S~h#sV!{_@f9 \_&;qgal&/1}ç`,,zn='n/pшYpkCIeX9U6_|iĮE]ݥSo%E}'eK cmӵY\AK6Έ({~AN !/ RaH'^=l\q&Bds~Atv'8 $~y95֫UiL<2J,Xde,'qu_i"}hpKh]MD ^ųsՓ~3=>7/M7+P0MN홒JݧlwBxJrM59ð2 Bj1  3+kXRXU_c3f֯|=t*]>*Q}3s3ٯq WcwWn"_sWnMlpX QYAJJ [VJZZD ~oqW]eHhʻ^,]b'"] *?VmFs{>kB4`G 3*, 9Œ SJhpr;H*dIdI=69S. Cf}Jx~&*RRSyωtAwN^1ݿz;U) .ƽ!@qwP_׀Su'1c. <|\GFӑ]~KO(NhQy;}]#yH8Mg+'vJH4:oi8(9[_8yϢzK}utSx<=8Ge@|8`7BJwuh`}H3Њ|cxt^;֊exH+g;zsH/Ex?g格|24rk`G{~ K;ԈdGu~tXhރ:qp[x?o<~k3 h`kx}ߟ9eh> Rqx'gP*SYsƒG`uX 4v$_yQbS㻑VHZ5/VUW!t`/ڇHQ8yvO>A:FS0/Uı!|>Hqݺ kaZl{i}7Q{Xa30Ր?'pjs{شߍOf ?6o÷۰~:u[ahS[!GqAxR3 Of)J WbhCS{7V\EXz|u|#(F`e( ~$}ɴpdzt؏h<7$°T?a #}18~btPȬ@ՏS;AzŕK 2$ <UX΄ aW0;PYVxe]lz sPg7Xҟұiupߺ GnV"tg p H^{?21$o3/,㵸p` +@eyKO!CJ uLNXI羽{^z2SHJKGlgԦ $?>4367"6+b8[ЖT&PRɉ H& .6=d**Q!8mX5!|Hv' Ka_]~p;D< HơRg;; EHMiNO2I2 }ԟz0FIwhlb3r@K:<($a CqQ>Ғc1JhT+ /-[p bi]o}^T? 2}{݇*ңGLKE ` 3?+D@Uy1\!sϴs!?~|`T\0(Ɯ`|?-MS*LT4nSNxf$&a%O9 ء: mB2BeYe]%b܆4BimM[:]Budb(]2ǘʢpGJE9Ů2>DI.ƯyMBlW5%0~_V-=aFuK`}gT;r6r O4SR(6 "0Hc}+T/M3xyTX65k,2E!4zzh<г324ğae}5[m&41l@'&7(Aj98ͱƗAйe70W>AqnK"ÛOb\r~!HF11(i7ThvGspx!%/Coxj`a~C+~Sa$Bj)/AH^-LΎ"}P5_b! TWRHG߄V(*_xn Y QvZL@{ FzZȵNTj>Exv=+aEB80=jKZ`IBXxoA;z[!m·.m)FR!CѵW?wz0ǩݿYiY[HQ]W e߁50aH ^ =/0l9}J6f˲'I'?C$ˠgmWt = -)Պ'!\=ID =u| jo#!lv@g`;,r+q$|k%M#E6A4_‰EuwI]I !p`vV4vʴV:ud68?ZMvFui@%cuf +ʊvx<J #>27L&N LEnzLSݣ@j{,'JV̥*cccϭnsCbɓo3?t!0 ͊n^jѐBn>e_g}Ν]~apfCP3!>F^%(k#f1 | rC`Q-w-VG7Ac 9̈yr[Wh⾂k&; oqj#)rAH:u-Ñp8Ge4 i5PEY(-!0` k"&y+E<9sSĀ񒟟Ϗ2y!9ܘZ{TbRC^i3+ _#8-IMn" \X> \ҡl~;ǩP̄N bDp@@e2lz%}D bU1J^VJ{ aD8"  q̠ EK 8+ߘrȄ|0 N/_ƺunڭs d`iH-I`?5--*:R21N=.f&*1 [.۞?#:ȵ eßSg  w^l(7;=o@BE7QQi"^ơ\bikO2o*4 &&U,3%iK,ϩ2l۲%HYB`&1Ct#+L(d`L;)+oEdD`"k)63 KN3Lam1 O,l&gBHg`1u݈<^abwC|&g-2C߃=Y$4w ^ixi+3vʴBsb fLt!,sGeFH[i2]漰_G74q`BY~8!*sI V#*:#ӳh@q^75G/,#cDb$A{xG^zr7B>l~A` #R>F жX=fX4٭ /p8}^5PVR94'CHt^}Vey6 AQH}-X ݃';0S޿_ӅWh+sf5 ą 1 Ɍ踙B;3e~F}geZ>16&B+j1h<|ńQ$DtLs6V/ 8O*²+wj$Bp7DM> Ph"L ػ{V 䠿g#^on_T<8m$*OHR_Z.@M/e=wcÅQ _V?"TlK z d2p$N g <0I+}d2iU\/=s̆4T|h_d #.oڪ|2_b/ dVya!̬;?aWx%aK"ՕI ضcG-@,'4Hb@3 >

k>!U; ̏0]H}=߆80-c35/Aj yߛd2Hd?w0K |tOWЎϟi9̎#T\۰ռEBL [;dU0Hge-a˾H4 -iLVk5P`QtEuWj(ė0 K3vFcj݈9p mjρkjĹ7 ݓ=܅N3wM~)Bi+͝,xѓJ'SU}/gAOڡ=H"M)$l[rck3kpD=xaˀuuu50r] O~\\j\Z/s̴>:>ŵ593-B‡Es}Ucv/ ;U7d3mf /0'ho m֮Zx\RĄse[Lۜ: &AiJX DSk%Dm =R0# _A꘬O0AL';&BX&LKL&Nsk>/Npw~eo|ݘ,ZdἭLj6ZEY3L0AR 䰓]aEd]m@$Q`^Y5!eED H2`Hؖ.GKn=9̽REhaIڼiվMց`\"0pĸ]Q]NyŚ؜36kΨ ~} P ). q b/coL;i(ގu> rw|gBzNßۿq-s K %0E0La,./<:Sޡnp _'Mvll6lɖ.Hw z{{6E2="0xss~s *e% mXD"!44q"Or/䪍|,3?0#IQRƜN#ѼoH~hnW<+(_ϐ3~:4cZZs)t@7gθy[ȥJy#GkFJKKxJ%^o'_1(!}8S*Ϥ7!m{\(׆m!XˁYUnރs LP(1iC];Cr~rr;y''SUtM7Būb7!5jZpU^aOjHW5v@F#CCf&OEq^Ë&cK30~_:c^~G)[?~'>kz<وHΒ{*v2#i5y@  $btb"dQ6D^<c^- ?SX"dH *IŤf" BI0C#20_H'}/ x# q0qwJw{i <)=rk) pHHOqDݒ&&KϋpR?Wb2MbLxff:83JJOFZmDׇ䏅lG;VW_EcZcƤ hPiH# hڴNGLG~?ovMibD4c *,y'~Km25a m%ڪx8 Fbb7@XPZ x4S^HT:Ξa;gfU9Eq [[RZQcqΘK iA!S+ Oey 8_ W$T礿HrQ[fv 7)ij*9e bFy3Z7)8\S 9ze]JI@x%tSP9H>)AJIGb2bb‹&}s2)Q]?&RȘfH:"1S+rm]šUNpD ݂@K0F D/Ɍ=O/ _o0 GQ /ұ*1@@[ B=.P,PzҌ&םƍ_w#N3U5M8*7^ޑe/*>unvC1>΋ 7;UG􎋂Zϯ-M 5`EsO<<"JYQ6T̙s**ijLHZߊV1FOf 9q8WR͗||5órB0>TpP6sS<%h q;#>YUĿDYR0ptEQBTp!ʴ7 ?8>!E,K  fI_Y[bD{VqNw-imD3PEAu0&4rF3<}^LM1$Zy]z' /"5ws^3ӼKdLabEg6mcje꓈EතC8bBg,c8*sJm7O9'ԹEqQ1_VQ s"i@ӘW?>ҫ=}CӺ?fyܥ|ɻ3UwH׊m4Z &bIkVP,Q" I.}@LTA%Bwihn[H&\&|\zZ' .s\1psݤDE ZD iO%ȮH4*dfgGFMX8J6J(xDB.LD({<.(&$;P~E(SV*pðɓ@yQ8I= c- gc(;;~ ]v̔qPB<Tju|@0Gױhdq.#KpD8Gt4Q&Uk4h$$Cҧ@,@%:0!_W `>ҁ8%R4.|]v*/ ~hfB#J0ĕsG)GʳLP\.y|) PqWWпU4XDC9~5cSNNRC" /&Aʴ}%y$FtC8KDM&Vu'՞uIP C~D1y. H&ZYfVzZ H @ԃ_qDt1Dw7 V /d?cC4iB{SsA,J0Ǽ7Vx=?I0g."8 - *Ps&, RƂ3!p^dZ7(!j5\'+_THً0#%h*5vXDA9A"FQ0rrvKYKO=6kJ@*Xl+jH xNx)aoK>]9KvB\r1wZ-2%3nYP)\Jr89O#%e1=LbN+P8qf]ɸGnܕaa(w 뾥'ֲZv&0 X<p(wrDqsjբ!RuV9fWsX(_ >Aˎ2QMgQcNɂrU*d b~ s:dsԃ+?GxhLPfTVTbhZ} y}?a,Bi4\NgݞO1 ͣ^>EV(⼠ܖ'[IiIG\ְr m,EŻ.|4Z.kO+ȉ}&!7IG| t:gY ? $J0HDUB>fؠq{nI LOt^Y: dff1MYp+x/h>̱Q PXf}}= kOg5Hɀj@v#A@C;ӴPI ǥ)]7 ~27ï{ g!\9p\,P$HFt GSql~TP% Ay:Hrrr$H8(stqifA9Iʒ|!FHaLJQ?)\{ (*ˋi}w< BCEX6椓O$%A9397rVt@$c zp4;xz%6E[K7yE0y&Ib%ǓQ"rsڕd]85Lizllp, 4dJC%ӵƖ BbC}sN i!hlWkj%Yd c] bͺB*&$t1>>v j^W!b2P`)s0^y8+6crڍ,&G my8D<}pc\1{F̛q4*{#a~:bZF̃waoW+LL U8y8W;ќ*hxcӶm:gBf%1 ޔ0]8=x'uLNMq?qltuaU ]:lDdТC[t p7هBr 1I楶`Ue PH-Kr/> kKg+ <&<ͶbzƃU5A?O:?̤|8rr02BIi!28dش$a e+ad`:Gp%X JqזMNSUGk<8S#xGPh00cZtp飯[ J~R|r Gz Y>@bݴ 17~`6Ѱn \Х <!HO")QW[8d7nE5Dj۱m&38z1~͸\_=6 [PkŞ;0fcZ{,S)1_?}knc@Uy^Z^8])REs> M&/ J;g>uںM#s2sTń6®瘹'YO!>_oZƒM!Eh#DDO"c_ %Dq(Exlc#9*X,]=MD`fke1 eCij^U4-L<:p8 78θ?IL m<m fggH&^tv# 6U]}s  ҎaƟ@)aNꤢnFQ dbp`DKЩ$sCOT̜|֚@h#8F*bv>-ȶϺ(ȲbxtY0hUI_Qb)N-Eohu;G1 jQ Ze='k1kbWr@@̓OJä=-O@K VTER[+0*B62&ߊ@BF2؉]3^ͤ/JT5"j DORMIޤkߊ)ݬo3EfCL-??b1yV\ZALST^"dTN$ρ+(ZjIsʸGs' C`@OhialmN0'sʕ2=}Dh624^A:yK'gԬ9sLKZM !WB1Y F1)|l  W;(sEpai F=ŷ7n.tQz̵0k- ]c{F_H6]:VN(s.bҮ?.Kz6~OesjQaynI &-- m6'yNj^׌CǎT}gu>|v;1j|rr[n(P3<5U^5J0(p-[(y^XPRJ] x89w"uL}zL~7 `RmfS+1XV'cьyQ"QF4/F&''Nq)P[a+v" V¿Nh&h=4Ga|;=堧a 4ܤ8nr6FF;5`4B%F02: N"d ̝akkh<3}"rLb~=}NDQm|8INoI# t5a艗ԇ%s%HJŹܖ'ј(.0桺ga?<+NkO<ۏDvwfMgѤ!L ~k5EGk jWqq y0j&Wa#rlqd8t8@qo} x$!PƧ |k__"R-y~#rkĦh:~;e‰f`k{?hZ3#5/.9I3,bCr&B<[^1xZڑ_Z 4Յ + :=4ڎr,*xP!I/%Z/Mྦྷz ?0u㆔tZi2.,OnL Õ[7o>|8Dbf`|x%+(~i7;a)`ݺ 7 ;c5a̞Yށ1LBZԀ,j|@G(S: n㡊vcO<>1a((wbӊIP.\F nPw~s1ۨnaZ('B(T@1Jo2)u[UJ}'jfsX/L6l G(%?fXQo%/m{)ge߸YJcy;@.7^[bW hK$I #rUZn8";!;,)CdD2JVޕqE+ur Z_ƃDD>Al6ϋAu6p|(>ĸOˁL7NS H2@Z~!R咫$Pv'e׆&ݐy#*𲕠qc_&fB.OV*S܎v6L!R.4*Ԓ.)v">>67"cȸ!!YcCGmےCxGvlt.] z衏<r*A2P6z-y^0P ę3gQROi4СCغu YLǎcv͛/ʚѵ9>n݊>7.xΟ?5d + (R6"E)#dᣴ2O,gډ{nVy0FTaxbq*lჴʰFB%5gyWKųr7"`QWKd/rZ%q=8hߴO6*fR`UX M͋VeJ* /s̒6hPCW`T%)~T1X5kk eP=.v(͑WIװ ̀t O;fc*6f'.z=Tʵ2etJ.4iH_e׫qjy` VJ˞I,tywE8$h:CbMa@`}-j=bi?vFJQGylg4P!z=5=:N;xl-$(T~OZԔnfF dB't4j^ε ?T,z4УQj$0 9DV!@宂_"A'zq^4adYE8}pηwEyvイu6WVn`k?<_=GG`kh@۱87ĺrz9Uh7m&٢@wb%a >ԇηQbVk5Zdv".W(&gx⩯yv4Xt AP&LFI+W"N@6~ RUH85w!?af:_Cq.Tpux{?~1hg;8F]y&.\hFњֆyef'G棺8ف6jބ1 v6ͳmX cG%K@x?Aiv@Z\0cGUSӯy>){fva  ^t"HomǠ'Q TXkHE s9m듀{-9XlRvq Ũ./:g؉u$k/᮪RF ~@YW9%?ĕZ!,X ̩Hy1}RNCȋxbC{\_ݟa:E'΃H/CvonDzv1FczZdi|wUH36V3W_+7"EX;tY8{mh-+PSLS&L q { kg Ȳi_7Jj0@`|V˪.Vf6!fΟ8 EM w a*Ϡ O=[2VO (+k_mm(*ocڲUpw 3Nc5PL_މ;K8w0ф_y S Bib/#b*c0D+Jl- mQv3[Js?:ދ1fU  Gop 9y&v86C)cm)UEmbPvx-4qt`f֋b26 xCd][Bn/4G^riëj*pܷfDJ#;,"!p #f/(HG1KD3xm *!搛c! cbl"ԬU5+1>ԍA"m*ka.SfC% k4H{aFW]Xv

EuE ˠbtR6161ClG/Ʀ(Kױj>%(WIe9 F#x?ņw#-6=_uU5m?Ŗ bjg##nYf^1w`׮IRBQVd^s֜2ז`]*~s. `HWJm* j+[\XҬ( ΄zg(ʱAVH/xM #lį 8-^-X wԖajĴ| },_ +2qq~FԠ hD|F'>Հ8MMo\|`DX ik71kWl^W2!qi9y{ڈԔs 2fbOR/QNjTC`Ă%TRnԖ"|abm6͌'h";q.z])c|l߅#7Lpd0X"[§>z֨Sr|5Vѳ_"rB6o,]`:.7PJGqP3'jP.br#@M𰚍ش~ ˦4bdp0ӃO0b\2V&]7X?B 3sU{ ni 4DWBBƻ.bn| O oz %邆AKh`[JLa;G0|׸fj9|;w ܾ041¨YkT;r JI#H;eW_Ԫ2= &hx5_P Z &=z8_^$FzG~*]҈#  Qi.WU58F0Ռrx2pU H͜ce!20"G] hRUYru1i& 䛘mE5-&Ffi^>@]]9: hR?d{?97?*{ Iy-4h5F VgNFOWoWiz(b[۬:ts= "05u xnnMQz';9G]Z7n}xپ8(2|Kf lHBFUXeͰ%Ey,! 岢RqKe4[6M,t6~zfOT--إx}Һitc(&ڥHE7- '9ofW:uZnv NM0f̃ pjJ-To9rf}*SʴC?800 rZq;]2]j-զQaV̯x#pv!J2a!4"+WSB ^]G7]oFbƮ"=L^)54AM2 B8:zR浔wAc7Q-_KVoEr=K3ϢkT&qLUlc/*+1x$:dk" 4ڍw)ƈOuPőp!>;O0vL{eQe8sӔt6]$c E8~ye-D_ 'X~g[mqΌi+J*** 1Ҭ:# g3) 7? T/I'ji32;Ҋbzb'8S6Y fdfbf C6r,DY 0;֏Y2QMTT6EqI<4".: ˊ-PEdg 4f^1TAbrf.ev̌CkD$!W;=bLt!(hm-m45p{|΃jCՈ?Heaŕ+iAۥԯYC,Tz"--󐼧%yhn[A 3 A#D ~Z G ge{ czKchذ.56[y[.Ds#Q']Aԓ/CCʴ111w +~X!,K6DIn5OzQQKmP[s`BqԶMvE]l&uM̮*$&6`!15AL,i72Aqq>Hųh,ٰu,c1!P$Ph4ME,jHEoSS;TF鼇 λJ.r3-7cU7 SSSXn=K-%:mdI7EE>611ߎ-`( cGpJK9vtGcrHWX挜:Y*[ I|ar[nY!o-2,n)947nQ 6}. L[JGݨ3Spwݎ&ݣ98B_K-h4ĤNmAH:eeTmv){+]Ef4!!.]IIh>ҏ_ڃܚUhy;]ހ,be .0?*a4l=φ1:: SV.t꫃BF~:Q]S+BAš ڸ/ j+iqdUmn~{%0hv%th@\(R(݅~G|l!`2\[sȰ(,(J K4~q8Rq۳ěFͣ;_TAC?N! +[m* v. zhn^ QU4ʳ*UwPMk`3SZ>Ѹ@hl~;| V>Zbj;h;{ {/5_?Cר᳗0߆_ߎSM]xxS ~O >.z}wv&q7^~%jswZ ;HˀMb;!E޵ςfա&Wsrz8F1:43dvB'JҰns,G?)/oX.:ׄ  ΟkD饋pQk&.4?1pkzMf;pr~?}iVz] _H@oŪ<4'FbpĹUh)Oƴ:=yx]hDoϞ"Ffm"Z0>C?6Z֘bt\Tׯhx'1peiu@6w/_} #clk… }Ǜ!t{p>=wgǟo#ݘnoŴ/hX@O4&74k## Mrfo5yYQwoCm1~p?#gHExX㧑i4c-WX | ^|Q9YoZ.0 y49 dW!R+#ݠVm"K/ʇȺD-:m^IRM #u1m[ D Ш`VkQ-Z.9YBHx&ޛo=4qLI?H630y'&c*,F_nLjLLl2ao_~ w0*tyX CAO~'̝ QYY1ًf%=|c8cۦU#PMJ"ioEEz\u fDvv.w'Xؐq~:sha3p~B+~'K(߅ڞ!_~E[“ǿ5kD9C(.ǖ;5DV"fEY7a05V䢸&-v?:PW@JY(-g`2fݼ\_7„&ݰuN¾#'юcxnQBA\<|?q˃bJw| y:{kq} ~=9Tb^fhx2a/@_\lܴPPX|2urM#LzF&N}CF^{16oKԁCO2?@,$kH"#ӂxhRhpJ @WyIaB~.[я މ 8wzXc(:[ajhC^i5 -šb~(+!fS$`Nbe-Se`1GfTmҏ̕}'ϴ48'իLs+`,<>3hr>F2g®12>\i]<"2CՏ8a4 s\MEiZVݗ&PqAP[MVgggi bGO +7GqGYKW*߶E :vjzb c֐nňET#3~a 2s􈽛[7 n´Ç\pq\MzYl0xNMÖU4u3n0?`h‰’RD) =,+,ȰGuq-$JJeq,s1909#Gʱ1H̺FT$n_ &Кa1_󔡷@bEX:8=76]uwjfƆ(M'@>HT@nA ۽&FèS9J]SGExy`5h D16dcZl[h.C{w%{NaRi&\|1p]o=(,H>[bn q\bKNޜ0U›45ܑ/Y1oxf4eƹ2]seFҌ^?Xt7&\#o᧻N-kjXwz.]hAFi-r,gFF7 lk>\ɫ2,T/;8>Lb,΅^pǹ R>Bˉ3/hss^xʟ|=S~Dع0Z.~c} lIV|Skkߏ1}: Ppi<`QXi>|xΜ9ν3'WlznQX496u#c2X#)FAQ)#QjPVw~vݳ%=Wjcbn{42;+>؆aLJQD(YxͷQ֤Z@j >t7hThknC{wzu0 ބwapJJp>$߉~ ŗDmm BEI? ;O+Dk2gjA͂E<鄦sXP-z~W4umZ1woV3 ѻ8WKA'j'qmN 5:06rFt-hXGBPMm▴NFRIt2h8%#0; ]0XWjbl~+U58}.5*[YFQ{-w7q 4Z\8~rp&.Nv8*͐W^% b[I*jpl6xt#F92P-JcK }ˈDSy.țrl=\=h5N!Mл}c抋{njvfYp?*n|p N܎wFK{+m=“?e7ߠ.V4V3AM"!>Q8>Emذ,bM"ߌ00z@Jp?0k| 5' wV,ϸB]cdS)ke:#By@sXNCnQ3::R;GL:JfĞ9BމSx7PR O;u nQa-BNq#|qxWѤ@ 5VtQ:٧zᑧ25vo-x,Id8!>ZJ;Ue%8J!j!H\jzG@"6si {-rb߱|(< 6 pP>kIcJ=s,+ˆQ7逃w8ffTE D ;N߈Ef7* KP+~ܷ-d*ĥEF*f#".^Ö{QZX%%^eXF"nFyι =HZ3'%q؆}th\ Ս:%̀d5f;ux5F@r[cUL1=ˋ,ԉ~T4~LzLCE s?ˠ&yak;^ ccR֣n1#Μiֳ uto"tilMob.h&|kGgIrC5v;#ikjAx|Q WiqE.uR9ޚI<_4ppv-sٞ^\b v#xY`ǍM)X.iS5d=KI1-TDnڹ;jL6^ڹ&XY1іʉhøb[͙Sh -ː1 LnF lq 9Z+zoʜOތ2:܌]\ۺͿ`.Ӑli92}8? M“s(,&}͚5ACC  lGs~8ۑ ʘَl GEE`{[slj%rb/Te Cy2X4ʀ6 l'~KL%XŌ.ydГOॐ_p:y)H,RaJ|t?i|)A }te]ϞOuiE D#-S=/Mqy/XM4>.8w,Ƣ$]If=jZe47!ƹ.$$㭿 x8ξ0o@%ܙSp߄#|HG:oP;y @t^F㳻ݝGBJTZs vl>تkI }w᭷cytV!0Zh"Co;.I~A˱;wǃ_،ƒJxy{߁RzIZ|$|~Vnz ܳUXJFJj*Aˢq)HMtwQ{ cӖh5!5gQ@N^Qj%u ,D1KWK4ȫǪ͏ay|उ?znړcj'4U0kE r*R. ݿ{3;fVq,Cgw D8ː1 *-epX @%TM Ryprl،Ͽ brt #WK}&<"Sg&zUOB_GZC9Ro{XxxMWs6؁,=%P g%1Q0 ']ւ_5Iv .;݈kW!!>_wC}6R٣;8@ 3D(;>K8v ^ ^NBb|" ,ڋh׻"G_ nFhv,[߆u:|@[94Xtpr8:̔2UgM2xf(X4;8wi%w9Z07 yّ!KYك2ulYzVU1]sq<7MF6宻:feYH!c ,v@FLLt_Uh6aZ5m/vTPܤІ; pN.Zf)čU_g}b}FČ^B5Ίrk[DPXE.PWmJQBx4"+Z:SNtιd0^zG[RM:͜+m6){|"Q̘Q)}UIB]sӴ;R*|R0\k( RqpN;t JL6VyfM7fb0bB1,aGם=Buՙ IjafG[r\&e6{8Q|&-_%f*>^z9lѣW20ۅz =6 9&'{w~Xܬm=De`ewse`m2/BOLB%0eA6m0$ÆϜ .\N"##|e`o.#2e{g>V&\{9lؤ <9T  bَFRZeLlq!|9,@x<Qc -yby2c+kƓ֛I†a0`q}:MV;bԓ1 }fXĢ tDFF-&jcLoQ?BR;\wBQD+ORq @ad(=yf䈦vQs߯7y-Gͨ_[[\cw70tY9O*7:0|r]> tYscóe#<y=DG..=V'OUv?ǸU0tDN:kQܣ@\Ԑ8[gl,W<R6 CxH)VO!I3ۭ!g]ٵ-"V$G෿1pVbtH]m}H2|إTe 35c;P܅Q:ԄHy;O4aEZ8zg B|m/px5 @sO.^}sCbሂss\< AdN#prЎ0E#ǂ[ tqm߃Zx濙 N:4RSpyy.8 5ˠ0`G up  +2ͪ1{_y *{d147C(!SzeMzr4 p-\@B^ՋH_Q{z:CxkuO@O`]o~ˆ+ 1!4Q Q}Sr2}]_l[f[_ ۰4)Cuëio??0R7A@g V ,>3p +9s88P9(b1 G1 c4.(^ToeyP[[KH :|VeņMhG7Fma.:bQbJk p}wa 9306Z@z3}!ѱЏu}>yEHڈ Q"nU3늑1c}c7} ;k!3$(z^{|<xK|&1``aO}hFT rff8Y5Itƍ+qo z7<dž; A.ZM$vdF@޷J4MFuRDWԮ&zz&w40+0dEQ>v VF-V4碬 ߰ %h1*8ɤ<<A7 b0X⡧baݜfڢLT*9@zػ7,f.К[QZ׋U Z`~*J x ŭP:>,ay%E+FEI.U!OڅewcIr 4Bk~62%^@K@.; _F U} YhoA| X&4ݍfE\Nj藞%EEY-S(`%dP]';k9y퐲<9h:%QtY)NτOl"hsCbo8@3ƃc[ Jϡ4̱ RwgMm JaO тQDz;j2lGϬe(),n@b= DQR7ƌ `MJ8N;p_Ycv[nY|=i2s^-NDi[DU)+~p`PVPuwo$MZG1BKⓗ7*KQ[pxhQ]S;pk,43\oP_ /|Ӷ`:WOZ[Mm Yvn.,m2՘].C7//G.s*{DI۱ߖbHƺ{DKp0q nn!CM0$4 W e$ZII2dȸȀ̔ź3)rؒm sc˭ 16Wz,ʝk2ls1X3[V5`mٜs/\0e]Üb2c`өsAJzF,wf2A~9\Vˉk.mCi[ XVB2lٲe6h2ηl 6<_:9ש|m[ FV\/F63B  e`j)r~\ZJRE`hxl*jw 002}~t׌;g'P }裙nt8<4E]~>n+S Hm286<,Pf2fP]SQgp <E:j*8{<2Fz߶+QSׄŎ՛>ф0\1D80z1=pDC;y4)AH]z #lyp=zkrtաzq!"yi_;A/mH.gC*c,_i[>`AkZyu*ߎ=;vb 5iO'I9unf|wp7qyhm,CQm/&!;u jm- r1b¥c;+a=>> W(B}]QS=3 䁸POTfkF|8̀_;zJk' Y___?<ݜQWqwCRv~;T$):vn4(ƤL$1;Š+ǟ^؉؄ܷ 5moɋ HJNf2:WSӮ o gTq.88Y3pQN}Рw·x5p~#:z3έбt+>G`Hg|tXz9Nl2H Qk/&(UJܬ"H.ۆ;?-%T[ě~?nd¢O"z& 6Ϗ {'o8 Xڈ|nKj^*Dt%ӎh')Hg"B /XaZDُ'FCޙ#hB"`QcEkC^~X4 NT#)uE0ܷy gKcI!0)P5VDDFޢ¥@k@`IrOݧ3>n20#٪;'_9QXWE3.fz֭@8cػC52hV!bbIK8L5TcE7ЉYGv]NB|5Iľ9ǎ /x(qAħDUYtfhd݄8Ktx}G%Dwu=À~D^y k20ގGwV-Fcm#x=)>`ՠ.`4ũ1YATw+ .LPTW`/6?=hLX $\Q0TYI/Še X= ,y? Arܝl񏌅;e zIâ$w?}ecHLZ_wzЧ$S?3ګ.r/~^1 qa`*~a4;2[:^r|p A$!c,,_^<,V j2z~ t65’{Y;}YX,ڄG۫#V7!/j`|_NY -7uM6I TX dZ4;! - ,lvB{9H`xzz <6ifF``hN?s3ߙBP*c2>B`|l 2>PM C dȐ! 2dB!CL2dȐ A 2!Ȑ!C&2dȄ C dȐ! 2dB!CL2dȐ A 2!Ȑ!C&2dȄ C dȐ! 2dB!CL2dȐ A 2!Ȑ!C&2dȄ CO+DfQ&2dY!Ȑ!FSG2dȐȎm[B<8B!Cq`dȐمDSQ2dNeȐ1Y(d C 0A!3G!Ȑ!-8ZY@a?2d|mNf(J?ɿeȐq{?hU*nِ1::z ɐ!΁뜮UI,ư pvvdB!Yfi2Y!㓈N֪~QTʊ@J37$J%$MMM"!c)zfBI}ބHccc2!Ȑ@{#IaL%k)Cc6nfa2dXؐeȐ! 2dB!Cu!o"C Y!Ȑ!C&2dLnjJ58JC)xp F bxvLzbdMoND=J[Ϣ3}Zk`45fFA8Kvg1~D=]3~/gkL*kK58"՝C8Zˢ+ˢTjg׈HƄ@AYY}}$| E@\奿A~" eNK/ 4D'^u!:u_!Q eٻ \-9k`&| ǠG Eip~(~@($PgD(vk1HaCSE{R%"!G 2Bsh7: e.rBt" i&U٬UPAsTX#5A ELG^ UIX{jl]Cٚ _ZX렾@ ;o-T~_!=L~C3bSt}Iʅ+d Mtah !(H!}t5HDY0g'I) =GgXt" $Kf(4[&]E}Gd3F=MAH;d(tUPdQ=ɼI453 R8҉PU6KJfjf3,K 4 hT6)\d`c{0u`6{Zm;;54aJj RYH݋LXfa39 t"5뢝 $-~EKw4I3h'.l2@B_V=P lϮkj;B*ӱggG׌ L3j2uKua3P,3$߄!ȄH7(nMNQcD\7ʊ)yyXHrØԪ ސ4&#JB}i. 8&WImPi/ב4c۶l:¸=ogBeEՎ; {z#*j!+B=[>5fP!? u!@}DW) R YF"CY U_3aIFif/t%YondKPAL|̣&)Rђ]πyRJ乜9uTK%<>|-T۠6\0#X&p TTnm3 N!Lo-XJ0nHŪ0#.υKpu Ӛ(7Sf3 `ы.1h?޵Ý:8ՁG7 iM"F3qnBUZdmw'J!Hv]dalLq_ZѰ;E>,݋ rI$G]$nJQZ+D(95~"$ ]/2g\xKcUF0"hg,fv tB0I 2*FVꍀPw888E3Q-ң/I7!& ," q^sj#[$>+dӥϤŭUN= | `yŪL2_\C/[W5&s,).OƘQ-[&1Q$HM4d[nH@6>!KRI06ၧH6CQC{+il+(F%,>ՙdP x44s+>g뫋~rWZeGfG;krCdl`Yۨn9Px:w5yҪ:f]e>^X=I B]^h a&A9y˜L܏.܈._$`2Oa6azqӐdu e7zҌhu1.ת$Ņe*paF0Vud!6BYlBtfMjHCX35Y ECeCX44aBCtdʘ*(ܺͶY~eȸŃVǦl&r2d| *+Sj\ ɡ!B ~R)R@Tq2] 2> 1odc A5:2̳.E74\ݥvyR㮲[piަ>'%뀳>@̼Eu}I)_U;ԩN7vY;6cʉ?r7uqZE ^0ݑ>r| >.89NÏ:: < 7q &;K0y NRpי)[3xoY~ҙOßJF %722$ڿgo}Cp_EYIENDB`tipp10-2.1.0/release/help/de/img/h_results_progress.png000066400000000000000000000635751274324046000230270ustar00rootroot00000000000000PNG  IHDR LtEXtSoftwareAdobe ImageReadyqe<gIDATxt$y.Us &@pslْe[VkzϾ{=}>˲-['˲(Td $'p89p9g4F{ﭪFcgHСreu'yҟũcN`d~[*c#cp~81Kn9뗝s;8toUU%/~y\  ~}F4LpS}b~Q#uӷJU)rN`4{wtt%wߞ~돳6MQtTov0zRiq49AHnIj}Qczi ii>Y{Si~F7ϙpfUYI?6N<磆q[۪~mREt^̆r8tJslݸw4g ə3˾xw8۪].Rن!~2.QtW\R"GRSU.|ܜlM_a7sKD^"A$ W!w1uE 9B+EtOɚel?ȣ?MO&u* ZY'li's8a@*;DUYL!:}NQd]UrxM7#NI,`aO0A# (CSZJI0C4@ au L9m>1@O^ztM¼Iϟq&&aܝyQǜ8?5(ƻ8͘f&s7ޯ`1u,7紮nF ϋ }x2^IDLLN3rm]~bYVjH$9iJdLp  txvLE5Ω"*7 zRٸb}:[/x}DY5\gIYrQ$4v:d4u1F",ejbR+,W꽃3ʪ$JH u=}Nq;u(6_ >@Y\ZO_Vr]3Tv 7YLYMO_9D4Fy3Z7)8\SU 9_s@2.hzL1/3ܢxR%eiHh-9t0>YSJ#HdbgwCMmzf&IhB G"QB G]dFlHblhV.\l T[[tL`0Ǐ6!%$9 KdE8u8 ?E< |DU(QgJuEX  5H=o/nrgEf9Nx3#!iq?~!?JwE+XPP,k(792(olM_]卾!~i}NB(I YPpn&76,A< ؄rrҢm9=݄{xUw :bM۹4"aN38/A)A.@!~230`TB-PfPUNb&d&Se@H5K{aevhŊU~ԈW,*-WtAWז%oش5zzh=<|s39ɤa|kjϙ{4=eX@y RB@p6V~rv|>5\5eϹ`a3yñ FibS,b =y<::)JuPdYAQxh:T>9gSTHS `$L4fޫuߟY.ҸID&0p:5q !4rNI tUNYet0VrzX RoR>ό漅5UXhFXz,a)e7M42u\ 3\OuԚYiap:ӆF .rȡęlNIz5u:1d V ΋bS2N/ JJ ;b9\ը8Tx rY`:=@<+$!@H9QNsx s^ ġ'xgg,.Ke L v+[w r+-R*>xo{"(1Si&t4弜")' g A&ߣwj] XFxrܒ1ky(gD՘Ia836h =]-b&G}s!F d<%;,ʡдC7ϊpsDBQOeYHdd[ }1_OE9E'4hGrJ&eYbq{ CS1E|3jYQ@= QLVT8D8n}&gp@U0]U1<^]%Ŋ*%Z,$Ԉj.R* ]6P4Kc \9wYT Mef(Ǵ.`+s^F,;K/uޢ f]9J*;E!IyVܱ!ԌMD;Qz|]7o\VX<9ǓHʪe>/} D9g2'eSLBΌFX[rzآ9V`%3q2f]vSyܼ+&`(w$>e#ZZMgYUOO_O֕kMn2]1iqMZ644_|e~*9!wy}=U}ktAѿ(,! ey3GOצTn1"hB_e8Ӫ4?2L1? 9gwis҃+Iyy%4yz*(TydYhsZs[ٖmM|:9tvuŧWL^<}me ǍpD([leiT\Q fضrJ2 ny5]/ZԷ-70  &L\_l0 I\AtڠqS;? u, 3FI ᄉdhAod0ȔzЩ<N BAAG= k7Z[p:Wȸ\;p3E^\?33v; @*σhT" "UH#4c|qd49~{?=ۡ Nrw[\cݩ~ F}3Q;Xc'r"K̢xь*FgN 8!^Ӛ:D'~l;:G|߅ =&ڎxpjpXXK//d;Ql߽ Me=(*/hE9hd+.i|<.+9\?KQSU\56TyLh,o$?'BhhiLǤs2TQ8y ^ۏB O 9YC 8?!T7oӓijo= imڀ~J%xCpHdc8rre>=CSSgȂCoy3܂~|rwL] !+Y3r#{6XfO•]jccxg~1d;J$ʊ$Q?Dr -"P.LBxϣ!&QVzVRY5z[7b0V ><>ܳe xƎ~9"CSx}]p('+ -@󽢟"+׋sGpsVfY%[0^x]4ܡKOu9Ν-;a}g F?;.`{B{G3Awgk>MduURD'5F8 #0/s2,`h'~ }1lڰI&!Ctg`(ۗ&¢PB_{ZV#/n8v /G !8K$+F(aMs#57bYtu (48I1ۉ*!F%|<@|xcUXZR<;u"#̦ c ;VًJBӉ)n u(+&B#dW0JˋPUZ}57-W0Ϛci9}y0.t#;?S!5-둣tb$bWսř.jF.ѰCcx7FeVhZ~UD'aǰZ7{iJeMx3?"lܴ}CP ['pz2eM}%We32@NeQ6@M]28;\Ԉ!ĈKIJ(Ah&,*6ʼnCMLޑAv^dJ3&<;;FL&d!̐$se‚ı9A@o_.صgzA[s}Zz&''E3 tb.u!6D< ,“C"׌U&Qc8 '1g8++ (12!YJ11o~1<3|G_o܁|h)*bI$Q@vh4-9BEF^r-9߅"()H`(]-' 0"8@.:vtL3J:Ts8NßaX2bp=ԶU4.d%b*wr&#uf'5eˡL bh:: (R\ ?@uLEB0rxBk"fNWO|(C!"+͝ ae=RǧQ!GLEAlx?};h>݃+.A?x.e_d„A8g0qF<3j3J^S Xf F!sˊ|Y>E3G^1q:]"\|+mUdJby1ln9ۍ|(f sg{=~乕b(:' 0LY(U,He(FEtI|xai6Ƃ8xQ`:(\dZ>6D}X'e}SZ._GPaW4$JӺ=XX(Zi7Ω]# 0*0iވ8FdF<@na1r|.3cgFD7Q[4tut_T]3c ' (ϒv,/5'O}}"#8u=ԬZ=,G;K1/r8yҟ`Mn ;?Mk0 5PDgPV]}/;Ppk5Upg!#9:&P_[~T}On.3szѼAC蛘TX烣kRT T΋֕>rmo>r uÓ± }.+%D 4Ⱦ Bx7v ?)bP+_ oܰ@sbj[Qz$xьb4֕ؾTaB`;P|"tWىa>y ! r@W/"o7.e8/((Ecnv7D@pԁ!T5C»q"?EcMu6+лCB3eJw߇0^F!ԚT_}U|'?)9d=.xpgG1840~` y 7"<g^=\ "O,Ӎ# c ƺb7lEÐ@o^ 3@h$+m?mNC&/X ߿ ;G~>WOwn9:YqC[C,ŧ?S3dbcXLiټ/[(o^_E$ 1[˝+oo_x<;ػlh{sP++g&ƾ׏`=x_R |iA*FcChɳg  _]-Z[]E+JSJ/|'jx_ ěqb}vo5ġP~r@UJ8E' ef)ナQSoݝ94pX^c5>4iIN"P\>2#-Ob$0?x ,hm"LWĶuU#LbUu U2p-@ IsO>̙3{ܛ, 1!YlݺY/MXlV.jۛi(j>"AjZDoiia2a&7qJ7xNMM)x|2;'_ps/?lsK煂e.SE@m.2B^qFsj_%d#۩/x J.̶ 'J6ɊQa$YĎ9!Y7`;^tI=B~5ì9 Y"z7P[:XEps:M5>vF}VS]  EJ85]贶FX-ݧ"FH*W9vݻ"k~#jd<)g:|N3->ƵsM[X{OsvTӏE3u,qvs"nbiwG?%&k쌏ON_o_koG*A-NZ__VVDB=2|\ nFn^G_4m\:WeƦRܯM~` qjJ쉂щNE0;lbВN ZfRPD9>5sqagEJEb 69)!7VD(CfQ,1JK}|BFAU2뚆?C \;y7 7Ƈd丈tU!sϖkSrR;͐=F;~ "`pګ/h4X)vSAPgɓ3xR<`1;8}Ux. EY聟(SH=yEnc.r ^}y ؋C,8I\:;m1Dg$D%#tp\g B:ZPxTEI#((tab8=lYR u=(v{_b8\q􏌠+b @ A59 *KAM_җjp,6lA,uu" ܨtn@"e.dx2<ahiʦ sܨ* TXk5wN\I =QjO[2& NDB.vn捍B89ɇ\ t <} xLujPZZH9%>իh n|1e)ǟJ شHd"B04Jπ&"3ڸi2.w=LϤ %MErUWY1m߁-K0D ȋ@Cu5-f)tRI,`UggD3w89O C8ч\BYF 9seZ[i9D2bM SF0Trl+=اGm`UyT?uii5""= c%'1@Gl: E;pA3'=XՀv@p!)ec*1P*wyc9D{c EnF9cJM*\"Y[(b1rV&mQ6 !sV (T> r`oOF Vb6v uIig&CO̠ $j<87syJ${:owe j 1xf@(?t-jtb%jlE3"%)~XmvB͆ `n%)?M1VSAXUIjҺ??u5UXBﲧ-Kv4w R?⃆;dLqNkbp)IbμqkRAuHZҾӶr>tIJaƏ C;+ȬY)!a-w8j#t# Ɉ4PMViBWЫUbz9:s(jCSn({FزT f](#QuUѺa#"(d/Ċ\%HdbHx-wО{у>xG܌7 !h2x[&AQ>~#;|ѝƫ4߇LǏ={0M>S[t RtI(@>Ɋ!ffQ574b7p^fܷ[>N<9SIRTM$: o]lŖ# G %b'/tM,NEzʋjm->um<x(.T:.ilv2Ǜ ز8lGVd.Z%-D:\Qwkjn7mRB-m"azv`mSSxw)qpa~B珡 ~›nAk<[F0NJĜf͏ӟ j X^7x4"Ih:X4'N豱1;Nhwz4ɂȐA_&a_\xd碶my+"STrg6nhm+!,vlDY겞"XQDlܻ7_t7c II`- K̶ime-vb-)I)CjVM2wd`c-,fv &' ŠI8uۆCsleQ=9 XQctx}] s[l%`IXuR#[lJ}prDxպ-ܕ ::Cρe~ &# rי !9W/ˏ޶hDm7:,^[lDgG%t78U%8,&<&[FXQAS}=tҰݘꂤbyyuB Ÿ T"/[~}XeJ_g@؈@ իWlFڨoANJ[ ˇL1?Қ&($+|@l@n4r~Z Ewu*ȒĞOtnf-hDps#ub$f(`-wbf2,lMFAIϚԎ j-,ZncQc_Y]*?Ylj)$):N'b(Ԭ^L!wZ9<ǎ!bN_@ÊU> ey%U7vtt`tt}.nnZ___6kY<#+a`, 9;{TBJʌ1~VO[2rSaب|iK8t|zv6 Cb8s 6D";%-T9z)TH rrrX񥝇PT-[b }C f>kxoq -,MN;ÇbgyMb&R'izxk6gcY?7 %C\æېؖw@DVT4ۉ<OJx!%c =`Ca"y,e|Eu'# I.-lcX0X]h'ߟ##v.~[lYP \4D'Wg{L_|h/vN0nH]V4;[і'@@80d`55e w+$NSgQYR:VK3!+FD?lNȘ݃?~> t ԲVh?XN9q?蜧3=ÁsWök x+YW(b211a;mY)Be,15x\N>H';B4D/Zq3GTBwg *ļ9s@@yh7] `׎ݬkD.^T؀y2@VvY#% ca>EծdRG $ 1  C%k9KVS zViW 1}ehq %8hIW-Z"ģ옳-EGV}~ *VeгK;Ob D'-KE4xZ% E'f.7 a.bD|hPcl,41NޕcMVI+Z$.'D-*qedsy-ix g^C@5Hز2DAln}59 +㆗b:DB+hiD@ '؁/A{?2+VP0ZjW S.RC]+uT6!y$Bt]< ę1bWW20Y)lܼn.Q-H'8щ|a#10M`O1 StxPXXj\9d$ C^6e1ŷ s$:;q#G{6؀(R|p g~lF[K>JM07/bXl,a3ugxxװOBԒ<{gQ@.#? qQ5b hadB;NU fcSzNcA%2H*:z]_*KHJ/rb$y,O:>̩h+B9 N+g2c_i=1OQ^Ray@ @x|cEeguG1vd!KL}UlwJD# 6@"cg>hP6 P! x75iv\p n R2-j;SUˈM}p?Ajz#yLMN 8, Bh?n+md9NCh<.+-&$ȣl[݈BmgךFF@8 $>|//roB8<,M'++f d (+@P*4asx iLxmPRaӟ02HvSJw=o: %FPPYV(װD}߂@m z#b Wny]XtQ#x_|gCQkc'1i'mv~zF1AwgKwĘ䱰$ژ67 ]ڬqȪ>t:EzMX㱡(n7m3Z଄aEc~FC dT;3h >L F9֋3ThDF(bmvHsQZ}9=\-q\x,۲2;}<!-#<ݫEk;?A/,k(mI {+] Bd<9n rUE^J*F29Wz"("אE^Ӄ~\UJ<7ǚm,xW4 $lċ6ql0<\8>C9:^*}蛑X4hyoc=JƗl"Ǧ,{:>PljnE>Z1MB#:5ֵxm0r\lt*^} -[}a%jx! %nLU#XoɽpI>x{kȘ&O$ \M&[^=fޫ5^̐{>!4e#P=Mw"ǡ?`/d;ݕ^herX&o}?%lCȘdaU!Ak00ltEflvިl1& o>SXC \lO@/l`Y;o9bD*10H$e2Wk7~^'uD'e{3.lMdvݺQCO#P uC]i'I8"Am3Qu|kE l|k_eYZ (*Cίz7.nnɌki,k )W8YAIccZ{f6pxoG򞯐*@&e<51?*9i[M3wY(M6rVyQڎ7Gy(^=p\zFְб,v"SqNzsR OB|zB\ɿU`B'k Om(ж…Wj0XCI3+̡Jr#OV^WX`)ۢ ;};W[+hjM{I2bk]םCqєa3`uVea>*MډNd.!!D@Ow?I?TcV;2p!$N/mȢ'>[B17ι(TγQox/Bd7 ČK 8op|S@+?;LCNV}.f3 /ް,6`;hf{;шWb . ^*jVFLhhmA(qxpo\.>\_z::;{(bv9Pp.rvt8NGȜ!zh`M&@O& PQQ^I󜛽(u)vMkmd.Жn?!1{ A"ҨM[#UƳe1U\~LVtTIAwXpyX>p! 8lP ޕ@Wu]5" hFQHz{a{WU{R?``p)EAaְ& 4i `yl2d;qG̹XegW.Gә (OCjCm5cl abɾI@(2@@ࣅ{?"2z֨B?0YԈ0'E aM5,`. Q5iˎa} Q 6rh Oil"hRX*x+ؐc̼t%=5'Y#,{()TIXpF9an&߸H, ;b咝Vj֑g} Ïw sRxS 8Ї- BM/!t҂n ěOn瞂'y1ڼE]&Ã@3{H,m<ۅ}9Vc+ Cqa歘-aTTCNT8÷t]DGق$w vv.n 4cqCcIX l57ĵ)]9i|d&8dz~;n;In4݋߮Œ2{/|,ȈA]]1Q`7 2y]C05lnkܲ;&!D444BlWNx"ASC;3%+3lP'3 Y<AF%A@@@hF4e-.3RNRkpٕ 2,+:KR1}Xgm,lÒ^^ z*N,#9_[D? _'h2qs}xTY^tFh LM$ _@> zֿSЎVB>*(s<r9? 3-mw C|VL:```˕a, 3A"\ 'YEPO@wC埇T<+@K$PBxH}ЪZ+y>?QHnBn|ȉL@G\p//Axڄ uA) 9+#8_gRB2| L^ a(ABO(xVt#4sa"KP@ zYhqd̅Rұ&W70U2럤w'LȾ=}fVB/Co皉rBPނ3 ISoGXt" ^f˲HD nߧI^k?xV`ұg}}}:jHXBd] }J>sٿY4T곖 r7#ש* 6q4 DQ_lZ4?Z| ̄lc#4_cN%5Biw=wX $' IFj2Xm`7I]WI$!uiߍAZxBj7lpddv#=)ӀN*:yM0<%!sfJ>sNj7_j֘~ɴ1ʶq#F_tNʙWv2u0U KS~Ϯv^UT5C*~.y+4zw6iTl0 =ti\gdADs;\24C/V2#%j^Ih9 }݇k%뷧6脣(9}q"O"QLUuFڠb%)8q(ZZZ x~ܴ(J%Ǫ-ʮîw09DP>{4-M+Ȥ4DSmy8TSRxTV`E!'f2A3#0ɦf:}7Cܜ7;I=0 ϑ9}ZIR D8 m%3@fRV/adT7o{ Fae 3L)#+4~2+X{! )a&C|*2d '$L&6ׅ-HKM]-$7x=o{n6F!1G$ad;*N~' %#/8"5ށD}c 4ۍNMX4|[P>BТԽ m`φYi6'+4 wIx DRX%[W{ !FM;DfUDzW`Ue.0`:8T!hVXKCH#IFA%p2A!a lɍOev-5Lg6 X]]=I111W|dayoW˹Vap^\Z[c0X0"->,뫦1Ep5մT;mf /0'P_fo6.ݳXxV`9#p5#02Ҡ}A[p!Kdn\Ύmp ¸#G?&F4NdBV[#_@`sJlj9&0%amN3LUU "K **ZZZ$haX3$&L! g`[\f噙RI´y{07$";y%g@W_+//\RwVsŌuLӗX휰 Řr4_Lz~-xdI!ȍv8_vϒdꁼvRfn+?77ܽ鞘Xko'Il0Y8DFa&Gx'Y/<:Sޠ^Bi1 zB要sm0RB .!sk{z~s̄qac5!Quv Cn]>9*ie2YL&|]1XEWWKAt /,u$!PeU%]VHm6sS鶷œ?gC>m:8ATX2Mau'B0|D7~& t]W_ ,a0jH &^œU-6ÜS@@,*3PXG٥L=@3Y%C0ÚUPTA|T 4r u\~?c6H & 2_YL)r煜CAJ!'Wb98?/&6J#G_ZbV^“߭Կ/XrN[mT{i) ZaOƊC;)?b E@}>BqX1!|'4yOh(EB@4J>!L`# ):R^JHDXA ?i0H' <恎 p 0`0 /0٧ ‰Ib ̠Qz2uX/T)U /n iJ 0R:LK j鰻8sgV GJڟL޾^VTzTjVO~LhnU5E->Og*n""Zmq(rF*-f~͎o3j|R^>S'>- \((ec3Mʡ!x|<|n倛i*JqX*TѤ,=tNҧ~/>RzcWVrp | + ! f1H.r=IA(,/L0#BW*Nlho >`/ͫ D dPxr'Q٪`}Fb ˻؏ ޘjI #vyBBW9~E"ڼYQkS/^2[F BI!(y*L4%tVd!X[! QCŒ@"0GVKA> '@90ǘek~(8p "4A Zvnp.!0R qERҁ)fo~0X8Ins(cuC>gmns.0a2)wd,9:-8#\.'K}v[?:;}sV1NAMh j " /9|c߆.|0'׹I q 2p"ytdKP&Qσ1p{bX[wj C̡1#Gqm]U(yRj:'ȼ'csNES焌m: y05 Ш%F" /~t j7HuW ],c6ZewkTM(a5JP* qX>Vrr>+.n_/$ k?烇.{Y0.o{bzՊk.f.[+d&R8rLJTfe LWAp$n"oR|ɇ, 3F}L3sE %@(WьpX84 KօZDG= X崡3 FRGF>`w)I󙝓'sAAM~Y HpJ!t VF!!%BF vĪ %%1d|KkhVm&@0DSAIPKC^޶qF pNNSa&BPmiay4+\Ї o As@`- Fp8MY cFY# EiVM4)2&07 = $x|\BEQ4/ daԝAeW!ܫ Τ0[p|2w zAF^4z!4Ȉ^FPNArDw4IvcjZm^yby[mVpm;qadr'#;^!WGVT($9|~0q cPi VPtyH<<pa=NBiL4j: ; ]o?(JB@&C>2Qh,r PzC|PVzZ H @?@"XDDn烶~A6 ̜Lhucq %1(֍{A?&P0A !8Ԁ Ka 0O킠RƂtpVYQBh50˄f OW=_P~!@3r!`o K4 nl j0 uFA0(-UqZ.~?|ڐdB` maDA0V bO7ĄBL610[-G3e~1gAiMx+]džnbL`6R 6bL8b̂9Cq̠c&̉4|~>d-2z5cOa(sLuE14x}u`q9͎3 Gᔆ37ȡpҀ|T栞#kS(Y1f-{  e `pv0t.=8Smp!@1ͽ,9)!3/7O]n_b~9"+1) ֺz-r1 35 4G;" F>]S0DD$"qм8BaG$"O%2 r!]O X3N&\!B 6 dg (P%***qR&?W):O;DGGC"Cg.@,9o/:Οd4j_!uR~VPN_c.O%C XQ5.r #J+6?].^Fӣz<%,33I!M;&ux3 wp8(*"S!L8 +- sC ]K B‚*,躏`gx×΃zO@.יoB1j5!Cm@ٜ5!kq2@#/Fwza`ynwP A%$Ace2^W?J|E("v,:ؕjyGU`QJl4 ĹBzS瓲`>P*h`Yb4@ϕ:8Ӥ= w:}'ԇ kƇv”53+/籡݆LUAE #5&$5b>&&&)4rHy2 RGQ&ωK@eD!| ‘hǧ ҈}f3t0ѵs'}.8\~l_8 /Jyh^/za$yC\%"p)I>Tԛ?"M:C&r`u1R$2QY/^Z9\Ƌu>d FztC;QffL ًn'@)..P4DGsC&eBŏ!bZt;U`U&c|1"3}lN;hpaX^jN,X_`O;;b&%Rg=Co'M XL!>" 4ͮ.,)k<<1?*bb6,x.jMFI  'HF}Lb& t!N eu}$*H}v6קANf<)/O+Ck}%;5f$t` mm?I`vI.\ȗBA6Pû6IÜ 9ػmAyV| . 3' Æ$&hIu"55 g *j9ˎn$Z0CGrr"e^[;{?(F.1o ;^G̣FjLޞ&ڳu>̘=]gg|جTV ʀX2dM58? c4HfO4zm=A%7f /SqԞ.w䁑iƎ7^z >9YHN4fFѰԕ5`XV$%mЂP~h|tpQ(Y/֭YD47"3+ &fX%:܊c ehx-ؼ Y:q<(1aB(Hr.lیYCA}2o^"_e ,@įABqB !)(ӍVDnQlւؾF…3Q]LY;)td F+B44('ޘ99I5XHJDupHKOVzP);qcdbT$!lQkh1}ܰD8ۑ3rY-Xfa BGH/>^wrCn?^,{m-D] ]le}vctM@% I kd(߹}0ꑝOF2%mJ߄qi[QI#G`iHf0,;,-GPDVhmŞkPp 01Sru4zrn聫ΈĤ8`AmГ|goDBDU^`~rY;(($8Udi 2 x!e hdd4ד~m):0(U| tQ FC{o.)Eӂ|Gtco`]Ÿ(Yڼ;0sT:^$Y肋u[-fPѨ/}OGJ%(W|l4rr 5A^ww-vaxQ Ztju:l~цԖ*uP@GO'֭wdX20QDU12wVN@ZeP]UJ3Xօƺft45+SQED0nנ B?yQ22Cr]bHvB(yi$.<*3W74z5ξ>bC4L#k'CH4c0jl xE܆&G42u>H5bHHx:QVIb`&W 5-E@7:"=i>EEt bYZPU Z)3!=ƃvSKe%#l.ڌ&Ƀ%##4v&djk1iI 9,)PԦt,ig\t-׆ND?^R͟UPp,95p :-ǎQM 2[i!iR(됒H+{8a[:*&~\~7z,hH:)9$ .ơ\aw#Geu Zm6Db C({(G :`5RJ3 ^Λ ], gw 8C]s/W̘5ZAۈ!y2P43ɡxJqStו#u ]jD'Ҍ@Gl]m$Xmf*㜠>,+R܈d4*!yilh:6Iqt)*X=D=HFkC & aq#%52BD@KZx:*I"P mqHI |2) zŴyqt ڬJ;1-U<ʠ?b~<:qXK;XWѠvqg8i{} ^H:!?^:셸)ռ8SUf0hB\|>aVk?4:U i&J):O;Ѳ{%vk_P;Zt0Jf@EG.m#/o2H/:LyR_~a mQ%og3iIMM=g= C; L>g(ۏi-{}(S9فhO%XQlItoݷ@9h~ۑq"] <3d#1{Wp~AiFju2!iGJ霯=Ya? |1-Ԙ@DadcD~`N=WeO,ggO2ؿM;j4 w"W(BOm24|Z8g8 "PQj:߂>açZ.z=DO<F:%ˀ@;z\|[8g3N &6flBs[(faӊ7aw5ųqYjŗ39q ,pĩC&NeUEoXWUL;<63IZqZ֨*qZq @T(ӐuOliQ:th54IXzRh} 21s\8 zx>JÔ 7K :"sY<^cp&֎;nk:|a$ >*v߯~̢q8k Vݸ%8X^IXsh1 u]0 T4G5UP:Fqn m@lR |}tܘ4jqM \ ."=+Ggk 9㐧G1ń| OFUMm貺B}nG\Pp*+aR ^S7OHD}AD԰GK݇.;oҘOo' IÎ^3fKoDs{;*:jfL$@"}hg`ߏեXtj@Osиc=9#rcx}0;z1 *"u(ט ջ\NL:;{1|dZ/֖""c]`\qEtVҩI`"s_ĵdDLJIElQ &#C]};L)YH2Mؿ yjX<*mU{צcxF"T(u,FCnV!:e Mr|1i2n$cJpesKe!L_v J-G 4Ḁd`3Ѱq-\y#H0&£CXx6 ST݌Dd%niGgr33i9Xk*d qa`ŐbhcҢ))*P<]tQ#uSL6B$S?SCRHBpx( 7đqbbx7eaˢC<*MP|1:\!xyl30dN} #X ȥ.2kjjBZZڠ$WWO!|_Y.;mKl"rN t?j8i<@zzY L)N31p <|Vtw '.nj_X uҫ?YS<qv<V+~_\s]r3a!\Cܪj^7|: Otΰ(xlzs9͡q|uV*Z"W^x oS߅T%?Qf;PU~FxXlo>_z^N;J|)l9ɏϿgb q y?v},6%g 3%k_0\4)Ou,-0^2ȟpm[x4OHX~x ;C%ãѸt",X|)f2O􋯃m+3pč1IxP[< 8w^l_quxQ|o.逽 9.͋b]f/^^r1y OV2~X׌Z_zԣp%c߇ϓx\{,~**5dt2|xGp+ſaVInaqŒ䚻a3op"]]z\}^>|U yJǰn_OXxMkk6⵷^[`L 5 x?e<OEۀ-m3w<|~62ʳ MFoƆ!e۾®5QQՀp/pՔ,|sMEOKjꅷp/JW#:ZՊL-=!ӗa54VJ^e&Eot8 3a08ݸn628{5DN0i`#EbNxD6˱nNdYcC70cFBhG͇ޞ6Զ"N I1h<$GNE%6{{ <7\~ce\_Qܴx2<6;$ng?\d4cuFL2%c"^KPE\55Q0LVy(-rxau`jE}q1qpgXa k_7*O@&ϩ1j(: :x cK"IEWTԶ:HƐQceҺ+?bqGTiQ?c2j3r JA%dPpَG'H=*z,;$&|q?ޅ>f4vءG!wbvlTw?De#K0h&Ȃ8#Ii7e 6~]ЮB~V|lJĴIP2J_ Z|& #& wT"ƍ˜$j  qh&Żyhm!G:xzԳIs.ōUENL3hz+V"r7\5617w,-6< S ۏT K!nIrcϰc_ i"ո_< k.X[\`,*>q;knC0 JKڳObqc'gqwECkJ蠝nʼn{{x5nP7~ރvt &OQFY$Qb y[\FoFҋ-Z~Dxb+jot[qEru[* K&_E?/s nj ҵÐx8\!@|d&$g))OecH'D| xP9qK_ļ+lٵxMdf-x3#n fw0iғ|܌(jl?~;=܊4Ith7lNǖ\M_P0sy꟰K;$ir׃!h.;n@L0~ikZIʥ]hF"~vѕA7?`/}Y.K3\ c$嗫cpϿ̅Z2A,ƫ\{^B&K:tHH%l)))'^$xgbGyPT2h"1- _±^v#%=}]mQ ΀NGCFB18Oۆ>ɈB d2r4#15 frOe}+^7i(7I CB4r >pZ$EF$$tD|`TzU~t:$\kߊ>rYB~[7o*!AuXr}Aru%y5E)J\E gLMX-iiJBSr:\ pR ɟ֔,aʑ[dw 1Xٱ 64܂^$c&'{Oj+rKCq^@@GC5tBԃ*!iXJ ])p,s8cxQ![CeE҈mv{Als@ΟDJ ZWb$orJ*ҳ =ᛙU_[ JՋhöt6jEZAbMpHG0"3 8+J: F↛5޻J qǕK/=ҋw[WmClVp:x'`0^{A|f#v ==+}<[~I=G_pTtȮ/vyśxH*ީ>  BeJOgbj\{qӢ<<8XVIK]?\[| {ɇ_b=?/z|S̸zZܳGTanؾu-{>{ [C.jmĻof\r|H1>Cj(捌[+bX9;Q1F=|hEKQ#P!--򗗇`5$T.4q[Ao6[\!8`}UV= }S I/ A]>u_T,7 gϿ )iϏ? oĵW_y  8fR*<ۨ߻|,knUH79!Y8L6EOfCfٍ.",JGmS &)3p8ikt3l vNϽ_ף|+R& &\IXu(k|]m|jXSPhef`د0g6w%6?¬ 1k~>>__/%Dy =**O Ju^:^/U,|?ƍ-–^{xB8t5e9[q`ڬ(3ރ- '+ى:tU{.4VNFbÁhU ǃd\̜3IF+ƟS`ǫ`wQE:d|ZH8I. ?$᷿ޕ3xpA>^/J Ee~+g`M#powᕿE07 lJ6n܅;tpd4ypT_CСx‘u))AF-y^.8(؞c4\Xw σ}<=z<_@ai@%Ar} ny Vn*mxd@+!d$܇[" 4<) ]],*? KZ ⁠b}W fCѧ A2d /-.1 &chToN;ipJ<~5\i8}F&B8pwaxzҳgDJV2ӒQ(8/WhƸx )(Ĩ|h sG`☡SGsq#2"'7&Y9HCBJs?|(ǐ ĒuIq&n2fcX 'o(rRc`Dz,3qU #ڀɓpabZAL84 Jā]e8.ƌ.#۶B; Fu7݄hL$'0(ކ+/< NGl䚡I9sqVY? ΛSb22H FRě HBZIDaKgg'L&SФ4JӉ:d Tgw,ј^۩ ݝJg_:4|d^//;2777Q,^ 7ZcGy"4tAJNujkk]u i{p!jy& m0$ ZGkk*=pY$'FhlϬBב}p.;[e0]kb{.N4B &n؉Ic19qؾk72 0*q}L4tqd/v650"NiCUsRa=fs`!xLƫZqݥ~GM}F$#m9 =AE8 ǵw-{e~=zj8co˹o G߈/x݋n*aIr3nJ^Coklɴ@[M?Yw ̞ѳdH*&'}?fHK Ƙ2e]LwO?id:O.# 3.lzG3V)yŸ"SƘп N(D2D.ϑɚ1A@NM}}3>_~s`|;m:k9m`?{,=yz-fT};>ڸe=?I-䈙'Xi7{l9Z]⥶>3sҏ￁7>9i.ҹ~+nŖuW^ě+6vl=/c΍؃;8g:W'o'˯nW9hGCZI^ ߅tTߟ!_5y jZ Ox^`7-Ūu :Rq[`w~ f,0 <^xe1GcѬbٺ ZlTEH-waT`(MArF)f0iʃt ,UPcnőۡLM˶ ),C]0-,EMe!b:{BXΜHecջHK̭~̿y:xuhkA ֺ^SbQ{;e8 ;AւDva5"gۈ$  /.DK +fΛ:qgmVsա?*`ωA+/+ovTv1$ Hy4n*hg"TơFb^lFLyB-s*p!rt?&zڻJ=傱uEOk:WaޜHBCPeBa 5bʢXa&LLG 5#ћ.;t1`CUG7ҳx8 %30wHT.=t7@=*WbܹuՓT<^[{>-͟񝀁oT DL4kR&4 > ^ } ËJEaf,}V)J]6 |Qq9Y+I#O@Vv\|s91~r!v}9yE F(%pbt l j= &MI0u> E]ؒBTH4ċGSQ0HScdt##}mu=|- Pvr]zIP)ezܰ۽>Rv4?u^ &}Fuh|ps9OKl9h=G\7e*cH/(DvR*=PmI~nM{*dKFFt!Θ$c"b+VM{ 'Cq0bݶcI;Ɠ8 "VHIdɒe[ng.wqݝswğNĉ|qŶl(XA$z#@b̽7 +Xyefy. @Su:r7zϻ.5nsA\n* Tr>2h4oA@G]:2y:V~ʅ@By7*tcdXz}Pi4omyZrz(ɽHnTj(ȽBE7V;/ dKWwx[ؼ"FgGp /;f_ Apwÿ~sBH#"krWjkQZZ' J`ݍ}W?ိ./ihOqB=I_409qS.{㟡wy} 0*lBCsmj3̤[:lscpxQX.g??z#u8~ K^JTT5!qWtik^W:s %G#atbUa:.~X/ ؿw=}>>z[=qмT(iޝ׏b4ޱ>\ңdu$165NǞ@_n{ۋqmؾuMSX6/YI{#%?W`_Go{76ZDj>7#9΍(<э%2 ~g/{:) vb9' G{-=(Hߊ3㗺PSSqwǤDp<6zޱfmBk'POdL|Ȭxa|ȷ ]kӅmŎ0:W { > n&p#v'3-u`֏=6ܖ (sY_mahT\, N֬طJu8>+w{.#t; V ANg!jMrYv<+2;4$C#)- :HARBBqA)<^2( dPA6@NsxLX lBUY$ٍ\+{D& ;1ۆ =<=BFntc£{ ġQA!,m4n"<ܔDX,Zt^&. %٩$kuɸ ԉظʌya;1^ "m":Fl#[PP]VwR *H!%<؄?X;QTيXfx\mLJ'.`nx{kq(zTSq`G1Z09ދ{;EJF7N HymGfj[ff">,zR3F"## FܟJ?zݎafFD.vofq)G#H1c4 Qz5q6ZY0x$L^sDϗfb|҉0x=^ZpTO':pnK>_H]-~(.*SrYr?cD| +tpP렐 p9LPQb+[Tԝ/!{!^_:>4^ 8dZX-z99,߲ jQ_@ Ԥn*Bs$s}mKp҈gIiWӳs2ӑLCn]q<ͬW*ŕ*էqi:%) Gܐ23՜13#:}u/c qy5 f(ەAO>sc$&XZ #jRị4pY<.oEGtܣo!x&`Eg`qNjL$|V"<:Fքdp]B85fDG#޵{P`NY$,.hGa ~YXπ' B 51 &5 iJJ0@`QHZ2,.")}ίQH>7Ҵ~p8H`$H2$er;t=CW]>txb ~47btO{@`A/a ٍ~{Dd `2 XQH9sT eZ$#FFK J4^FNv:=dA/4a4\|"ٗ6%&MdJ9._*EM e׾겳J@eŽ0Ԣ$hu("(XՎ^|uۯř0[t42-L8y ĪPeb} AwRTwS4y=O!xSJ׾<ЃX18u]̣WXpk"2R2Zјf>*b޽`ձXcP(TH]h @2ѱP*MHIKJFX Z1 OGT LHD] /@ :&*0cN=K~7ۼ V&ZPW.( +4\"] yEՆep;mNi@&s<`m~ | 2_8AD%ZgTgIG&6 j'~7hq SґSkIb,4R ZC|b,zڛ(mx<>P&SjQV4hk܆DnQo[~+v?D?O; Gx\=Ͻ0s4V̾>Bg0ڜs$%k ^5Fՙ 7![, R;b>€ׇ@υrg\KHOZBgo㏾9>,i^tjzh]p>,h0h~qG||xտؿ^_Á-,!֠wj(A=•h5f6N١ZAjFlX6_̓(i^'BK8ғp7T"%67lF$ZlްV zovv6Z4T+Z$ᡲ!@Kix)ABzT. :#XV%&1<=`nT)`uaذuJ2b(.MԊ$Hj'IJSMMM̋ ~m~25ᾔIz{JFHW$Hb  +؆$HX16:7HKƗAKx0ۿ]Z-:::xmJ$`0PXX(=Y 0ǒ AO %HrTY AU wBlp8P(($ܓ.n#!!fYlEv AarrNiENJ+ $I O{ 5ɨ(ACh[x`$T C0 YUJ1zyDw91&$Cǒ{¤cnF̀/}v7*OQ z#.$Z8ݏGIH[a)yK\~;}_H@gc)~*cl;{y7x칃 ҄@Of&'wfPӇ `UqS8F$EX !Y;-<:g~<TZD{MN`_8nǸSK0Ko\[2uA]otnQ-Bg{~߷l&ia ۻ` Glۑ:#$!H ai088\18 |>JKK|2'%czv0wRnԔ_ĸˇr42j+$^y-FpRP]ކFύ3Mt؝ z;; 仝cmOUajx>"WnLpTFGP%;q%ا8]z?O8s Jx>/.Բ%ܵ@|g s4<=DPkK:sVoэ^^!zj01Fd6hSڊauutSMPCЃc8qIkjC w J@Wo( c#8wYbl6V܅.d=X+uxH$58>Bw{;:-+P8fΟ/,; Sq(=z5ڀ l ݽШPZ U]g>Ɛ6_xrK3Ўzo} :|߸҉._6* FBA-͘‹ušpD8L@Ca-mcPjX}(Jlް6q 4f35rLLN9mGPS[s> P <#o袬0Ȃ$_Qaga845asSY/olS_z &j Q(!O׏Ǟ\+Z;@xoxꩧD;}oRǬdBW+'}hdpr9Gfx4HJ+z\fÞD7v!mU!F O?1z|CnD$pbsfP+G  ]FfdgpH[P}(z<^8N$Gx#ĭ)B9ySH,.߄3Ƞ Z $OZD+p Ά37Qrq w;3hCP*tQnܑ3F%lk{ @Ѝu@Y.)۟$C:V1ހ/ 9ߋ6BR BO9#<;v' x%AO'*x =@=w瞅k ^j>${ )C %\w\}בZH}Ǻj0Pb](+h MHO_)gY==Hs0t3$O?r 00:mb~eTv#"6C)VK:s흝(/汾V\jAB`\ U3y:]ӡ<e q*1dwCmT/z&=0 aŌN N+H&Pvޠ +Hp%ԀH?tvbTThd=wc7#+J wίۧ ذw7X8(LA}u7Boދդ !<16x(ȉBÆP\tN1|Ȉ@sk"c X:dUH!1.tf jħ ir ݏkVa"т 21>'".<(i< ?q$<53yR&ܰny%J"ΤDsgS D6 !$V* Xӱd >] ʉP0-Fmc ktFѸ8 OV| 9'ټUiiij_8bbb тSDfoo% 'J)>*Ra f~'|0F+䆹~rLJ-ZAANq)HIGYB/tcREg ݆ihH>?H+Hx%#\ĺ :H (hťӞ6HTARJ EOKKT0s=#I^?=_}Kcv^:8U% ztT||hpijsMzV@@sBf3uE]&gpVz ?F;/}z2a1ڿH gV<%QX&$(QkkL_V!I"$^x/M $|rv}@TK,x $XwZԅ"uES ՟;(C% ty!?`7vD0P9|ȫ_$qWWUŤ!.}> 쁢_' [e0v/!X!ʲಟ_Ik!eB^Spy/ #  \%H%J`ݟ*^(U!"ڟy Σ|3ub$H؉|P~א tq o c[+XI^"$, d=(?$p >b y[9GI'CYE*!h֝D6f 6tveP 8EB"3V!Hl~"{dķ/ 6eRόKI:$P1B `+CpKLmU8wl|u!Cj9>@g'O%0g6s'n3Y`>!N8q=fHE3qr\I %ُJl%F8{C(MX*IS>CW!!:R'D) /!GB|i7'<'!%#䵊UCO+8DꥅlHL' VAu;,O$LAn.yj,f$DS~]LNv.QYDD(O|Sv$ MCu|&\/fsD}v9F;RguՆYT=f7R nKSfXmP2rׇ~v6ڱfFEA^PXo W 12 :VIFJWAHTD#/!X!yS[;"8.e#=m`k?:2Z'o#iO*`VNyDŽh9AA[ f-#2 lOF"m u ܇&l@%i H5ugBŸȀD[-fTH:::011q-h]oT‚cjpby`3D&}܌U^Ltvq{/*.v:AmGvG%G)$Ulh&@GT ~&6ϋ^*@6b6>v/ 'u c!zO 5(yKȃ!aE0٨BE (ttJxVR%Qlڴi$Zs{gw2['鰥\'u-":="zxs2Iڳ ω^?#忒; ;xlȦӢېS>i'..DTQz!I1lDr o] D d}H=zS!`Q;ԡG !˰@GiLګ!8(UJYōq>2 2(Yi0! ݛJ736BJ uJ (<-hY,t$0@gx=!z2O#9-%rBfL$"X^"dVQFK 5~oE HTlsCU_@T!DTt >2::z'%\#؛Ӯj,f )!,nqN484`WʼnR<5TW)$<4*5,H[ݰ&nG{3eOF:~+B9kSa/P(=MdrC 6NE#ݼ.b߂&-82P;µT87M9?/A^ 왟ANtggb e8WH,Ҭ5$ M]N;@ԕGn <E{Dlk]w.sI{ +MBX̤3s\TŔ' Aͥg&1/ Z5yGCDP,K* ԤH]pqQ$J'=;";M$RK*QeR[a.7_0XwzzLB݀:1y>7?Uɛ{ SQ_΋9W֚:O NRn,NX7"s1*.싪 ҕwy?Xy%HXιՙlK$H)T!2vF K7D#$HxA:H\.c2 # j  @F}*X%]>81hh{61N"uez=H-jL 4:3n3~*Zءo;B}f6bVP)db/k &cO|>7.3A_ʱG~%iR' fe|c wy`t%{~w%)?v !2sZ8w;zf#&w8IENDB`tipp10-2.1.0/release/help/de/img/h_settings_database.png000066400000000000000000001002551274324046000230510ustar00rootroot00000000000000PNG  IHDRs=tEXtSoftwareAdobe ImageReadyqe<OIDATx`Tǝ?ymw ! $$:iqc'.K.rN.'Ďw\0` &޶2yU`_{}͛7o|G=f ]]r9P׵ $(CA1Ĝ;-"6/02Dj@![Z)9E/"'?Ct"M^1RuΝӌ-8}S(G>0ԡ Ĕc2c88K3$I>t>zE8: hSzC>XCIߓ%Q l1!eQ#{A?ɀN'!0!?׈)"I hOFY]߼0hwV?FN$\F+D34 ~u>029p!<`14 $7{ qSAG:"]0Z\׊'"cp{ض>'>Hp8Uogm(FDDKco!rl@4h9&/=E&¦dtGYW{yZalDajzCD/?07ߨ8#;jG3g $D<`@J('# Ĕ? #5a! ~`1bX@dɸH>2H$$e_D1U0uBDm g' @lyvW!` 2wnZD.^2@K#CATyyBxB שBD.d8V=k:[COLjT?H13ۨt\U==- _n߾K)ӊ))xE6beQD/\X&FB Ch[EpL9`"k(BS46!TUH,M ؏t0.п@48=tXQW,Dx=WmV3IPȌAs<$KbUaE~]!ɣ\7׈!zH8JIXx$56"|Lb[ L xSz}rbjzCD .1 L bF+1펆VM}_~%T*I=Pe5&5ZFA!+M2eL8zᨼt4gnu!o|cGoBr~"jwFf˔O+3 V=z;Đ5>TV ǎ Z u_Q`2ܡDC[[$Rۂv%'i/"*+$ \C^ddf0fbfwHT*j 𳐳OACA&/JBD55`hɷhKEoKEiRڈb`U(850GF/!Casf!U_/"󡧯,B/TSS Bg k\>e"zڏ3̙I+lH)%"o~QC)~:s-VLsE@8`.(bz=1QJDBL5wchm8 ްf ]LkG&-V_FW` ]`.8˲KJ=$ *04aÝ/p}PNVfDTzv~,B=!kvqi_vwwvw{i4Uّ{@5{jݢ$94֟B<:?'Ĵvb'߇NIl"\FjJݚ,9!Jfѡh*yA/&(ɺF#9HvU,QI+vyrfjJy%jNslUw&[ P]S%5#=HN_\D1)tP@lJ?$#>.}{6Ur6/2.YcUE}#kTsO#ѩ'@JO;qiWUbGznއ>S!#ƪLU։e):W_Ez.f8ƾ ]2Ile vrn.VBt(, 1cso 1ӯ%D"7NSf~M( 'Q8e 8g`p̈́H< EL nqҩ{ !BGLi@ɕWkL?N 1!Q&`QU/E" 3 2\t?gf9( c.ZDc}U!QX&ĈfLxyDMOa6?+m&;x4Wt_eFJ- )0 spx)*u>YlC :3,cj71_b,ϊG@7p^20&zR bJQRA<;GI,S %_gӗ񊧜F f?ȢHU{"#+Ni z !F*#g{3,9+=Bzz:,o)E+K(# 9C~HqˆW&\i,BKKن_+5a#"E v M<) ,S'6{t"&֢`(8 爽 F18dTX!@d~T 'Nq$P,H 4WN+,8ZBcdL4|ދ} M69En[Ylb+yީ`tbV8}RhAFR C+T,Wdg|wF߆ N  Z9$ኝ# E4NH3j,B 6ԌI68*Kj&g\0QP[ &(Iiab!߳9Î)a`~s#"Vð=2 К(+VTn^\k<xC"|}=b]x>ՂV⤖k*DH%p:x-v,|^lDc;{iHODŘ<ʉ>ۅln 2 .V`Gcxt^/*N\֝Þ?o(x^g_(zW%-4?/GI;y BBJp ӱ^4UmFl"t%λ]CM,sJRظy/)x#<{Xc8}5v4ׄ'EcQx>ULʠρ}5:^z~V0pls)SSƗF By_KA砒G? *Z[[(a9FNFy>bRxlVID3n~h߱+*jpmW EpX0 >BPk4j5<<|]{MDa~2*vWbּcrt6c⇑孠̢ UO0xY+ۍsq W a UMBhjnI}0YBNv:XJp_c'/@dk F-[lhhr≮q!N쩂ewJorz+1%L3KSgV&%7,$_Op|e0$F)DC*HKO;A#L,#Lcc#Б$m*;1Ǿmw4Ql`Y9o:t x_ډ|anl9zRrl&}r-gX.\Zo|_zӴ}0Ɔ3 ^2_Rt931$:`(Lskhni+)N9|*EZNƍoD&#-5Vjϻ6w 9-֍Z.-V1qIip91\Cq\R n"G$@VGzp+nx*A9irx…s $z(ހUKybow] =kYΑд²5='i' vrd9ԱH/esf(y2>ڸSe$mD4R7'pS%#5yuy93cJJjvt_-]G(Dq)ϙ5n%G;R"p%P+ BXXIf0R}P@0Iba?@FR! @/ Px|iŐ[^8"3dKrLXA.Uf^. Rvn_+E3` +nWe BJGfZ>Q[wo@>=@/j,X7=CmXha"p vvhc7B˛F/"kPv[R(Gw@-L艰nB݇Tžӕ^!2m$0$0b*CԞۊ@i3m@ĮlJ ,Gmeݴ]rR \oh9C>xh;q8iX*t4G=[NHXrv] ot*LA{@0%:A4ȻG͆S|ԇ@);cF->z.Dӡ8(X&GWP|>S!hX@|eQT 8puK"XLzrH!W}ǻħgپML ZU|ȾN)Bn;FbF"mt=Z޿BN-R 67HAhnq9- 24&6>̽ϡjGwkT=Zfɣ9=0&F/} " *`$h*/$&&q%6E[SS׋sNsFD5ϒY-EGD05jryOڬ zxNjȋ ~A~_+4!B5"!ReM6N/srLI`d'v0Fo#Idsb0N#(&M/f \6_Ê [('OM;Z:Jl`SU}QT=$fimUAvtaGsfO@ l|"SpՓX"3<~ɉAҹeAx3:kF׉U(HXöjfϞC~?DBX*]x, <h  H6ؚjLei|=x^'\VlCF$d'ZxFXB5A-DMm̯W2=(Yɴ~] A[Dkb1 |.dV?nwq;6|;PV<=BI {w7"?[[w!l!2D`' GF/qhMuQmPŧيÇ`(-AUx Srq`W 'BiA]sƌ $:B((E{!t2JC $d#3=^x)#`LIIDQMG=306׎CQ2K5҅gWWP0* M'6'1j$;d)R#<&יkT˦!LX'NuLUm:rf|XHF#(^0{>:V)نŊy3H}Qc( !!w\Wyeܲ ^8|yR_ Vpatt{NVa]FՎ5h2`۹=HJbÞ UكbHBh^:5='Y w"˰iO5&ΘƧeoN=O>xcdl\o[:{+1ipz:hjFfwrfPFq^*M !%:ڣ7R&$]F2hFCs@UhF#xb3uc~E&܃[6`jSQsȎm8jb~ѱ64tmN#]dt<!|~'r˯ÃC[sχqX߃udah`'3pw!ހ)ţI46҉qsa!*Y`ۆ1(PIeaRQ f^bڬxsw!(Wчx{nL.,?=-|B 'q5]=}hV[o=8y-z>G؇C]] NG0vv`a"ds~}1&LN\;s \Yk_7e%y_ۑoem^%|˒O/g6~q0I:&DD|p4찟v`/Y,y.Æի%`-T{r*,-صd[w%R[v޺P4jtS=zBv䤸mSW{*`KEM Ƞ97mfliqT-8eEY,l${e$}WEV] 7#^9clx0IH@ҹMIPiHPEfv&23}I+*oz-leFfqUU̜^ ZeN1*ÊC_eCc8,)Oͥc㣓j,3P=[ssiXhE .g%Ywg/?d= >^ʭspۧŠgך'0mRj|aAi|,Vr##ɍSh:fRIACȢ;/ASB%y_c͎jhH9Qo-K>G%B3Y0wH)<H1OvBCwqyqT=|}=&" f4OAh1XTO(osH?M?2LcBxm҅+還龧0= N̚;n) Zt)Oq Tjj3ς+ MJV>/-ct)xU!I"9ꉆP4=qx8]D{Zt-cw-;n'꛻?= .Nq| YʪYdIY,fb6G)NW|Ag6j"+Uăe7:|x?n8} H17&<Dms"nS |K539VW8Np6!dzR;6>m800Ou7aAl!/r2+qgܜ 8X{>̬l>O,x4z6X43S . l{Q. -jQ_6X9#' Bxb-xkه4ˉ廠X+\S3O?w3Mdg/II^ q:e|i,v [B@$zT\^`6,,0O}y.u_ģ  =SڏдA[dlܲK(+-¼9X_u+fD38F//HxQ_c^l)XJJ 222q@,/)dGJ Ge-bK -4t^ΤQ2/˷3 IjđBAQ<QE`x7y.78 ݮnQBA :{kI.d3\Y,2Y&C])V+d ȖsE lY S9*^2V6|l#/F'.9Q"asj .-Wdi-gkYY ![^r_!%,QYzJ]=@NdRH,7??뫟b FG PhFmY(jz-5ZCPF_ ,oOwhZ(ӳQ(b'a)wi[lC['hXnV Ydj,myR8 PlnDOpC=mz`Wg^ >-]6x酅#]|%p d~gY] hVݎN˓]6}!tX9Ol՜A :2DΜ=Yc<$c>wI0^X$$UGS'"Lĝ5=Qn}k zV\e$[O#7@k֤ v6:`wo| |?BCb -5!2݆Ջ[i}58P %PNNK/SϿ#!VDdt@Չ*h=S:Yhه͆YW͂C `h 3㊲܈^y||l%AۄuH7yHSMW'6UYoybL1t j+[6GODO$e#w2²Rͦ+Q)⅞1$%ڧ=g} R`@^j@`Bdk!X>izYug 5Rz^iHN Gp4lX!mqv V}tQQd&TݷUhS>ڏ?ʏZ:_SNM#ݎ1xz;Ts׬R̅ EQpO-FJۗM[#`w{{R6(-ӉXZ*SQ>) l$VB%𾭫qTրF.+i=h>coE5G+P¨,S2`GmGn %؁^]wbKiY<m=>D: JJ ,{ca{p]-weoGe«+8%Gj"1c4ݥI]G'nAU|2q191ZlM H"Q}G=70sP)؞G,@ }m Oꨫ5q`eZ!7+ ~sKHRa%> kAG}-wy=^445GI1SRtQ $dxP9 ora2BT>cZjeRN%[%7]B133Q{xOcRa6r C胷 )Fޔ0mX䍛[n LJal> S0i4G}b<|c9T>c(/JJ*SJ=fnu1ԦxxG1u(LuC'?V_y3354܉Xt48Q_O7 D*I2 k&nNy |gqۢHNƸ\6O? enw0ypm" ?K`{$^es G{q͟vrF/]wӄwck i(oւ|{p =Y> Ǟ=0n\ 7ij(|L;R{Cˑ=wE7!EFDdTAfL>$Љ7^Z)}[7kJ,NtZ_N #3#W!X1*ڛѦcطg?Jƍ:H%YQb |1)Y6~ ޳l2)\ZFzΪʫXi`x5GfH-Da٬,đq48gcTY/C#sw;w83J8C5MxThMjkAc!,qE q8SR 10VQq8tΑVyZYC7~$S.S\Y74<< .W z>ǿ>Dl0o4ɇ돿8ʼnyaax#7{:9E0ЗO-qͪ#%Qyg+K"߅Bq<,'L#gChii=8#z+ l`L >SFq'`RBz/;4Nq$DG"O/+ƽq'%X}l?Bؼ4{4q)6a5/0fiz.PW 9cS:ZwFڛV8o lTفVk"fL)èt79YUNyqX?=d>/w&m|Vm_]}Er [*;qKn==ܵ{vsℹ@Z<8N67.A%elSB3Zzmwը813! {v#(eG#Wi;u_Ɠ4tP2! ̍%`h\uύKXRnmq([vR;5s $RK K:$'?h1HEUgHR ᯗp&%^8]TŐ$Հ0n)N ?u(L38铀`sgEJ`68铠@AdfJBS7돦lWYKqs7@X:U;,FN*^EOkEqz qY:XHb6sCG7^7o$v@bzx(I6*Z ^[Ҝk*| l$Ï pe!3%EXkgC8OsFAeI$D [B*2 PR灭0 V BhZ/8G4H:76h:ÛWu˱y;PA|kv~У@o̿{VVl'Aecۺ(7BGN?}sp'&AIOEoKK,Lͦr$$ ;v8o7'؊̀&C |k-`w/ǜcv8ضӮõwnԷquI z=&A/^sØ}dڋqcpx31;ROI>f|R$ u½L޽~/?wK־ T+ KEē]"aِ_ʏE `ځV,ӳ{ޏÊWƾjJa+K3g NM_xnު&:ԅni$BקbҌ2㐘W`ba,BqY^hhl9! 1w:%ޢkBwO߰+|P;i+ b_6flٶ70lâ0B$TUjC0 MضDWkXNa<̖r2\{5Ђ!}BA sD q{eoX$$Ifv||,14pAb2@dvcLiCp1@^wfa)Di}mTXu6--G+w/*8 f|wB&Fb901h 5CwH>JhyadNb允LȡK0b2 2n颏7d| rB/'die%ۏ7 B+\=},ؼAWw 2ˆ ,Yb&=6-CJO_LJ qbKY#i ,-uÏa[(RUm^+)?f;b!EmWJO=~}/C> =6\ 6f![7Vj6 A׸z(O²%%)ێ@ϝe߫z :k08]㛭f"ieP5-ZX] xJ> N}ZCjHAj$ѳAT&PǩlG2hfH%1&@kb+ vVEBϜ h^ ԰8]i6Kie)Gj}~hBVBRA߉=K:MO8`/%@RA~}h|1 ͧ\ 8i}ɰm?<?E%ru bsM!R :PE# G(UXfsЋPaLy7[ '!xZaMcOW8rUG?s3_ q{8NW*WQ]ԠzǦ;*7w4UK$BY~ޗƧ~{l D?u 2&-S $hE#3kG qv!6U'fV_g1Fpx'"flE6.ernr܇ ]yxiuӣ"!2%jv NvCyc%0[ijRiPu~d>JpU;PRC:`aXSX>9Sp- sEhƾ` :0aL^AqzyUfE8v0FϜ^d\<`9lo.Xtn+8u=kBrVL*ׄ^uah5,(6p$TTaIxO=,.u|hۿA{2< -Ą<;֬ދIp}8PYLw^ )#=- A*}pL[ʝ೦cBQ6%gs:kZJŘ$U7^]ǀiסg;:s`{HM؛DɒjɱerL>̲@8m5'PZQYipww"苢6[6`ǞZg†Ol~_!t KtFP(u2G!GŦGCOmیm<ȧ bA,[5w ,+|t",l\I\KD AZV|{<Ϣa߫,^BM+5c"ԞCYi!r0nY=W܋-ƻ`HI΄Ub^Sugڱra_Diǜ2 Qǫ?VoS!,)1Cݤ|MT>"XX,5ݽ#8x 5f/^m. ;WQ|#=r׀ 8Oa;o+,틆n{617-naQ%?x0vߺk?rJIXd*cH*ĐNAuWb>&5hn[ hɆvSzb ,|5xX2!wEdi& qqN/jhu$GYBhhT n F4F&6q[F$ J5`jh|p FGӸiZ%9ذm]7( ]-٬GNd`G}a. = '#h&׎[D n,S '2;^zU=KMm듹:'5_0$WS)Z R~Ʃqo2{11/# C"ϊ\ƭG?2!H⤁A" +0! wZ^$}D^ADc=cGeGܺ0U!:~ wOl҂L8<xv.0 toZ qgB5n87%bG@?0ID3#!)e̚ bN,OVx/ %pmL21j=c<0H. "$}W8a5|j! tqBjSHN*X|I$\h#6}$JEmϼ GG8|<8:>pJu#r 9& xE3D9'a`:qTzoaBF>*bBqX}TC O1uЩ5)&M7Z}R AuxYwgJP*$ݸJyl-h5p8wu,ZO|ִ!0;p\'I?|0q3Z0/0{bcM"N:V;ufbڋMY#Uđ&/蚵kc E=)eaLO1W.%M $n>#\}`>yc< HW4^ij3T^Ss6Q\"p)8&ĉpHIIerZ d2;;{Vjj56oq=1l2h=& 0dG5BGO99$m k$-1 :BF<1.=7fz0!`,*340=yH։p$'bωMuJBIJgLHB>YHׇe{?g"F}m|JRuhn@CϓjU- ;zQUYc{"hCMh FAk2`HT!ѢFWhl쐞mr?pAgh0̉z{Њ8 J$بƈTg(L Ձ>vҴPK!h5=aSѻHuBn֠ :s"BC(gCZ$h֒"(wy,S o ‹.hz;D}Zc}&XHu^bwTf\S"Ɯ9(W1Jӊg>Q5Df54Fku?bhȃAAlLf\gO:݅!8+V#2=5vz(_ݵGa8u V.C' 9 "*|,;*hG!#8y08WEwtM/\/>zsL 45BkLEy><OT,;aq$|=\W`I =1":UaxB`eHOM?n?fUg?B[m k:a?,vlf> !܅աiPD=.j_hE/|^PFhdḂ~#Ax ?riỉ5EX z}'cd%*rW܏ gF4^]a*LTI;Cƫ1xȵjX t\u+9FWϙx~5siu2!ϲe磫:cKNozm,̴iQLO ʲ=$XwKGb8Q8e],s8`8Vo2Dy bVU%,zY Xz2 u|A1atHLO)@Ώ^c:[2Ɏ;; SI-Ț]tE>+ )69A"BxfM׿O{k#3`!T Ǐt m"XIK|̂. 9َ!ҒKEI\$IGI_ vҋÞhAV#[ I(WZa1]yErq x!< Ȿ34eG?Yi &_ECcٲDЄIQ7wDn3 aB{I9{lܑVXHJJgM+ =-/N# 5]Kob*Jӏ<,@+5 59Ԏ4?V-˳Lb.!3 qO;Fu݉XPP~#1%WY*7ao{rHsu=@& ԼDWaf@Ag ʔY-WD$[źfl;S!TZX% Ig>{J^$=L#4'@)cVxEZ˓I1ʜ4̋(GNCjMPk h?ƥؒ{Ԧxj0 BP?@%8{>C@"tYDž.Ze3O@X9z$KYZV?I!?{aƇ8 N/6?-[A災_wv;_< Z>h9:mqs+pX4 (2 ZgޫA|X Z.7߁O u8D3L䴲1ᛨ/ J`?!%]!JK+HGpAtص'+MJAx"De=a6 ~yn;(+6c0_ߏao |ށxe[7nNůO@\~4dxwk^}C;ݏ cm.#/"EB{](Nơ_R̒t(B=x'Qܥ~/j@IEڻ|KO#Pn/YMW#zHP_s}L<$taDl1x6~ƠY ^<֏'׳XV-g>~/qU9A MJ)6z"I(-R]gqϧ>{{n9sVjz{ST]5ܿ#oƢuؔ:}~ӆ ظv!*Q+%ݻ#FwGN i?wWZqm{k6#Y- Fp$赇I+޻򌠮4WDEA+7߃s߄?E!vO`w6lwwNǁ݈l@CU.ƾۑUAwE+V*ˆp_/ҼxY7ˈ}xe"HMT׶"H9MDW1"D`<߸'w|xܞ"4[=BG@`č9wav!hHx)n"(֌^{ AGtTc/[[q塻7{:ۃxp d~h\yɦU,,;CZ-,9r +?W= j 쳉/fopU>E|L}!Tه?hJJ hoŦ'>g}-(Lǂ)տ]q  KzJ}v\O:FH$sG(ʹHMFTtU2T6%)pd97a+f)EEkR;n(|D\nxٿv?}ز iI8{`\Z#*JaUt?u,4F, EXndؐ}082 QlAk)k\ o Z  >$eb]~,\ G_}'4xU>Qң{J)zP}ϧ0~ X|2Rf{7,Pp$!489f`ޝNa;*.DI*jj1\KJ>/_9s-=wO`Vy͉(K(xV(툦΂hIvHZ5]{ccşB`ff`Z×̳_G2{&|U c0깞(>HnyiJ|"<wc]HbY%B0]_ Eqk\@\мNtFnHDnXj KŲx 3X 0+#X;^Bڰ&u?-}*X[~ EZ^( /+rH$_yI~?3BFm+ǵa>!vʍXtzwPHԐJ`2X>DV~&VS|>yf+gs9`B|暕QqYSC:DiXmh[*NS-S2\jYybK+{Q8vw{jlf|x_sܡ#`z'a& բ@8T{.ak @z=@a0MJEDdeh1xIbʲUm mP;PQZD2"$5 (e(1 (O)#]c; )!_mq%_MB|G QG~;MjŸām!yF±3XȤ`l<ѐaGͫ|_TNP>:Wi3~K3 HqY¼CGW%ŒC'w2Sh,> ) 5 g]TZdHڽ܌cԞŲ%U3 i{Ede3Tlmƞ BTgEwqJY Qև ŏԚq( n'm2"фeQ)rR;2#j㛄0 ?bRp%!So&]].Fqj.Ʋ8"M/AsmXZf )H WEVAylGjaυTNe$N΂#׈*{[>{ᡑ7n=d3(MV]HF# +a{nM@An6: h|caʛN{A%3`oc|*!ׄJ粬3 V.[33V"xB^WICB.P,v[g׸BYfx+D#z-b Y*Ex="?hǦ=q8B!DrZ%4c[O^='6FV=~xm0FQϺX8!3G3[\\后H]9Z9oЍ^9Fk^߅c *Θ9ny}x-@㮗]0%gcLL:>ڰkğ!|۱ =(]ͻXe58Տ|i[|%1aE?Fbg4s ׾`?](D#>c_ w݇8ƚU Q</sk8Uw 7aPݍpL+r)1APƗ6CP0V4ܟyw?c?΅ tN)fLH5lE>sXX}>&Gv6?nX5pZ||&7欀RcF@IM<^ox @Z;k+^YV D/r n~8܉pǕV ';A|Co4MH,(q`Ued6Z|ƍҐ,"U6#qWxϧ5Bht`vgFd|}覎%fqLp_N31)cDo,N`&>qLV0TqZra`V>N=pdHKKbl,}}}pp8 CFlx=|l,!9 $qaܗeŊΕ*`'.@Fʋ0gui/Fcū)n<2X,Wlad2ɾ׷y&V^RAV+'ctnXB?L?<XUw7@f6hѳ "-3x1!zTZ^Tr  in"O٦fӝwci#A <FmN##&pMl&{IՒX3%$X&J"(+6Iz0)Ҹp[A⸼:;^ĜHEP-kgc0k-VW! QBdI faz`:gVT$:h2*iEZ ^SGV\! H aۻv {xYA^%Zɕ"aqŅ<E^YS+Dԟ<{V!28{8V:,{RV8"D`c:88*ܞF,(TScC;^}Mgg6G'a |grmFى?m;݉,M BJE5 >_:*2N$:S Ά<vìD^y]$ق]/ <ȶJӂqV -k_3g{ۯ!tzppΞ܅ kDx-O\ ~p5m-Mʹt8^ {]@`-ۧL 4%XAߺ /sKE4K׏ճ?@8gw !_A1tJ3|!^WVB OnYZvv*9XX^㰧:P؍lDC)!hc~f'F;!H@@.g;xx _p8Лb[?~ZFGQ-,g Ah[SCȓ6^{*bxJ5Q!B?vz\|Z[Rfx4ؽEH,t+&T- nͬ֜ G,~2Hc![U?N Nj~_+,(njEG2Y#8t,{%B+zq?<`†cQb%HZ p VlXVM.6q4R t]XBj=[TB;Z#vd=M=Ye%If!?,vua,KEpXb &ꎟZIr)Yspk $YXf9nZ2JDbdVqob{ aG;Dz YE%+9 ]!PSzQ CT[l!k3{!jVE)኉a9FDhDob""/7L: YiW.1q_jjPd,0jP |PÑOY[-g̻ 0a#IinXïA x1  L/#.A܌0oy<X%`#8黰>'s t& q jg+k v,.RPk4r@Q'++몜9$0q:7}l̋mJ`cas8谹,//cdo6abs7+9MxDL[ZUo13ʗ~$0kR{VRXb*!+Aʳw(kP]æXԢ(/F'IcDVRLW.<%?g<~#cdaҴ<2,\G%6i0&"~]#ڣ?BH}+WUU$g.zYIFb!Ďf$rbjI2X2_h766&hQbc8~DV.S.Ê!pN%rxO׸T*55'Z>x׿| 0Ƭ.oޜIENDB`tipp10-2.1.0/release/help/de/img/h_settings_language.png000066400000000000000000001026401274324046000230700ustar00rootroot00000000000000PNG  IHDRs=tEXtSoftwareAdobe ImageReadyqe<BIDATx}`TǙo{wU@jT[w'vrqzrr]9_]8qlq76`*z$նW?3ow فՖ7y3|}hpzs;n]Y(b$$vĬwBX_<J_hcFosiϩ,;D~:iѦW3ϸTuΝ׌MZ brId ̤Ս1;3>e޻QRZ>KzC93GZ:K[_;fΞW*փzY"RE/Qz&0LFϨ=L@K?џm5,`myuyQ8s 4z9feb]mNƈcQо4A1ep/P'4F7C=I$(xhq(}'SV?BED=9W9=Wϼ'o !{8rY-}+{ZAa5*(جodVSf HÔCljB֥`MwL4Z9/0{^]{{[#5 g4=f7L؟^뙿1vFwfCh);i_@{s%ČQApE͙sd`D,j681$DkFKj}$>(}QQe"Њ*1dĎAO{1%=@|}~WyX{9{:7v.'DN%{&?0i#O8|U0!*+0 !m{kv9ۛHNi4G qsۨl^ (7̙nܸKʱ Dd'%PC2p}Vx E ;Q Ti7 $+zLsV {HQSֆ#B{:Z|fe/F81`sa 8Za~rnqSOĈKlP:JB1$Y9GVR5Jb|4*zJb'JTFo/Z &qb4mDy qm)3ry z} v R]bg1뎺n𞛬-EAZ_咇# 9Ʈi`FWV( Z()/@CoGHW]ٙVp3lv|֭ٳcK\}>-uRXvdMs )QȾ*8dCӧO-@zW3|YEI!;)1!8x!!Ys^ԇG ⁋>g>&M< >}T^ǔHT45`)JII(ѥ TrL.mnѻ[KDctAvẅi^%:54*%~tt@`U$Xىbr`gViC'BX?Nf,jD ᤴC3*1-"Xj8H6tyvoZE͂5o>|"d}'=d|YeMIt1j!TJ6 6.veNRz]G oبnb%txVvwK{ L8W54#w\.{'h$>2S2B,Y,ԦHFψZ-iV5tU %b1tw#m4d|Èyھj+mS"{)jX $i1|QJH*E$D QbP\$1^V˘ԛHb1(5flo`tnlʀaggYX5+U5Įξ!)+^j( a-ȞsaIAֹwwHgy}eϴrTLG=ݒy6^\xG>bh1JgY-znL؈6}$އU]BX?Fzg }U^`Ltv1BV.2WY w=yd?鐤)GVr}G4BBKfV4&(a)J~㚪T{B]b6 >m53MN} 1ηW50ꬆ҉=k??7f=Z&^ؽso}Q+4ԎZuԎ&5mtIf'_eVN""aE'vh22hөSх>Hw߰twfoYmZڴ=rtQe(|zj +6e0ul+q\!)A KDGULVCI_^*^sY-ȽVLuE@&TU#8(RF- >G"+|ޒk<77"4ckM F܅C`51ZQ}aUFw~ɅSvV$-UH+$Ô;$. (6;dJ:-ob wDcք GR1L0V Sœkdv |!+7W)z#ֽ';| m4,%en{5U'̓!0&qz;ڜ(py URi^ʟhPV߈HMssR%shm?Pg<}^'0k.$ w Ya\A"ȉ"b+8?) #kE4x9f2Yʌ{sJYOX3{+6bbE7&u^؍-8Јz*H}ֆ١`@K/s4bEA!r"Eс͖Z%q"آ9k'C/_bT&2~^V{]2m834ˎ^RV⽢ĺgF^0I0usqu.DfĎŭ ܳגl̎hE8 =܊" ې2fQ7v-s,gKB:C7&g'1I0,D=&D=^~(D SYgrva0Hą21θS/)=+=CLҘbOҠq.1"`QUINkM SL/sYpvNڏ'z9f<{*eD=l3qsc$j"&lqTۜu1&›+#2#N&0f2)rzH#_((\ZiB"0PCSl:K4 KKCzMvƿۑ$U$@N+=#L^Y&iԥnRd)1Ϋ(g4IaaBzTf@Mhl@N$J0EzǗ8wb7 cZ.\pqR=:Tu+Hr9u`u9].l ;6Fg̪fEWG;$V&.uD}#1Ⴆ?< x\b;?km] /+NӧƗ}?lt!%% ~s^}wbHޯQTvA ̜0k7 jGfF,#\ojR|S)_a:@tyny?WSS #T+寧Eo!M|כO?1HݻWơ~Eg<2;Ʌ% #UOax<̚;.&4EBvp*7#6LˈGȅS'T9YHu  :Q#3 .< vD[v;%GQ;WAD PO}'zbąKk~Ā|EֆpəeLu8RѴC$vyIJv7^Z&Agr uX!2j$ͅ}A&Jc d þC5xAQPe'eZ ;dZ, PNu2AY={$!l1`@z3wel6Va8t_Ѱy4g"7|G-9x\BzHϵ &q"q(rP Qcf޻+3@mlr:PSB3@M-釴,)`&t jVY\qzQO:zi]f=//[8w2 'ՠ4 (ĄD tQ=/~#@+0R!pywԊO@/x< RȧvD=->#>d*Cfج5Tzz%P@F̢^ȵ~mz]s]b՛!h{Ġq /0u^D jmX iAj>]xl~t?#8YaFpg!5V3=x#DzzOúyo&, {g}< &FmB,'53F #("xItH ۋ<⟿ $$ Ō3>[ L+㴩{; Ձ()ԻӕfS'1GHٌ#"D;}+8[$Eб|;!u)zBKЕ!n27\{OW|HM?6)svHzԕ 0TtfA/^XpCN/QqmKh>q*ȧw՛ &H$5ʁ{DݲBE1,Ya@=v3=P_KFܲx L' 1þǰTZDdX5y0zV]H} \˛7YzЏLkK}h<$ʵ~ҭibņ~,E_0Po\sF4m`@]~gQJȧv29a&v^W5RoS˸k+`O=+l4Fr)F'_8gY7ciXXBxI]hOt8-N-=LExLo=DW%=`2<&iL7'qw"QRӀz7H)2VN} ]};̸B+fCEagm?I)€cPhP>8n 2Sc:uq-CV̸(VC xH{]&afJS"yHO d[Ý t37 u_g uZBøa! -ҺLlNY\loDhg0m xR:߄9-ϊ%&0@6 bm8k?9|N$0Tە˧hノp(2A'ҰBfq&C$r>NֵSo}+S20~t:}u r'["eHl$>is&КLRP+_~7 pSfOG1ؒ|U؄+FfXYvpw;Ji ] <0>T!&J'> -Dዔ!ow*!}{ leN}f$*'|w*\+Lt!e *Գ~ލP\.nI(3 𣟽;SLWp]9 6&-J\::8]ѯ̘%νH6)=ю  7aӶH-i̹y.M@&Yhӭ6Iv>V ?̛fW5$&1 +l|^ф2|iߋ'Еc1"$I \iɩ:n xMMSŮ)+$O J <;*߫܂%Sbf"D̔ǒ$La~~ww7< JW͂6m)i,TDB #!q<%{(%0T8^Wk}-h Gå = G ۼ<-jeZ<!KaZILLw,S~>1ޘ)XQ,C\ɅOe㘨,(q&BR8pp¹T %I&q(>C u܌KIi*)fњ}fǨa1=zfCdSa;vnٌq!c tP's`Z,2aK @Pͫliuu] ]sKbr M3G.|^BX0aB% Zq+ĺUk5bݎe0ZviE٘ں#+PXcރ)co<jY6M\v_5k0j4кp`!p Ӡ5=(2%%9Ѫ)tF{?5s܄=[!d8{SSh9݁7 as1…%LW/cE+BԄU`8ݶmN<)>XӧOj6+ ,v#E8 >v?~}Yw/C.:ZځC0uG m}/-݁[4 x3wݛm ՛`v+kWe2-#o&dcωN(m=v 2h~;:dd( uG?{;_5Mu'eb{4y{++0~1| h:O6|!GHE y0ׁn|'H3 hܺ[5w3(b\]O>z^Y݇c6(=)'ˊR2Tqj/P #+.(/,GKE9nб|ahHmSGA"x> >¸bmEM]-Z! Mͅ5ғkN9g&m[ FOFrfC5(W6qw1gҤI_SN{Egg\X;w{.L|ݱ /M"'Ưw߉IO˜q`$3Zޓ3~^k[uxự_cŘX5V9"t*f"UɨJ -kx3TL8Y^khqb;{)̽^IK#\XUl?o%@x癟Ó7 SۙUۉpHM߽80*cǎĥ\>h\JZE,!=ka4v|̒'0)s}o珝Ǿ_V:+2=@A"2 Þ|IaIV0 /}k:8|aTstI__5ULTkL$fH/>9^6md B~`r,b'@QaeBs#Ov;$A.Dgdd\xY, EjY2Ѥf]It6vc O½"^vRX\UD`U w= 4MON^ &@RXګZXUMw)aPO6i@Xu`N(2؅1YVTU*$EI.\-Zs.%ʵSLWJߌ3{A_,|E?-aBfM \"a&NϏxS_aJV ~0DmBND(O>}8(Jgs :L28%p(n*9h&D܅CT4\ ' 1XcFbQ4yo֬/{HxqG`ܸ .C˝ qHD80"6jHϽ@q~c^9߸T#;;$ "FHd=M ni:Sw +<՗`:H z\K5ӫD>(Ѭ[82SD$HH)4͎0S݁9&# ,+4-fڒ1ga2ecؑ?|`ؼ6.&*"_BCi /2r!$T $N7^i}(êqb^HD[BqdY)>,0ӥ(v;#ՀkA=I㺲"+bn'9 .3"q7џp2q8̀5$d,ҬPkH]ğ,6-"(ٯߣCAY%$1!ʞPtvtv;i :|pxa!6b(¤Pu*|MBh\vn]͈$K _D`Rvg/nK|'i_g N!T{q.[8Һ Z0!LA#^`u?qZhc/_.`jxd SǓ1{6zѱg6d[+Q[߁ʪRҙc8-a4nÖ*8ɝ,7ĮTЎG0r4<;x1f 7^'eyؗTH5brL$9{~&w7v!ڀpŝgt5{:\;y48N{Iil|~~.n79} ?廘0oNoف܆5ȸ{/w?,oRŃYa<P2 9uo)xlA%:N t Muƈذ}#)#Ђ2,Z[v]oAǃ5˄cę?=\Hv/x0N]~+hhz G5ә܍Յ3ǡ=9@c$EtQ#ЈW1-ѦZ0e-U߇:x4x Ǡcbt<8]̿=_S|hkEgXGn~9Fʉe}Hp1)|W4jXճ7b#e0!X{f\ZrB"ߡ@7 Ije#4 }]-Ӏ{ΫAB3On.(`nc\yje@Exk3]DEE'²upj'M {>@q^dch^&eiֵ 0GܰϽ #'܆QF޴+ 'نp״!:I?46٣V -ɢǿ/>r_lgLE]}{qp<ܞ#UP&6CWnpxaڽ-@6d%H A+Q #VE$69◾<:!mh'1IL !.ZGL$ԞG]U3p _{'ܕ*d̐555c38eq,>Ѷ;vLnEgD"G 9­._#·\ڼz6$y\}PQQ*qw<*!'FBa[ϲ9kIXũDQֆdr3h8y 'i'tj:qD !!mDZf>fVMj|.\WS0ױZeC:.;0ɂM,v'`OECFkS3ot(2EZ8R39>(L$o$#Ag 9݈ez.!xDs)R6D7piRd%6Z0|P2YAa jt\>B,(V`NzSOȏ)IH20k%`_Ĵc~_@Ȣ|' ͎6`[o]v=+'AvnX&pv^%Y0yx*lqNXIYᵷ0&,y 'SEH2M^^y'N{vB:QS >buFET8*Pw;,~Ó ||!?*Q,]߁ x}c71 Vä8ՂIn7h4@,&8p Y\zN_. A_Q`F .Ylڼ_aezus0opAlvϽ$|~X dw6-8A1Xd*a| t72=w7}q7躎ޒi~06cx=70 Kqz1,+elX{5TEKNڵ\oȨ@Տ5': c>p;|+㻻±q=?Wg ,vh>*5$yESO>o 1tSL^c k%#~rz,zo9ЉV?$ɣcjY6^`72W'.CA vmE%}>{PlŌ8_&~mdeegŨQ") r%DkgC:|M!1((pal޼B&iچE;Zއhu5ðӱbj)F~nHwӐH ߍ絝խ*%uDI UIo}`} !:# s`XI&NN}xLR%?63.\6 ep͐,$gqP@/>TOF!܆|{=?~_ YLp]HR!^ 6U]LtK+.ĩkvݮxu|wyM-PaG"0B8\PQ:l~vߡRdDؕ63W1 zt?kFq1*)ǽw`7Z[=<z ΙDP̸ه(|YZ9#h4g5LpZ.pqD^X< t"{hTÒVrM,[Lԇ0<c]V&zAf30QMOϯZܘ PX>^xg+ˠyj6}\pO^?=V3qtnvV+1HPatTZ2xZ|yN_7yi&Vhm<=¯w|]HqD߽҅Ɖko^g}h isB:A4 Vjx܏7[>666 s!OX_Ft 1Us#INw"-= h!Jrl8y$d^ؐUfn: 6E܋NnGZjD79@lRn\l8{>Y2}M\=d-؉vHi)#hXᰲF[[;tp)˖kG頚IlȂp37jq TdxgD YCHf]͍PH t:E?񢢢~=Āftp& %E@@ˆt1Psz# isO7%U4R h.C4 Ң%KfZy)J,àͺ[,)]CF;Vp@ M5{gj:~4neWc[Îv8Sj;%sL+-%.'HI)aP10}  91=J,)ƍY9735ȸ4v(u_gJ$)bH}-Av7dC,PN9V 5kX_ŒebɪX 1Qܛ%TtV>ѝ*N>x cF:šmkv̋MFOJDGe~fϿnI;YHqř 1TN$DFrR'L,}IS@d6lL:6r\lZ6v |#I͝ \b0e=8ɾdu..ͽ c0 p}r0 6ЉfXƺ2 @?x}X%F. FX䯥hgng [yH`$gi @ɤ/aƈov7VU c#Lr/d-eLzyqlvSPJqqq•r:U1 +bLEK~mS:|7JqsHe^YDLЭ'M;ĸHgܺbj~48k>N';j@1G3($1p B ;D2p=8t '[w@G`8̀@]dgx(rm4aNhmUAܺ,[x v07V>Y=YU]%(K!0LUd tip/]X0ȺW ܭ?BQN7NȉMߥ"`g꤉DIKʃSbuS((W%e pH Kj$!@*0Ky>P#1(WM$v !uȅ&5`@0d_T|P$@cP3"&_ n 㱺j(*fQ0SYf0K[ 6_ᗿyUd [evxCAU43PBLo1eDcgnܓ ݆SuP\m(L1#^H~mgN\s\,ցm0'$VAY*lVC_D i8F,3N@ u3*"xwW CȮ 8j˅_u}#fWP !ś"/^ӆH,p;uvA9ĮnVSpLvr r`s ^lo>I4!; }lN >ߏ"Avf-[_6cQnЌ- s†+b,;:QAZ +ՒPׇ+ʉdl]])e3k^݌zdjxnۅpR.MR0 Og\LKVC(-X4ZȼH4IIn,Ylt=ъ=_q]~!mMxOL|}i ډ1ඪ,<{r`DnwjQR _,pf̟܂OΛ+#}=R \3{7V^D8m}밷7 y$W8h uM(kӁ>>?G\.E{"Z]ĐpyY͈_# G$*NPeןUVod`=ꗰKÝdӃUXq4F]ۡ0|L%ZN#5N Gwc+K6c=xN}‰ӯS!Zܘ4i,N!Q0?,n[F '8 `C$px&/;MElʣR!13 DLU4bFk#{HJɀɸ2lIyf$1`yyIªIA-j#ƹ¡fJ:?`Fb)Z(b/QH$ZbSek+PN~fCfY˫qySx`X>>D[6)i0FclqA,l$ЗHF}H9q풬[vBIl'ae?֔%rF8z齌` ʑjHM`d0#\!#L@@܉Hews3&u`FaW6`bθ 9g&f*bbr+_),2G@z-OCncuBpQHM B3d@BNyAs~r$3xh|3ٗBNEG'c"1aToBHfW`[}ȍ{Vu[wM0[`63r ;aP$_ [eNjnDxb.`kiil3 &S-,׳ldb&%{"X KTRŒ82X+}yr4~>U8p~U "Ζk1rrUh퇸{ƅV2\̸Eg h[% !ç0TCt. |j;rH-ǠWHL`!ɍ\T,( |lxp=mzd bCAǏ4aFwLPfñv;M)[A]k| |1g΍HeDقp J*)تB]&Y'|ᆃXU %vn`bxh渚+ !X0vā&Ls7*@FQ.,|E_E`N7PѴ:ҟW©ڡOR# (`be j -O2㨍P? oDX qgHfj/z˽ 6g~q_c`mr9!2 )[@x.Nk7!|2 +WmEra92T1bx7PR5ä58؝{q_nc\%q=)|Xm mEW[3:|78Vߌʒ2to\U'1HwW6b1ؾe%62 WP<" KWng!kTmQ"N'p4)ϩ–ARPna4qtup7mBӛY3*uxG%]i @+V/_ʈULv) 8 VsIqԗ!兘<7yprᰁѕ_eULrR,~*q]eߝg$zElY%ޖ`e>X=X.,.X6@ BBql'=.%ْ޻F#izܑ,r"R;)w=Č ̞uY-^zYjwnͥ4r\X"R]Iim[Gц`R@CTdVI dBی`j +{M"B4qid# z`S@驂IPFwq /dAC?Ї?7 1mL9yzHz+1 krp6ZDl9&l:)XhT8 ^V~|oHeBoH|Ϸ7;7C< MFɺfm˲y7Fj\ ~ߊ{>!XVeeV85 '- vQL?dp---###\1&AwTVv(sC=nn/_>}G̓h"q.Vje۔5uc]>HZDFRo$k_9l9A=~ j5a*?ENA>~?h0_"'2v؃ttd K@ŠAQFPk|%2_X]~f{lCXR`bɱ`{TkX9Qj>lR>uy]>Mdv9"HOs߆iXdqy9a6w:&xQl/k{blQ^`7>>2] &b\Ss3cg}l|Cm0+^0 c?W"KIq=Es]D;1]W`a=2ϧysFZע0)fXɦ'&2VP|s}v/vBTS֛`TiozЩ女zxs 犲`~,&999&~E4]g#񪔢xu8[Iz=nd|Ec2x(Ei1_v@"j3ԯvEBVi^%qNJ 9!޿_`p*v[tC$b oG0\ףLx),ԓy[py`3gxu)t2Vl+t ѪI C#<Z; mou,f|h_H3a|}x/^BJv.ŽF>y#cF E齣O4*dV?_,lk6bF1lʇ}:#xdS6Zښ {?q L ^uwߍd${{xP2!Gtw@. ,L۲~iVa D9j5z+*hyL0,';>1ќ(+ NE)D Wgpzrٟ_ oϘ.Kt ().\NpL]Jr1== نNAKnj8hB8*Z'k8(=(#"`h9W' =_3J:s\K;Z|uqC`֏'s"4ցm{ f&N{r 5#EQ>œ]4%ʾgE FGĒXD%gll '\߃ݧ<j~y)#툜|>xYs ןeS= 7}r(byoTJJCv O#y$!KMͯPb487~q,{O3V-NXxt5 0Pf;u 3-_^f,NO k:F4|]\9 e"GRԵv0KMH/-k‹]/0f,CQ;K_[sX 5'NUO}~y?׊[V/X 8QՍ/G=8/cZ =+VUf?وV$q,=F?Vm\4{"ꎾMh?iZ@+qgpŃE9 n sO|yqftہzl8j H cBiC1cj)c=&:qՌl)|WǐY饫h a-FqI)bK7fb(X uMmrj{\x!&_^k `kz7#oY˜@+I bMaסF^g'"7-g*#;ņ}x xƱlĘXl1&شhǢ%ː C\l~kvd$YŅHx;bǠq!#WTl$'Cp ?V$b,]V߃E$6#Vn!$V`a'&P(([L,f'$@ $$ѿU1I% ȶwCoj#: pa /jŰKXCK ƞX\T$XJ.WIGNް{30:؉)vxEQQ3*0J;_ mj1Jk63> ƚ[i  ȭvr,# s0-_Mwm5l-66 RUuwot5C!;46;t›50Jޠj0Syh*SiZ`K/`D ąx0=x iIjp!EgaJ+mC @贬CO TX:+x 8݁UxANA.50P9U\Av%L,ֵC8m&KH<%TA _Ýw3Iqcc1̎?@v (x2۞"z?>w6B~az@&~O&Գ S&;F!4d{t0@8̥\תu|cfENVEbV-4&V܏y# g VE qH1CrI1[M9XJe$-~APQ_σHYR2U*'bϙBG4Ic HKL1 ) CϊI5¼ I!2Ơ3jq/6~ARqG#c4ƼX1Bg4a6x5~8 G (e&!$2^1`(|G%>CԳa4-g$bEh=N5@MCÉ33vCv?if܁#c1!}o<*6=kSG{d~qΝ]*^MF9fy-:Ʒ&k<֘zO=2\5=hƸt kNx*8 ã,IK")1vĚ+aر 'F_| Fm0#IBWgoBԆ*<`6ט B]rI% ctsBI ¦fKS;`:<CaB !jݧ?|ۈ]swlFȰıu-L5#6غ.Tշ##'4=p6 T|,$47%~HL'sC/Vq+[\|8@v.SLBd,k2KP)$sl"C -) &zfd`=R`Sz?}h:y >94nd/EEnc rWJx_|X}.dg9Ωp2nӢ!).jؿǦ?ֹp 嫟2HaA6,.g")yvXE) |VnE9P bqI%{qx8i Zڠ".xY+dNJ1Z ̅F d}& 0ͦbG!F3g OL!h>2$%k} ѵ䎈ab>uz^xA~5݋KJcN887 A3;<~|o9BSqB ݃Qs2o1&W] "$4)pbcal[1^H'si 7J2;/3>/݇ CdBL[PW~h3(ˋq:>Ǭ`jVac=s޾>6y-ܱ Vm:CJi @dW>5*blڰePJ)8g>ħ &5wq(U@tl41RӑhEsmX|L'~?Tr>oWµMG\ĹuS-]8|߿E~YO}.}BяaR?}cs\0*+ pZCU#h)=^ǺGj^d.,EsIyؼ ^G?nZ} W4tٸcK%FЩv$&v>;H%QCr؄t1v7u+qxrנbA:6,YQs'O@T[.ju^A: 1>4t\p!1 /I'!r9z؇c:C:SۋmMbEe9tt?ݝ=wj"ԏS{)gC8j߉AT.@sA?XoV"QR1?!R~7C6IRLxCsK'z` qEc_wpo1:AN4:cm* z! ED&e9ΎNc% #,!E5v=?DπӧOHi$:#~l߻ c* !KE@۲e%-*DʔW>zI۳V ߚI&I_Ha)-ȃs ^FV n!'%˗C"cϰqKR00XG9_ν8Lv=\Yy CF)Z.wu&6F쮟@fxiC[V7RxW#ɟvbفgSfDl{VU#'ad'cDݥsMp;`2WL(V\׷IZ_ɮ{Kdb-݄| wXĽ!Gf5tĊӟcơ#U1٣ ,6|F.kqq*B2x>±7jAF/. juvH@V^ &\͈'[(A94I4fd!lLўI}u&x)Aw  1) >/Mx< xTapAS*<A XP^ü<˄ 6X+{`"*B]xU:[T.@CWrcF"rivf՛}l'jI1)[v "VñPb-~Q_n/ s0ք huꑙhiǶƦl|c'\t'|g NEAxh>2Ite) ң1%#@fHiF$ض;L }cAJf’@0i&!9%a|V  C-N?OؖߋO޷}}ҘY$W~^=z {m$9XeQ{'ZOCy .OA@S AyǞG qo@9@Ax;,2J%j2enUoyE|D+FN*y pQ §v4y,kBhr:M*AAWPz%ĽCT EA4'g#!aXNY UN:Q>Eb&W7d;L|gIzUI]y7{ j=BAtj*($ äwAeB{yR< \{朤uT]5<I ) Pm;!F)J73yYYwV!}7! '=)Q:*t H1&$=Kn|R%K*2p|!e_NW|b!XI`aA?&''Uabd#N^:oE߰3d%-QD/\5/{2[SB6 ɤ{Ƒ<%[B]u< ]{10:C߶/Ʀ61lzHۢO2J1,`zFb{tŒux +w6'ΧQ҉wcY :pƵQPٛW?\m*bP-8ЁۊLI~ "(6JAR0U˚e%5؁o׋H(]Gn_ 4sjQc0d2 CHc}IX C5Wހ&1w)pg?WBOGZ:٢V#5݊'K@k2AMPj Ш(T۽x% _W^29@­eQ91kYA!yHhXfk}]ںpT:|ޱ&`4A M>gEAq#X?3Mu2H^u68Jsk 3\S(E0EA(k(E]hXhB,WEuR([3m#g㝩2pwtbeeYQ:֝Ab +xYo61nx'h{X_#P+Dԟm@Lz8khe;6-\{RLv8"Lg)TQEpc:.P!86sg9ƖvZ!FFϾ01$aTٱYks?^y4Avgq,[aK qrkGڲ{r81k0^tf#5Zq Y!=98߶ ~l{ʠc gk0kY˶7 GKQq׽h˧dG}K2g  ןi_:!?6#{h9GN8#.=q~wۏG/`< lx ?q>~aXxpUMFym((n\ZF򡶺q9i骳Hqèfġɾ5 ;Iz&reZO|5+ck@Zfc:Iscb[;]koX6ck],<VEݚLOβ(ʰ>;5͘t Cmou`@S 薯] G+ .("t! @BbT. wfAkN=Fpo?gb0mȞgS(E|x `#ؔo[;kF1!: ^hR? L{QUUgF|F,['ܙ3*bzls-T0N;hފ|F:P0_IXcc5|Gܨ--H?#9n،$T9oݤ@3PX H6;i.iAO՛#j[h0֭aV)?"/tԅu; #;QBdpIRBoݒ`9(!Xs lp/ ZqI?&KYZThvDTK$)C8DGZRd{lW+cjPr#$;ra5qQb4`(Ssn KW~U"l|uby4WaGF$$|0@ܰn:K1\ˮ$.flKEcv̳@csm8Cl®9Sg/_IgAnvٶҴ##skztB cJQߤh4bdddVxR>f6V6]ʱ1%&&0 51Y[# Leee]CDcfRJA$9t\1כɰhɹɋ b-3V^wljp7yqt^@fQRޅ\pF ,MaQF)JBbdT) $ ;Jte-]W{̍SIһycP DI*R=Ӽtye5~x6FYrO=3w]tYat(fq)2o ]N޴'J S]mmj߁l/KA n⧚}K/B\A\U}Rci xo""U2 x5e?BFNP 7~~%Yg.YI1``P\Ɋ(/-#Y%qF&GDQF!D/ӯ#nmqѵyX0 7^wMWkYJRSS}}'/NY}!IENDB`tipp10-2.1.0/release/help/de/img/h_settings_other.png000066400000000000000000001116461274324046000224340ustar00rootroot00000000000000PNG  IHDRs=tEXtSoftwareAdobe ImageReadyqe<HIDATx}|\Օ3]%YVޱ0B f7}/ˆ|1cm0ƽIny;H <}w?{7}45fŊ߮5@U (:}/F'):=ZEl,)ɚk6]X}P,7=Dܟ&E6Y%}֞~{YSc1gnpԉBx8= }gO|0ަo(Ip>zExt0Q4456F| /m$ɒ(\+.i5aG, by/ `}\~q> Z OYn*Qv.V34j#U/-'=z_ZOv=r:FeAwyz{h ?: pE>%CxchD`d cS@+](xH~|~XzB^Xq`;{}5ض8>'&Ʊaw8L{6*Cцg FT'$ ے1kU'wvye_Yn]6ٰk5]P4K C3ݎѬ=0q>^|GLg &Ҹ/0 { a K7!FD뤂K_gk'0 (0QEAeЊ *QdD"%*7C>0ua Ϯ*D@lB c="Eɠ{><`a <_qZCt Q.8B؇ztSŧw2 b`Lƥj#>yxx{KB;vl\Y][L@"lʢ ]_1\F $N¶ƫs%ΧrD:l6M}i6%]z, 8th0^"Sc@GvBD&cd9 i=v(F„ucxQ'(+}Gq$J]ް\ӅP1Y ETkqa/$CYm-'0f=Fsq ^xENj(G4.u6Z9;{O(zA!+8r䤭hz,E`0}E5dCuH.ېh_D(+z d!/#&ihL'}=QucB,p1z^1&'7? &55`ǞaʺnCn ҙ,1[*0 #Z8XB|!]]12Wu}#:lL5zE^ CaE@`h`3bM>Om@[~MoTސ~'k6qᛤv(g S,[]0Ј5^ՂP5!9Ubj1aS7 ^%ԕy=n$6"YZd&m0m|TjV&Y-&"?nO{RQ H6Ey}sqCUJV.|"{_PM&"%ac&IS )jQC!@PM&M%C֖01"X}Qi1l̮8t|JlcqzʀZ,&9 %x=ghv$"*$D<B؈Ƣ>k% lA̟$F&{hAXMQf f2Q53V*'yxd_URj>?*~/C8K|v^Xq^ Bpg,9̹^Zs#@A4v&reW7I{)n_'>h=㒵NͭmԙUW =䆄#,y?Dªˮc/mĊC{5f 띎Kol޾5{JnWD'FWֽ* >ittNO/W7 I[nٵ']qq}/G;lbE+/P~T昊rwܳ{2 U -dS}F> aah81ش[Y1X Sr S "ðƄ ڽ~&z&utZ AeF+,mI 1a5ZrBtًc-YFEܔ`K" e:^cE` @$MлIaxԝ]hW7npV]|W_L ڻ͚<7j|Vk?sGx68b+!L N|խ#J!uP3הzv>o w%~BPV+ ^蒮=&}x7vk_Op(| OVC=Tvo=k67rZఋiͤ :dEp@! -Dh/̽:~os1rJG?$$'I:sf%" -&BXA&ӲfB!>ٻDQ o[L`V-}Za,.RaSF䒂4Tm."cw{OK/m#zPJKGLfUKq}S#vx$,ݺUZSkT\U:6(djGzsߛ촤i ]̄ts9@5EOxVb,Vҽq4wnыFlG̴RQ a h?*Z,@h1ZY_";BpG1>+WZdH#V/ S?g1|M?Sօ1'\g>.L̒RwὉ93yX[԰s}PLPz#̒Ios-ť#kv`hCMPrh?% hߒ?@WYSd"-JfFG[4yYAMfF=6%%)4!I*!XV,[ZrR$gINMYͲ1!Jd<3sBfAgRZZ;-a 1`=#; ''GZ"WST9ڮk~ Q vR&IP>$LHKZTTUdSj\qN&A<}oߎj_%i5}t׬11eg"51ͧsyǦ6UY:aCX6ܾ.^}lj+3zd 1BkOHĮl d3O>(N0170]M,H\*Ŵ̄Cc]DQW=vAKL"夵 Y&H$M%-TbQ dq!$ic7jCu= Ȑ%$'8C~ fM3.񙨒A ֺۺG/d0fs p ̓6ah ^L"+ "_,4[Ycc0p"t,p Ey\ 2q隝{4!BG h]i\>c+c(֘ԣ6gK Fncq!C!I 5&Ax,l ?> i-q>TzRE4u3y<<"PWa6U m3x4Wtk2#R 0f() z c>6! l6K>06+Qc4v :1bcB*t=cQ=Viq:T}P`xraYT>uq Eb=ZX #ow_gYr%.GyЅT]2=QGPfx,Y6gD.9SܮLx[ISe|:?(rB {THX$Q/}xxK3&$$ 11cfhu{AòXagg'Mm ggaX@J$ZTQKܴ4N?ehh *2U>:Z|>:IS♐=UvT?1Q@/`zOcGuE=S'XS،쟧G;G> Bאּ=^#1M筡eGoDRf^q5*8VxGNa/lۊe|I!Ml𻽰m8²R j>x"|7~r9Mxqck_65hKӂOD7_E|BQ_;:RhS7F1đ 4!@Mt{mk~;8s/Ot/H{F (LsSRQ֖&(H7XU7?R1`m v=U(I+/00D5 r}b=,.ھIEp:aubpղ<_ f%޻ {Xp!wn9D[kB|C& *f6Ti$} )ln5(|/NA=w `v_== N_@ZNjk+3h0:D.[Utـ}:ii[fdZ׌5ihkko~!\2O6bWo#9)r\H e y uhޅiu0уOJ4q"ܥ'OJ6Ra'$\5wl+~jrfA|Jٝ)a\FAGGExpBGdbи?LLa/ |MV3r*2ٌԱ3KE-XIT<^T9| 7Qz46IǠ߇1pI(|!n)))Yd,كV 3;n94Q +Q&Kt| )Gu7@.ZDVJ"J r BHv e!(au8 *ZLc4)/wؼu[T@ p4Lħ 5Hr$('cKD"Pn͓Q=i<݇6a"Dpە")NcR(O}HV: Ǯi2éVG[Bz8@|Z$hü "d2Ar*P8sˤAFS$z*Bnm:ް+ճXރ*ճ`8 (TwJlGzˡKcʸTGQ/Qd4?t`S/0XIXޥzW! q爖4 q#ʯ?_oJ1}zz@ϡk,$dzT +*rNyvpT8ڦQ>n2Q*Ac6>BڑټcDԖwѷ` Q(o@-܌PyH{a:׉FWN˅֍D/%a*y|,+D= 2y!GCm=c[ný8@V 7Hדz>#ỀMr^:-'YrvU ot%HFRP|ndknyCշpG:mԬYη ֬H!,xzPqOnu@'{:Xs t{[,zl=Q%k 0aXTqgQd2 Z;m'Ðoٯ)#Y=u'٤`  GdSF5y}{Wu["N˕90?EAas?? %%*S_6ukxX`C H2򩽐ZOAtӻ{Ҍ BO z_>;{광v z= W7}2uQ $inT#{4M][vS @)&j,5`s$k"QSV_9% mZ -l}κ>%;#'%GzAK㿩)%TjrNkxҾ X>yr G> 0'Rw*0xwO}jKS934l4vn0q jzi )<,Ҽ^I<:f {Ss5uQo<2+ff ,&Դ캇O1n@@ z8=k,5b_٦ƤݸJ il(<\H"4uxhv[zBw FX\E 3c_Q"67 ]e/HًMuUV7@=bXsSX Az čpt˄0y=RAק @K*I:Kjh^|ػw/^lIB{i)vlDFN*;0f67gl\4~_d2#,ۢU2Y;͓p aȔPm ,u ݽHnX^ fj_(3C6$xۃ?=7ٸƫ/mCȴk&]A;˂Ov@ӁhhF(H#+lmX|$ [L!q&]$0Z!Eg+&s@i~D VGEC~g[(~ ^l]W yX(t][hm+%qvjJ2l63~?L7/B[d l_-walWvYuXԓ5;`Y,) bk"0Bvnn a8|`֠3H >);zj ]E آSu﷿-VҥKFE< ^4 Xʱ&ipqp6=0{<8sF~zo U fסa&M~. j׿-G|f܋ȭ(GZP5";wԹ/6HPPYOIx,cq .Gq^m@ތI=F#Pɩyr){I!:'w^=9/iE`:i |k_w]6?๫t09 yE<6R4ރ\têzSA[=aKGC ~=+[ M7B6.хoF]𚒐@AQ!T+S]=HJ]$w/Dū1Nr<د-HJ%m#O 12x{ N"> xLo7n ވX֍G_˯Y7^G !XT ʬĝO˯>*rs %FP->?#p,F\D~}H-BO F4l`=Ӑg58 o= ^Z?GN*dM2HHޗ~w#<7'fsZq7q2(^A$˽Т$=~Q![7!>Ǔ/p|$fo#z~ef'f:irEP2yh?S0,,={p]wa8y$"J]B3O&izY{Ce44W B0;xn9e/ Biogm؊+#88Lv<2eػV ^~ r5ifY^i6cq}|EitghmŠknt(Փ0LKf/mȈ+ %)6oގH&tdgdKg㱧avy&9y'Pz,.q.C o TjCOO,_!zCР'`~Y"|=m'Qf%JZwXUc˱0ei 1n9#pk/?܄cFn]KovJО}:3ȱpO֬H#xZVr0 (D]MG6deg?/}\0O8a)qC D+ѣGSpH^y egrf)r n:?)Giҙ)x-X[bqP`!lJE ݆㻷cOC _\J3j^\h;ڀR̭/o@e80Kg(Uцl+{ ,~->!v^y? `Evv?W|#uK!9i&^pҳg< +\>+2Sn%!-ь#G`-9xuAY]'wDuh}}/fZJ&%#2'No=W\W`cg@uY ~?hBկMDŽr $p(`妛z|^w`.^qQAċ---_wO^~aOZ-&<ROzp1-$lڬIEe }FyY;,S;εQv*RrU%(A6|`,cO*)t=8F:=l-3;$0Q]YfS^0Bf*HĠsx D=!'5,DUY]Tb@ ƝF!2^z4&ڵW!Dh">Vi Ip3$"Zض~:œO:ߌM3}d$l6ȆWNʞH% *w̢lƩ̆}(_Cx:&jWHa"dgާ\|8\? ^yu CocF8q ufN\dQ}lp0 m4ڼ^?0l>I O??H{ ,H'kM?0&\r\#B *wƘ^>ٽ! D?Eli6~d,׫.^kߨ4.z$=ǧH06o0d9yk JnwlCA|Bx:S'֙*Se|@F44W Bs}!|`̷Xг8S4݋}b aް{ăoԓ*3 ʌۼ<KfQ ps-*yzf}3X3+w6oA4e!MāTM )+Gn^x;ԑď~4KI 5F)3Q!$ vbbd@SFqtq4*Xl1q e(*ʄ8ܧF3s W#5";>;l C/˚bC@<|ef4jh,ٰWB1)τ4Cno{ .$%߽޽ _o`T|hx-pA.+~t}lX~߁sO Q$ brU}8C‹=5 Wt Q`QFQFܺz>tŏDne-I 'i .AG^l3A͘Vo wFCl EG٬Ÿ:xZNqO‚s((bG{o|6@P2AY|ㅃ+\@M: mcdየ xO,T͚E@艝띸勷!7JAAˉ#)QB2؄Ѷ۽9˗/BIA&`mwQ`:d[WH*#x|n\{Ǎp)Q iƉ~zeĶNތC+eQ8;X>9 w`TT@ ,+g71A3 3` jb嫳X_H zf+q7¬ , H.@FL+"&^ -跠&iy +>yr\/Tb\nHd]W^,|\&33g;ʑN98C-xQD& 1 ª/S^{}l<;#fc~a>eqyą,ޗG \*NuacNq.-Za#I%mռo ܱ՗O-] (*K#}}=оEV߇U;Ц&[[W`QI2^|y$Vg.+EOǍXtŵ `[M]wovo~ ! _57aFB? q*uލnsk pڔoGwᒲTlIij:Ɠ% _}%ҳ$!/^ECVz$vC؈U{HgS\vϽs`u?EetoVat~1ԏ&n'fZb ,OFfdQ>,pDGONN&Aƞ?m{v,^AK.%lmxf%Cʎ@NG_ze=:c;ڇaw[o<*V8Ja.V.@,ĥxωN9F 1wV-J ݃X\*.M pDt]t$C҃092be@ IABr: GeX}Rlk؇Tf1fmA44d"Tz Ԕv 'U0Ճ?142;/VJ  qPk(E?X sz^ukA}}=FFFPWW۔Q۷R(GpF45qr6P1HCǰ 2> Qē--]\l%[h+mOŒ8`o>c KP;VMEWg3>S^^8’9D3ty7C^VdǗ2G_T7?2u H@ !sa ;+YȢqN2$O\L r`=AH)իJ#[m5Rē}DHFb}2@255gwHKKd [ 49l!%P# vN8m؊%~lR3{k}DD}e:̻,RjU:fJjp0s0g sH<mpo*O Byl=s,aoe>OI?>/z[f XV(9m\r?]/>ho>ɼ:e`9 mn5K|{Ώ=J/C|H-y^{'8+Vz^~=gI"Cj REPUK!j}2}aKG2s{8^N#lD~7aa_^'?m{n6"~3h'?!~_|%p,p>LA>TY>1% |#:TP5ڇ9Delm/- ~͐ZN,u}~-RA[  ~]5˖1eYY+  }~TRSc{CN?GdϞ1o&0b}lSS<)JiЇ7#gtcofGmwT5i?y\VTu=pd=0sV}[ 7܀CqW&UL" #~3?4"KL`bNC]Nw`dp;هC0\pػ% ڊbN! O(6pYػi̲x=tx>:I0 b ϩXfVNpq M2W ,U{ZȾAI׉ƺ ZTˍQγR lwÆ#EXOFC@v9h6*D4ITzϴ׌0*d%mvY")S^6'2R2/tUUUCD5l~~K#5ED;U$0ό+9K|GZݧB\p$ a7`)Ĝ+BP o3lE N}jo"X !H}ޅQ\u±,,K34&ӌ_{} ^{5ܤh{CVT2ÃYZ g~m2Ϋ+gnG 0UW~Z1;C@ȌKo,Z;`r&"#ɅM~-oyO<3i!$iP1ߌv%$bqŵk AL {|2'BUњEag_+D&Ud4HaxM a³$OB' !~gY"#Zɩi0f>0l g#{ ĻQl2!9%&tCnݖM{'gR8*i>9y}ͨ^i!99/ȏ 'c dYDBj6Xt [9-7\./??YjOjM7s28caY9"[ V"sˑ=]`F3Ih#nLez!؝ Q0ȴ"Z`v; pSMeocT )l}7O-@>JQ~ DvX(2jcY+Fc;4#N}9&;xo81`z1bL>UG8EIŁϮx1YTyWЊe4{ fdeHSf@t5zR._% R}`;l>! [HjCh*^=y7C F-kO/ÂA z|e[j6$k.lb{ eyqN4ơ~޾]-@9@mCϭ7=oxk߬Jה{bb}+;?,(B߱gH"u?\N3M>E~-d€}۝lk1D~^bQ`s Ionwpdֽ0vqig3l5G[4hCvt1|Q<}j2Qj5C8ـ^‚Lh"F{?=w~f#~2RFM,)یQL@;۰<+ξ!HĥebQ^6 ( Xz(L2D=4[,'U9jC$3BE)<\3fwA!mW/}m-w߽ =z%UE%x}km#GQP67E}e6w?vBX_AB P9S"i-53JJ ![N{GMZQ bH.@ˡ_C…+_!">6>67tPza2l-W/~k$, UMƓ#}"t4>j?ԣ/4~>3.@]"&P\Fi2V_Yۊ'^Ƨ?5]}?Y 9e `lF 7Bx?ٖ. {x ARa%2>/?Y]͘sOW󾓉Mt܊_ 0pd|a5G$3^2iubzk>U/2u!}4Uؠ5mJ!ɳ4<{oŐwCa4ݏ҅ȔhkxGz[p"d%K+!GpKUkoFQX&\ijy [^XpZ\A7}DZ+ՠ('`txَʪEHuYQyUv4KXyj-Fiݘ":,⹳X5,^fuxW,^k5pѲ*t924YhV/2v>tw߃m:Œ*Y z3"9ԇa9+V^$@2dӵ+ 8kof{V]l˽ ` !@Hyɟ佼{@!{bٙ;lF.rcZܹs=;n y>:cR})qcV VFqk s93 PSVEX<.ťX(kP \ KWdIqsba`b1mLk2eX$';y95}1ͨ~H풠|Nܽ8&f`bq q]w?cXlwJx|v; 05/GEXXL {k@u:N+c-qѱHMe0&wdph) ;&))3Fi,=W=kn5!6%O@ca=Q0s1Mޑ^,,D1F1i|Ѕ"SţEpVNMiѰk3;5af7MR0 1>}' 6l~_}:ql.$!1ڊSvի$vYځ`f]|RSllO`rX 3tZ-9w}%DJ@CC%bґ[_fatr)(efH.rP~p+x{&Lв53q,;P?6(i6bI fJDtaiXem&kK3u&?IٸI[ۛ-]^ ?^\-d O3~:V]n%*"+x>WE|ʕ+1uTuc G Sq(et?)@;y7Sy&##e@cL! $YrQ& 4T=.:agqdp'8`EєJOtKnCb1dikRGS^ɛuG;X{EQ$K*y2ԲqКys1 e{\s"i{ܩFP5Sr4P<_^ &ֻk֞Mlכ4vmi{8~0=667@붩C LB IImy/Pd B,AT$sܩ71i@%$bA׻>LLF/s7B!F XP -tڮkfp7"0ܙQfɧ9[zcIq弎-LhPx64b@-R!i hKJ>tÃH#A)ىW_}#R 0rJy_ E<d&Quc gcwEDr-Q~B<$Y)^JZq F( &ulV~uvE2p nx2Ko``jNm5(k0ft*N:h}dzk931./^2fO+1Ъ5T~ *x7;o)F'8ľK=5k> 4v͗1Iб."37 fv-KJHȝz{qMB^^ lLL:]TIXTgwc.s6"-tZHKva}O<ЁT^x'O曆SH <둛JX{=lqj0i6mB)1O3#ۉġ* g6+6,_q?~Zf0X㓠q(ZHEm8rkÑC;`݄͂͜,-AĹh׶AH%j֢-x~+pZ09ɏg~h8rYeNwu0cƃȝY6(nŤ)Pyx'=:̛3G6f]}!:J?m^$7v"iBޖS A`ͨ+߇w6`K_ZǣtviWmP85G &-鯘W෧_5NGwoBbXxka嚝x K5+ˑy&,{=Q$IEov)Fn^v_ )F-z}$Q(a__@#XOV#&ƎKX-8yt2 f!W}% ov&Fs-:aL$.̆C&Yw K\#cL\M*7aljr/PYWfG|VB&a} (iu`mQd-!1-ыqXۦ5oaCu=|fJ#>Ya8REz%-D1Ƌk;haaTܻG2gc?&m..Tԣg =M̄)ņc%pt(+=slciFO4PUyŁ?"hh38b²%3ѯ)>xƌBf^>mfq3>1L5%֠AuC\̾45f&z.YunE#h";~pEO=ahED%&`Ѳ1oX$ ;# gOcbDQgFOW jڠ[1nxhxtcgNKyy Zxؘ\ 氿ڲmhӡ-Z y@\T5S %A5H5IHS]W۾LH4,#>)K>~r'ݏ;NS6®}ŋSnމ>סFXaQvz<|u0$4apDQ^ߍcLv*bDvu!hfhᤉh%.̣QP8 YJ+7R`SM;1{xEE' `"c1eR!̾NT8gHFDd36%GؐrhGaɘ5k |u鑝 __7{Hx&m`"9o2MR8qr31n8J zx<(B\f>`54 ) Q(//Er>SMEKM|L+E{rzDDHtv/IAlB&&%4ɣPʞaڙ 3|rr36ϴ"%%iiipuV1靄Gl\FF3?-W8U{ew,ZR3!𫈾 WFϛM(?St@sJ灛Cy_(y := O-K3 ƾTwE&OUjۡ$nSG(nO92(fk0t 1vj)Bca :YmIB;ԑ(a*pᬩH`cSxgصI[=;]~/f{ Ki>$Өsla>]' 8"h7EԊE49xXN?/;9(vxõ—FZ[Q2Ul>_xqr$n~Tm|=F̺mꎞ=s24h#~LX(rMlĊO>ϾG]XZMb lF.gsH.S zh1H`NˁkxZ57^LҀ[ 8i5h!ƒ;/l;{f1\NϽ_ڒ%89 no?m JWI|X<%wZI)fΙ@f,+s 3^+b^"*v..^?'n. "=.'5{ { u^$SJfnk2 N/Ň6$odj?OGGFbS8xX jAHc.ً=b}<$51h3g}?nbF)L|j/e6g>z! e(:{F5%z ! e`f*Wj9a8D!)į  `1jΝiFW 9 ]U%J} ׆6_:~᫑Hp{d~\ G_qBty@`&8X*gezݝxeF&ɀ5]2Q)\ *7D!\"@{(Ł P /Mr^oPyze SŻ"***B4bta@ G|c-Os=׭C quoson<ې p+]VY,5j1.\z rni(U]}k\i5WX"$h+,viNi?gk! -2//J={o܅?<ѥw^ n]|ĤϜ1SX޶!k|C\s {+c~_&+stTU[2l$*L>P)՜@^](%(q`Iq:#JIEȮ1Doajr2 ޑh:1_.xf=Ϝ1FS'y0R"ĔAp plpӎڅz8[>Ԅ kN{3Ճ[P\| bLH"缩Btk9..ǴjZ,L%Sj@H7'R;4oOM&]ƘϪÌʆ M'93}x/CO#ĄWtNm6>8]~^૟*6LD@C;XSǿ܂K1m|Qj8Kg^J SS! [wPZĜ&ٱqa;(L|k?x͆+X1ss~maNl?~ G^1ЙTXq&8hcccբ}W Sض5E#N!>=ըy1&ge방\݅-~5~a5ɥhtWu Ώ6Sd&HŴBPL)9ԫLOb3S=?'a",=[mN6%+c=_뇐qfJ Ɣq _)i tekOc yS \ oOvxIfhŸ4 /u8py&`{0S M& ?)}d&͙}&{;!Y-$BatC$/|w p13w1D!8PE MAie6Q˛>zp HelٞΝV>Օύͯ;?xG|=-5j_t8N#)ʡk2lޱ.I(j \NxNlwU _t2(nC\R&F#3ac:55 %0F3]mG{y= U&dƆ4[d 򣰝11*X|k߄b v`9z¯~߯&LPV"jn[Zza &Ѩu,@QˏkwU$'W0L9֢BB {?J-Hf]Oo;#' 1sx_oLC3tƞ.6pZ c}QcGro6>|6- u[Bq=4Rی|0-GŤ)oކת !k,x3_ӁŘׁWcڬq8+v V%͗A9IM(6@*=& ŏC[]AI8}$B7PkDzzZ&|q/=^2^Y} sg"6"2>c;`E+hݏͧQP8)ckz*mEO}HIqݢP-0Ce*]R ~~wS'iNmmmg__:3LHfdCbxmx;qtN8aŨߺ#(mgCV8 5+W!}۪17cӒat3"E7i.GGQӉg~*f}sY09,! f6p)x pDPYZeiIIakŤOH@☙u {ɣъu,}keEIU.VXl]ΰtd' =g4*GxG!{T:N9[ b&,τ ܅57""w:n5SއeEp61Ez4x5a} mAc'>J_vGhwQVS6J$XA[WߙuyJ`BSB.cd4 z&>c?q7#t$w+4c8yE5V[LL]GPU|]LMwׯvq;ނ.f΀-x4 8=/ h,[<8dgLT^geB4~iq6ߌvt,-9^g gLTc8l>'^^GbEZt62a]b;B}u%"bacGG!#:Vph[3ٮ{i0+ǂu>7o H;6 r18^Z{B4nJ<{)ӠxU(VA {b @ Sl:&صy%(^$·BH 컑,O*;o_'Zp׋?ߍ.JKK9*l>O &886Tm1 !V~GP^^˅}sW [(P sx$bNR_ۦӀ9fX#vj ^]_#5G-Lʒ8'z$SL㐓SLytaHJLb "\v2Gb ]f3)CyC7-/3U4z#4nrBRPUrrx*5wT| juKdN}:p&8$j#r0xṖNG tFZaHmhIh/C}iipwVO4mي.]W/gNU %;Zt,NODkM){Q9YLW5 0/"Wd#Coص.*?uN#uԇ2v?};6l؀ 2#>R{d a+3EQXIQUV*X\!x<&xƢisk/I+K[I sϖ,=]ڙEGT1齳MmMATS!  Rqnsk]eU x z) \4^IsTd||FE{aa&8{`l~%joW;<0I`bH=OE{<,5ccճ:+L.y~|YZ+gw=s U/jY PW-|nm벉yElatC=sC7^% _<3$yY g~0o\B_ ^ݓW||<^yL<uuuܡk)LTڵow {1z8̑o쀃ٟ5 L #ܑrH5D$#;%ـHQn|z 1.{jGW|+pلWDlWۜJȀ#ˆi-Avn5ڈ GsG%ٺ1:l.{l1d![)L%0ZۻPtp%3;-QCOv>(tDiu7 LiKóo<6 KaYX$Zf#;=>xXy9 o0/ӡEi{(I3ѨTM }Nx7?_Ï܅'_)*2o~&W@2z/ !倧41) W^bw+]#|*[)M*8l vYּ -5cYjp;V֨j{{oL2NP/DXW1t $H@Ĥ'LOFrF:me>q6oP&HށNPws}nv $j,OL'+ԀVf`SѝV2uɘpݳ03HA쪆݉P6h+B: %Mjc^'E;i9 )aQ(IUހNpnq Vp=Of'zJHX!Wnl&m}uZN@Y Q~2v{C!0$xpY1XFTlƨ!}gOc8dR^ћ ՎW(z8:X5`AD;Z 姚F/c@Yߧ ` !mM8u53ą?ݮvtD$Fp'6Ge Labo#V(LM!6AԿ4DvZ8n'm6_dEQƯ-ĉ]q-Ju;pQRJ4 \.6fo޷IA!SihYuFAORF| %~==2|ݵx{eU{cx}SUϽ [vhq]i߻ ;UrD>AK [D^?;Y inhp@;k58a>J砪,* Cs=;X!{'Tc%_\q},lO8}ƑB]5QI TdyɛZݻ)ַ 53Ex}9{>?9g3{4]^5&dpW%os`+v ".1>q=(*Y197=6Pէa0Y=9vY sYy?1L^xCaA*1}R<VA ÞЗ2mUxo?;đ?mvݶ\|OAS{0>ՈZQ_ Fn->$ħ#Bφ, ش V.dO_CAl9^IsO~MBME H=u؋I&I2iLR>矵?Ŏe΃{Ǎa6r2 _2^~-Y…}Of:x U5NFécpYR"&Lx ־pv2ýmx՘d."pN6ʛo:-h्. dB]K^t4 OSzh ~]eG!6f;ҳlc6pʶ7A0B>QkQP4 J S&dDlDŽh mcPW8go`K‘h$cRźhVF 3ﴰ ُ1p7/ GXuAt66?똹; e?+{_F8[}8xY҇ޓ>q?j+[V{`:d͑L)cd:o3Sߊ0i7} F=.DA:R%{@r0#ӽcpMDŽ3ڃ&caFjrXz?> ՌO@`rB%#cJ~p B[UWAr[{$4! 5` fBt3-s!f==ݐLF\j 0 2'97[0";Ne2#-j^wXME%;>YѠ݇7`1H8Q\,X.%ls, `&M{.{uP;E0 J} `wˡ63ԽK>MFJIW>9ubOV bӛ+a__oIoj1|qhnj# \.E܂  92cX;|Hqa[O>c`7c:08\ybj| ⽗^Įv'09OaPQ'8y,$ńu(uTLT%8A&$"R2n';anN'ֹ L۾8~]:,e K? G '#%̏VS&b{6N k;c*퓲 vd](.;IE޳$ťn:ÑzMG ui6oE~V|BV+?C}{)ZHh=>K*ƦXOuv_oG.5oXĻZ߰1ځS7%pH L7a!HR_l\fНa`-S}ѩs0ޏT /hS_,N<݅/~Il˯Qзy5JW/BL8v㷿1" w ރwC0&0JX<ӁvGAE 07o=.'+:9~4,^u |`/vȘq2|{7DDuzT]}'^ԁ103m!6!+VL61p5"Œ093uSW`]&Rn)0Zc=e!H?#h.3m&pa46,YۗΆ-`c8 Βf1~DƘi`Fjj⫡Bf`["1ld1{"ϋÑ;1h": 6 YfgKԗE[EaٰXx:f-X$`&>x/ap%9H􋎎P%0JTh:dq0S=qlI>Z1Ӹ/ŃAG1~8Q`Qú]iTJ3 P6p<\>7A8 e8ys65Jz+cGm磰Ҡ<#s9 M)X,hooVŵOrrJbJH ijjcR`)GcŶmxA =cJq&d`xiiiWt TS.:fjJDc9\=_Młs7+79"Q*g#^y̤>S2kob&ydQ 9eʀ PiaBt&ysVj9,"W~Dh o>cn}p$=Cl@jtc'Nr:0x4FZr=Cw]t^at(qwd \FFzyW+\˛V]Ep~sh->vv֭/?o*>| fW +CTF+`S˦5P(ߗ%@а)O-Rj=s~-Oy5xv:pc0 [T(W,>קxEe`ؔi #xo2gU0^`k9z`wʖ[+ddA Ҙ=f31xfba9 b,<60<& \Cl%_GnmOqke7(ܼz5X.6d)j4#l &0 惢E˧IENDB`tipp10-2.1.0/release/help/de/img/h_settings_training.png000066400000000000000000000707531274324046000231310ustar00rootroot00000000000000PNG  IHDRs=tEXtSoftwareAdobe ImageReadyqe<qIDATx}|u7{A `$RD*VdYr%4;NlljN+qK$Y$K:U(JN,` zW H p6ocE&[~7fϙSZ`Xx l0841P>dqnj"皽縡),zL 0`}OvmJ=Ըn |mv=fg@"3X\36?uʲ̎:*)-RQa1@g> @ڷ(kYbw}[}b7VS:p(KL޼&J6 ig>sweq?VZ)Q ȿfeDdˈ}-60yfwfuF|dDL ;~1AT<~f#z'6"{dmD;QX^\@r|uM3/!}GbvOc۽%c E?A9>D? &C4 5Ya0zS??,[kK4 g4ֽ JzOܰu7 5% fM ٗ[F &f‰i(#XȽ2uő|p~L?Nu9 cy_TDbu ,*DP%sěd@|}~UyY;b́{&?>`Gp8tu[UMBL]W`!mO[QoKr;tSd Ќ W D892*K`]q۷~UQ6@U$&i)_4$C J)vQ  V_yP{LtpvtHQSC&Bz"Z|&ҋ5fjh:V (M ss[ Mi3~*%FӚφiU%alAl?Ǭ^9WVR5hT&(fxI<$;,N浍(7'1qH-E~6s?g }}Arj vM94us`M>[i8j|R=7 Zɒ [UqQ'+F +u(++QZ(S<߁ 넟Z9JN(W8 A[6&iy!b{BGWk=,3%EGEIWqɄ] W5547BfZfp"* nF$]&ĄBdȆk'&Vm}Pf8xA8 xI!\3r/懨OIgk1%M-2ygF%eEYlLNK%W2LKɱDaobZӼbk(u?18_BGgw+$;hc&<XG~$tB!lSUR,Fl<'gDnzNUb2[D)3p jG=X[%B1tԌ,&N ^z"t ٙ7Wy܉E~__$#j!dgNB3ؑڳVZ4;mtf3I:ݞa3>$o{9wU7hg;CrK6oXxt=u"{@@\&%#˒f:Dl&JaUc.CWU PXRl6C'mr(6x_L78\H?L\i%qJd>eA- d s zJb& 8łEb66,p2&$y %gx(5VhG0:$20tىWU3~ήNqM 8VIBF49 ib;RП]@R폣} *ӕbd3CҶ[w'~O=q$ ؽ/9è׶mddMneVk/M=XܮמeʚSW3m*tuCJAǮ_ұ~ͻɳƿaI׬zo^knNDwG oz'K_@SG>bh1JwY-za,؈6$>U]8Fzg`U>`=It!BV.2W0Y 2u3ejGUb:,yrG~OƘ]t`E#Ac[⚪ q*޵Z&oALbnVkXy۲W}3èmJPOGOؘ>zW|;opN;-`:PSRuiXua5gw'W/g܂1_sJˮ "baEgNh2eS2mfg7C-oh{n클O|Zm=N[6oo|,^Tr.f8`%OUL^Vc,^Ō7 Z60,X.LZPTX,Hi٨Xd[c sx#}N~ ⾷lB;XRa1&eEQU3oYT.Y]o`鲉Bf3,CwHҲ8,~)봼)eF׈}kB{L+yr_g{1lNTFv'¿ٓדwן}8Ou K) 42p+զ|_q lNͰ7NU\:8p]bdM?{bwBl_AvzȓR46%5ǷϿM߬|Vyqr!ބEZEfd#nY)(Y}܋…!Zq-+sKk'|9gKl؈.f%,)N|5L:*Y4P I{I3~RPU-XGw|S0 a&c*5fDEz~^vfy;GO~~W[G[򌎶L5"qAG6`CYsl$uKvQWs ۔0mvicKNhCST8N֮8-Lő:튵!ɤPC>tl9ycT;BFS{@HiUuvwZqXA_Rr2C"-khɍcv&}g~8M W׷36`qsItNTA4]E{| ~aH/q}U}g32;V]ZPh$Ŗ*ݻ$q?[c@^)q8]J–ɽfV\lg3%BCie3'ͨjzzOS` N6N.evQ,I q,$Rˉk3 yDMe:5d|2jd㊽a&qztS0֓JTjHMRFD5l$3%*b^q־y{x? CW6p8ks/'1e 1˗ŊW&YizFϚGhj,]Ŋ^n}0#" [g-s90<};{+1(AN:S2NG[4~z"NNĩ,Ze'ʑ} ]01m:3X4ǎ^b4&z{Eu_=>Pa#ŋ\TM4(n[/3 Gl}٫ 3V,pa؆5È̲kXd9[*1;c⌬/7?IyςpAt;#jBCQ$S!N> ".Q}qƕO}ܻI3sF~4'iq.1"`XQUYNkM KL/sw^F31C{W(= #e˦y{bT2ywo=C/g.-f"0PC:v.%~Nc} Kc(%6p=pؔQ0QHgCv"I}vT/ &EBs] ZHTFa[/cױ8 '9e%bb}KTt7\vA͎[Pƭ7Ս@@7rˤAt84؟p:k _І$j_g",7cCߊcZ`{0ij'::uĄ|vt>FfEl7)'Zݝ\NEW:$|hn7(p:/a’e:ΊN7cEэj~ŞmyH1urwpzނM[1{" G@Y- H=oP>jR+z$cqb(Yvk^y@K v؝.awzIHE#ǏBh1\u_R;܄U|Ŧ? lr+4ع]]3#]W!FUM~n0V^ AJoV v0z0slk?#=ڬ/ݰ}aD@;v7hÎ'BkC- %S%*A Nw'cZ!+.8ρ92cpݰ˲n"fN &-<"L]].@ m%PO#)"$)r0=d:mYL!γ9xSyH{Qd k%nYu-4P.6G}9u ȚI} s4 3+ց023" d'gIZ8S2솑u;ʖ!nȮ5||i\F<a .|F7QF]/S׿٭;9,rz+Xw=}, j0C9=]f&|'XJfHGނBm$L&(5;/2wYcRîۮLEo5%uLQhU86MDĞ$Ktu^a_O/,/ǹ1,`c;dfh &٬X1ײBf$.h bw{ozhԬƭ'B*,0L $ۨL6Cz_%T}G&A96$r f zz1qw36WfIbO2x wL=Vcqv#.ԩq؞(rV(Pb!j{0uT 7>35$>KHdCO!H\@\$J-D"1Q=c3)V=գ-jI^Lo.BKr^Xp!<;$'Cn?)-}9*aLd+q*C'>c q\.-⪚[c?hMtGl HIt8]H^y ՝yY nG 㚱v~yp•wMíהӓW_{]x{)̞¾  n7z%F2gZ’f7Fr*pe7݊ No*_7XLWnAl߹{h{WZQP}sd6-.Bay3g>8CN|Eus欼-G6b-ᅍ/?oo#12/>I)ۚ1p&쩖%u)4HwhaRRvڇ4 ؉\8,_~<?bʊ`4.G LYae%_PyoRq oa.k e$w,"u$E$q& xF,᲻yBv3"dػqW9.UFm,ӐP+^yKq]F:L,n?@gƦ +p׊T=ZC$z\)uv Q:k.:xS]wwHLtOŇH:E\S/Ù7 [`mJRbqCOӇ'@}1!2LJ$%%X>vcQGGe] ^'vf9z&Jy2w!ܕ߁}Gjtt_;y{PĒ Ј8bz89 $Ĕ7 Ln&roNp&uVQ 5dRt8~*p&$U/x 5CXإnOq&! Bp A\¬J4ӳR.v\_jgA YnJ뗓Y#s˳i׌^{ dX麋&2 qg$p0 {J>,.qJI!:$iAD _3QXʨ^R%FȍӽDo\Eezy$ KNgX4]8 ͛ ׃D /ݟx|,IO0'ѸC"/|0' "?_yu~ٚL"R 2x&clDcr C:K:z&1h^a,$fź9`Bocm88m "JY["7Hq2Qv;u"iEDѸ^Q̘|'u Ӝ痐<rݒ R83@|\AcƉ[y4DDnJJx&bf˨lԑ"|ut*i8.N8 MH#@+Nxx*;. ty=t|mAw->ErwoKT%Bj؜ 8NnP OkC"O>Z[[EX˙O̶6O^Mo }{9 ԧ>}kZQ:tcƌc DYYYIby= MLK&,YTo-=o*O\6` =v`b* n&(^t$cJ$mF3r /NQmt>坛uwDfg td+4gdd\xVQ F<@o7l}Yz5/IW^^JKK۷o@vAl?%Www7n p`Xu 7@5 2:ut~qN2@ejwZGpodn1V?d|Db&N G9CwD]$Lk =qtucnl6}-CS88,R¯AV&_+OHpqT/qGVHK{鵻&)K v0PKl'VUh*j'Ym;{OQOZK20lK\|"p{w۾lzjێ'E7ϮAgkf{s5hB4aB8uzB^*::<\׏U` WaI_&tQ+78DwB`#h$nHuB:wL`;@"w& /ӱ%tl7tf;凙1r)J98m '٤ ĂkNjIW>IFsh+XPlPa2 4uD_]{.Yw-̏gKkM#;^3[h9x9O$?}"J7v}CmɥM3pW ^@~tT4߉&/,ih:]taҕ8c/j;|(r _+QB7\ƾ# *އB> zfh$80e _?XYf22L3& J_w.{. m?#mh!g|#T>1y8w=:RC 4I_V0ػy;\x\hŁ6bi^Q lDg9^I U z#$XS.-0G]̅3&w$,b§7e8K0e5+[Y WV1s H R3gCsh@+tTGkpl`́~FUM(aPO4k@XuIaƙ`Pj(#I׍s- ;D>Č:M\nz h?$k!s].hɪu ]OQUͮȒ!jHPɋɸBD|>; Ԍѕ[V Li.]'7,ˢCɓe8+_cEscǎ uxq`… tcZ M!1 ~\lrv=Ap<UnDW>Qsp\:\vPu~3;"|y#qEÛF :/*O;<U>l0'w=t:>|׏egoYt̛;q/yxO 5՛x2kE|P`E\SzqQ#"#/3~[oy砵yB~' .[vzS&ǒEsҳH9*5531"۾SU9=e8"*<$O]!b9_E^:?b%"'33lRLWG3!,'DI3> -isd!H9$= j Sd;SP< -,||\[O {aKC#4qrJ̒Zj[~>f$ʨf1dnFb=m޽$i0 E_Ɯq/RhZ- 0ָwiC5PKW̙ ב^=>ѡ႓P/|6\rb"Mj}(O)ҝ>#x/8T<^@F] _մiF5/uǢ4 Azϴ/T A˚L4B5*ML$fG%)PWj ,|A߇< ]Ƒocsy5݀<!FP5aWOJKoʇ(ӧ0v|1DI5VbѲ(*ȆP5hrEp9hFCWXP|mNyTbS}MQхV}^8 ڎO?x?/ D`ӟ Mm DRo܉YW}N[ԇ!]Hjċu7\ѝc6\l|"\;-/Ս@y%jfBx0tҤN>$:q S=`KUIh:!<6lnCރ46Cќp"ц`?nXJ&>RSO|A>?ܛ?w:?T&Eӡ*vF'/]qTVa #؉npa57 |>O!ՊSF 9eTգC ˦c͟יY `˖r{ӊ16-m;cq7} $l1W-1%PZK.l4^̊J)8bȘTZd-#UMb ̜KN:=ݾխ+ “PU9ƥŽ ذ$cq1&KvrrriuB4L"nqҙ$c&aЮ0/]$EL@Jm-U3p ס'!K b@猪E)HQ즪A]9p_S`j:眜fnt^ a2,c:|_  SXpo3PAPvdVO}b dMVq/ǰx+Vr+۩sꓟǽKJpa5{F7fCEix )1G+fĒd95:2!p]-a]`N,¬d/VYt 5$D 3S' Qd\/8_d{:N } (^z5񹒛bM Y׏e.,$f|?lBJp4ScL9Q.~D9'q B*AgqA>_ḓ$Hlh"LPnaMpգhdĚ|oջ Y✜__q_旐"~X Xp6J'DQe!G F"WVh?騾fmmɷ]|t:BF0ϙ5E,?qCχi1yש79:nbc`D\9|Q\\, 'N@aaሏyn̬  P_u,)9i.1{B$7THqy`C@O>#.yR#566a'p9Ӊ=o}ÿ|+>Aݸ{cׁnCJ+jU]]}EDLv1;J0F>8ݿm}#6Rd-SuIhiBo<j, : Q$FRE Y4{nNWv\ON+"ܬvvŏ6X0͍uoĥ.gVN}Z䌽90ϻM |W,Q$9q!_~~߁_96>k7@;/lm~صOXaLN>b'EM\t*{aq /م A&Y* n+vV|̓u߿gwΝBr'v@ܥ}7!)5b%p Xpbگ~װ얻g~raFZn2t@9k[cJ$;(0n~8Z # 壉^!vY mvh6b/Ӌ[c^>7_Ƭ1V>"ߙ"V?as^)޿J03\E2 ߅,s,N/#f"WD L#@*:_36݁fl3Ae@̙y{+ .6t;KDb񕼿5Q FqaJU|A,#lWp#3]׫sQND,u`Ɖy1lS9MH2Z WEvn'e (2Q,=H%EAX mqYTN@xΥy^rY%8e$)+4Q."%Ou]Xn37D"R >LHWP_v _ǣxPx{E@3uàMq 5D9; ߈D8gú[>EP'cwA CXh677xM>h]=ypsUGj1-ӯTS<^̍.rpHͰDK7/:n="ӣArAU7AϺ%ˋbFC\=M6ETʟ 2R"g]^yӖFx|=ذ5T/iNUpض0r`EN*m?1p>?n#IFm?z0Q(=bab+N( ьe\8!Wo寀Ir؅p=(:H+i5˱Njh[[rrrzz'N1}z);@GnGö;c\A*ᘬn/q)_5M;BۊfTGO.HeAZVl0Tiv%<*qS'qMsE^K?=$&qSzVKuBp?H-B~cL'ԑIjgO@Ia9p]$9݈O6t37"3+ 'Tw >hf6~ kIH)⹳!W@!`zsy^˾M簅j,Sq'ʨDlEB ,h8tN}'n=* Xk`'3D8NlZ+IT%n{ ̮B~h}J _w'ҥKcȚ+ӿ6c s3o0f̘{Brr6~Em M@mU7]_[&o݀`tӷ,;KB'l[" 2S{u( Q{$[ݨ:]N8V$}< qSEKqQ3<!/# ]MU8U =C+_<zQly] wf?zh췪*+>í_+?9S݌7Me"lPms'i|bLv;}˸ktt>;QM\ޟƢ[²ɸ Q4 J  ~di I^`,։M/).3юRx0[>ͶbT<6b{oq T5h8}4,T#?{ffvk ' -dK`BaCFB+Ͼ0af`|r2LtW=pA2ZZ1l%f%GÈ9?3 \pO_oZkqjI,|\t'nXՃ떯X[;e 9 fcRnP>Ĥd!44TAmO%Qu rf#Zs\I](oq#11[)OH#,Lell(7Z`eUQ6 :ny1"W oXK,2daj[7VxZPu±CpJ;2'{^wꃛ_8T;@mE*ӄ5k.T®Qu=~2ogS&f *Vuϳ%*x\h ~V"4{3e&prt)D=ĝx *LT5o^,XB0j670QQLuS`24(,eS ["Eu$OTJU{ᗙ>n7^+Mዅlf놟Wӡ' ,Q ѹz"tnn.qD_SR3x:q X[6oXIlVp`!$ϚhoM$geNׅ֗ 9٩h:u-阕aH(Zy.nx}+9sI!>x-s𷡡[ĺk`̓zr`5]@-p^|'~>I o}g`ccnDWAߑMFƅ+۽.+#|;he!aZ|Tu2fˏe3vM!Z.fjDjzXμ'_g== p6vxr}QT,:0?LUU@fcGaSpI ``j8aЙcT@Rv_xv=Dh௱ҵnU]#lϼD~$$Ďy'Ң@8R!}&y?Ë#ŠG~||oSO ȟ*0ׅ=Ǚ&R+*@"a=[~\dfL;Ɏ\{-C8vtț&؝QHřؿqм>&9i/;W#4 66V&l<{GWqN4Vj.x}4Y,TԬ.Rc~01)kjjx*2q߄*Yh#al۾nK&hX V]GkPXrUG,Ɯl'؏%Pt_Ea0 žܱaGbզ!o.nw}bg[ }hV8 IpB*&0Y8&_ljcn ?fO7`(G"׀{0aJ9N"z||<7bpd"PaF)G 0qrϾ QdgM9PQz:n645dadt2M. ׊rL(v.ff8RQiV,&qLr4_knnp|[Fz _ᒀ!}^0t+[$^CmR@+8 ETCX8끮u`}Gz'3z xk"n|g/9:t)W.])=3}Ona4%y" p:_{#_l ށJt*kR dg0-"ĔkvŸq$ b{4iyxp FK2d4g!*5R5̣8פ1b%շ:,7JĜwjhs!jNv6Y݁ `g^=bTS-|-[[[K/GT_~Phm$Uy}~| B"OԬTf\ȑC4[k<{ z\9qw1Y9z (tgrZJكԥL\r$Qf^GAƾ'mA6Jaѣ?DVVp؂mF#/j:iFZֱZNIcB/Dvu K Acܶz${d/DW�9V /-Dأ\Z ;(CD}@ eg ZjtmpHt"xEL+{eDyg_W; cgxÁ_q_[ k v@,YZb Ť#@|. w03 qRXۚ=$Q$Cd(,MPdBhz-e)2p|단Pm-]ш݋ >+ %ip)(HP2 55lo/e:P e*͛/aa|ۃg`Nv030?݇HXviv'DK:FV'NB1!3ՔASA=8$J9q11m)MM3׏ukcӆC"Ohl:wA0q)1@ZR$_4]0 zY|WyE}2cӉPvɎ{ɿHy%,*fi^CO*Y)3_PU`}?nc-c!!>V€-vק}ð׼?~8*=}ן+ LLh̵3 H#wٙ;?BUewm>~?|uh͊-D8l t7ct*px+aOnQQ !Lq$Vݽ9_BPsb=TQWQ)%V`7E3"ZA lm^_}[ M B /}冖4oLܷq5]qjMMM`ZJsTfs$Yɨ搖~&J}@:?!Y9r eŅ,d >z[U*aua"?Zp9riй\F;s F%\ƴi4z ~ѺrF;QB.K\Tfo7Fi4kXX)C4FFąN'O>8")\׎LXShw!V6zě6ʛpd`҂KQb"^Bcp &jwF8 V0x٭Z twlkxkN#!%VVvtsϤ׍v jtӒ #~4y(e\Kj xi 3b~v(636܅Oz EסA X3`8ElA6n߁s]][Q5;Fܴm$5Iذp"FXY3o9/O :يOt V#o]XڊO;jR>-B; $JvWg'4ŋs6݄#DŲǒN?ͫH̿[S8埆[!id8ن(|}'k2.@[6<>rn|׷Hu5oʳita-E9 nK```e-0t<&{ wULf͔v4՟cmQsỸ!ƹ:mSq_7J 3N ه=` ?$D߃^,߰0g q#9XUiAǗDžL?xn#]ovbŝ' BF})?\)Z q1!4hJE :]|{xҡ#F#SIhEl 2 bZGԍUO`㗘^.^ <i4&`4/_L`5%|Ā=gn-&\`cYA@cM6zr7.{"$m7YI`aj~^Htd$5I#4l7!it]0R?ʥZiFסL:JWdx˩J|w=P$Ծ|I<0tTA99&X bohLeV(D/F7,`6XMh@jflF{C5Gzj [(U% U=U c +T'B2TL]ĠYcBiZV6ɣ33KD0n ˬ۰0KҐ dX(_cXV,mLfg/`t~xU8uSȱy(Ha{Kh#}#`b0IDqh!x>aOm%,uyiXN™;+NyE, 5cC؂@GU)TNR#p :V?vmnWF9p](/P>!2N[w k:[Cp;|{sclym$,}O ml.1F h8$9{Y߆Y9q xy{H\ ;^-NupC #FD@RqV 3et;˰FFrRmxItwǨ<֔ ;?f*c50ބ sWoYk[+$rn FcOE&V@'qV7ہ>nWTx#7G@3_w{ԯv@cG=xލף]^3T7]h`:U5L˟umr7U\C4Mݰm[j@-?./:Z:75c̓^A]uߏ۷`Oq$Ԁ0/2sj"#˞i58t:\Yѻ2ֆSSmGd&z&tQƛy] (KŢɂDtgbъN8P -ڟ=X ƽz#Vl C6{@βH#t*Xf&̦(s)D6 ]R`1$.)j4G# ɊU篱L閭IHMh7#~Kpf2| ::/[xG19ILggˌb=UW.CÎjᶵ+`K^#DBk&oĢ9D305odz }^˲%V3S}4`wDs+p d"q*%Ǩx`S-^C8d֎y1S/ǂ)dѱF.Z=tݝEĀˏ[gmPW-ќgΘع~]%#->tX6^2[)52t`&# @CS-XN~g4F7{=a@5і ycͣpQssY螑=}^Nf[ZjŽz[${1{S>:ARm*(>k|)NL  o3¹))) ~!q<̥ڡx8^VVuQk=ϩ\#9Q\KP/:ԗ~ ]$+IbKhUȪz=g`рohU$k&>rJެF]`D ,kita,zQ GhGw[/ɺu>^l eI+ V=|feؽ&Ay a"sA'qEx"B0e@6ޑe]HW)\E$]g8zZܹ{o9žU&,AʳwxQfΠMk0jQVϗ/ogdǯ[)A1^']K zN8ۣPMgqaʘ\e31+*h{HbShdÇUWaxfڽBFvV|svQQ}=80 ed~xjE2,CDž v q{#ty<>2Ukc?.Mf(Ln@ {zX~p;1̷՜tZIENDB`tipp10-2.1.0/release/help/de/img/h_terminal_mac.png000066400000000000000000001122541274324046000220220ustar00rootroot00000000000000PNG  IHDRw pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATxwTE'3 Y2(((bœsqMk9w׈s@H&ON_a>O?ݷ޺OsNjժp0 @FPL&g$WqO|fp`0xa"M$$It9 PP(TL&㷔 /Y$sm".H$0Ƭ arrrD"XF3P‘PD"A\y$FW+G(S_x~{VZE׮]4x0;b_D5koe…h׎dǝwcǎגG$aҥ9YfQRRBe]ٳ'sLc$|=Ү wCõ;]` &kD~BJcQŋ?N\=W^aثҡM[znޓhn.K/f( /gfD9>c^y1JQ6Ӈ¢"*Wd 8sӎft('L䞻aU*ӇZR]UɓYhs v(xM\d= p$'(}~B$ .]JV[ c2SH$@UUpx5,''UVL&i֬zhxpGнwo9-[#yg(o]6$hoy[w~'G~}˧٣g^`⒥u ׯ~r'9s˩Jpi'2hA4oVBm] ~/_K.f1 b2~x^{5`ͥN8.]=SO=Emݚ ;w.G}4Æ u\`^F 6:?uҴNʈ#?>v;w&F/ywb :=cK/$Lr 'кuk8p?Ç~ǀ||嗬\N:qӢEχ~w}GN8Sb (//cbrۛ SacLx<';o F~9>ziO|{q[tBe|td׾28螖U ݦ7&kfD X0$0uT=eSb)0$+l9^ OVVh߯ f]a}!O=B<c_ªUF5kF0cD"TUU \L&)//'HЮ];JJJH$D""D|jkkC~~>***ǩΦolch޼9/h;rZlI,#L //H$P8LUU555c={6cƌa„ ~A"3fnCxRHEEz)S0a͛ǑGI  77/xSN9 n&x:uĢEС;W_}5K,K/%F LK(o1c0zhϟϙgY "wy'=m}/.^u}Ư 1az3q⏘3 *g9ĒPZK]h[`@}Fɩ'x|VMi//# cqմa-|2.XDA@ @ue_Դi+~`Iu`cūY$_Ngɴۭj[nr&GMM ۷'0zh1x≬ZZΝC=ĢE8餓2d+W䥗^y=vۍZ-[Fmm-#F裏s{l&y晔RSSC]]po)SPZZo;GA(_O>!sq1xL&?ڡ1cp 71b]wgɒ%$ ΑGI$'`M6aԨQL6:C8ٳ'\pX6l-Z裏QF+ۮgo__/@ꫯV[q'l2Fo^ȑGY0~x~m*++FA2_QQ/ ,`w$ r낫 3-Fpi3hh ]:&'d֊ r $ QY]NǂfJ1f:"pOЪjoٜˉ4'TPD0IHԒZٲ&Mnrbߟ]vم~:p-ܒvډ9sp%p3x`x zE߾}br!;{w6l5㾆Ơvѭ[7w}aĈTVV{0j(^z%>у3rHLgU;ر#=z˗F5k[gtڷog}FYYQiX`ʕyX1|vabx-Z0e D"9r$}3rHbs wu_|q=_bkuywyRkܺ{Yx2A1 &iѮ%Ey,Bu5C8E6i݆ʙ (h"y'IB$ZмU;BC^sL$BAU1+ 'i&I($X}L$ђ$ڄi߮-%mhV؂h$B"i]IAA.y~j H8k voL|wn3w\NJnH$wqp c(//gРAvi,[{}ݗߟQFO?񎪪*z9Cqq1&L`.,X6mPVVƜ9shٲj(L Xj~)Yѣ gZhAv(..fm]x9묳cܸq >wܑZ=PN8-Z駟Θ1c| |<){kL&D"9ٳg;fRm6k֌vډ݄X,F,[h0 Q[[K<' R[[mFQQguVv5\%\‡~G7g0dɒ%~tޝ-ZĂ Xr%hԭ7%™:u}kҮs'¥͙85KJز}ICxBZ鍑1#PTBnNDr[uf͡`$Ipp\ufcɤ! ӻk/r"h]څR5'/7I"H$LM:jIҎa\6F]w˹A1tڕ-[2|p6\>qɒ%,\Bnfƌʕ+r-nd2qu55tb tߌx)ޝ-"%+cqmλB(^((lٖpmKJK l EE%PW Y1nC((mAB @ `F c?ѣGs5׬7LRPP!~a ^Cjexbb|{ >}:hqƱ`t1p8L~~>`|( 0g}`sR^^@uu5;3HAf2f π\ԗa뭷oeժUTTT0uT;<_|/X;rgsWC[0EQ0EEE,Y6mp3 .d=gϞԸa ZڵnE#bɊ2vhOV- D$*+YMgf{4o$Ia|dr.kD 0ZL%ml#)%VWzCav3͔)sh߮3fGP^9%`^Ӫu k\:d8Z⢋.;g!pҹs BzIgjjj~ԩvݺu#77W_}c=pm$MJfwos\Lh3gr3i$tOuu5P1cpq1}tsOHUUo&O?4sᢋ.OdС;;@ @ǎ9C\pVWWS]] \wu|̝;O>s=wߝ?SrI'x<ΦnJ^^z|z{:)((?G.]Xh4J-c>ҢEHmm-[&PYYY.b8l ;v [D1l2~?3HՒ[RJټo_nTU0ywTW'/#-!?={mGN4LuUjϧv 01-CUl 99ݜ-oOIb**ʝsY?8Ӄ9jOO/o-GgXl]wVZE.bqmoO?O_n~̈́?6kL?e[\]k`S&?deɑGQq399 DW$IK=fD"ydxU{ U"LjO I&%j,߃uMP6pBb$ ӦMVZ!qWW 4_Ɔ#]:jJvx֮1o.|ƅu8D&cƎ1y]];`A Gg?WZZJ-hٲ%-Z`ҥ|7 `0umwN,x :?(={O> 0]RRR̙3K.W~? 1C^ͱ&R 8Vy lbT L t5 XE򀣁Ot__q/T̻U@3`0P6niqppppp2 uuu|gqqD"ka@v!o'"\.X*º8hlTA8  +(YpGb_Y/3#)[@h gc}:o8Ah zZ]F]]o]t{c|l6s9`8D3_ٗ[*` p 0MLjј(»Ii<,usr;H63`1@>9}R+~'tͣ &N;蠃3f +Vh@?4*a#j%y{b2@\2o{*:18X@rT,ZVһUZOŧ~ʸqhӦ {RXlk2+(p2v{ UOI#z @]VPI_މ3?]n=|{O/=m1f9E̎J ,# Z('a?psL2ڵkGyy9eeeL6H$ԩSiٲe Z 1*I`0'MX[Uz"C4 nHՒMc迖) ,]bNn ! J{_LtB;88881dƌÒ%K/??SuZ;S_bݑnG5j~5wêUVKo$Gpppppp=bŊx7 DFDδacG2;R\\Lmm-TUU3b2CX#16N+oÆ |03bO\|w"{hH޸Gʨt}9#ļ7m 6]8888N cB! iժ19995a߃=i}deaN>n*1 (faB6!vY~g/A7p888l\LD"AEEDH$B$!YAuA|X';+)MCTA_(˰38g`86#opF+Hb7~\?*%\JO> YXD<}qO?u}Ww$ºV6qiGg8Z`ϥ6.A`ϳ6ꕖkbNH/ ՝wyDi^ޠ15LLbL DD\1]UQ*zf:Kf7S?|sܫ5֭8888l-Zsδiӆ6mڰ&Э[7zE য়~&,V;6ŸDLL$tσ"d_R'cUR_w&=Hv?={n%{n"`?^& ]^z1{G:Q}~z |.~V"p4 '?o`<֞Hi'$$1,-W4Qu aO_꺩ۇ[ӱSQ>wccOЇz/PRwlcYݻ(|_{tǺ6tiXNؐ^^vin$ nP{y Hj v;pß9?;3"6`CVHRd-'8\ ~7Rm*bYN=XX;6ѝ؀U%uXBl+΄+Ef)`06T19މc.AX)3UMplYbʹ9kRJ ٍH?Iw4fOq7X/gch aV]3E?Ɔ}G"a݀=0fl0"? n~љtbZI=?`/mWIWOLV"E1H8QlBnzz_I]L`}߯)&W УX?{-,*lP H-fi<lŷݎ"bvt"f>X8 TiKP01U/w{b yʛ-e־ '^G*ßAk1NPB65JgTfT;Ms6'*b/E܂s${(ĆqFR"e/kDS+DNFE{dX5ڹ$ 62JNuzk_p4ֈq8hE0_Rj2Q&a$Z11I7Bݵ#}'Iñ\cY18B$w.X5Z}Irm$.FDfv[`V>]i*s%yͰ!~"a#nIL&uG,&_*rGܶg}o/^"6EJ2!-BGI1B=[&)[i-FCs>C!cn!Iz31 Egs;J2\<ΓcZj+Up6Ǟ=p40c{t@b Z_v@6v{7v]]k i0V%X{Ujw pS#`E{^g~)<&F>2)npppm۶p$HP@J|dD"_A,B߂Ԟ|-JOEwJb꧉-B\b򛅵-WDe46!eVeOMb.&Nq&"ӱjCD.k'1^LwOr1E(x"l)zGhoA0g4qcp3PO2;  ͯ b z ϱ[3-0]%x_hIf@{}qpppppp1` `C%uW;^7k[V]6Ǻ.:ĚFcvu3l-u=RLa)yq,$Q*l NXqppppp}1Ea#\888888h؋fv|j`Eb)'YBlDJV?7ijbC ='̕Կ{Bplem~$uSX {,l݃]888888X~XP.Pp c֎;c+7ƨ XO-յG+Gi 5za_aΆMd6vl` 5̈́bq`k ;R]k '6jhRjFgnlou3(P 0988n?-2 u'1룰&بCzLc\Sp_Wob4Wwaqf=41;c6{ < =rl'&MYlh]T痱X4ͅa^PIt,6߁ˁznm'q{b#ļ=,tojl)/ cXa{>aS 9C_ ]aUYR9cx )YCg>X a} ^ViCp]#S~o`Ri=0 {!OsU60D0AV_O=%.̿è,ݪ[}~_1({.|~Fzk eW`!Wc3 axח6CNC1lsO q}20E ߥ}RR ONð-ᚗ57}}6O~7|c 3n83uT3|b SYYiL<7XTUU+VTi0*/`o%/(3JFK=YW`X d^†n΄O[qd uޙI~%۰'YxP#qc-irj1IMs^5, |$'~ߋ=1X!i;’ߑ ~U"~طeq5SB6`>'mxQ4MMJ,+Oj vt(רOwK5}aһaxIy_ pk1.,thz8}}m}n{I[*C+ <Li:$}O1RlSϒ#j/Ҥ_1uumIu?nt “J;JiQ(m{,+_`v꟏ W\ u*0LXãaI67;1smiAF*# Nrq_A3o= _90(qoJ2jBn8GKOZ>i嘛}O[i϶O}$.e1kl»{-ڮG0>:'Im g/(Wk` u֨o,,IZ W/;z|OyX"iZ`#䗝\ڐ-})QY7;4:4Ck:hWʴ1XH%ZRZ#!֢H*ւx˰F^}9kDv!pXs~ 1=$E4D2[uq slXXbib<>8,"D[}X#{D8~ll/ 籲;CebB&"}R &.m)݅ {]GwA"󿪏D&@5ṓǧw|yBsbRF݁7ƤcY,`m%`fa=,nz a"$bFaݵ/3Ba gݳBbFc-TH7Fb Ԡ<`FKIU,0cGQWi^ݯJ2lZ=gh k1Qm$n{ow9e"iWyֆeblzn*(.%*g6 =\nb^$eGJK+U*W邵yư ^|m!ֶ,M5Ikbj K{kޱ!08* {t.9Wb腵OXωMEKlL8kT%Nxk{o׆b '-VXn|uFu:,_6engPܠC`7[Tק}i*-SyNva µX}nd;X c7c"V]zHXwX=齴nX߂MNǦX[zl|~}(⿗kNZQYQ-gRz*~)X?lԦjB-ۓ/Ty.!XL6i}Ii=|}50>O*nakkt=@.ĺvĺnu<{K}u oZU1GظDT~5NS?OǫoP ƺު2PQmZAA3/kqOwU[v1/D?zׇ7Wo0N*?ñT'S7bI~oˏY?9֌eUD$Ukrh!-"`ݽ:i .}?`c?uw<_r16doFCPmh2 'kVroP=źE!."y|+֥Z;'Nϱ,a>uXj/V[yIO x^{GD`&UDkpO]ߦ9P]uGXj4GoqwR?Gs4O=wP`ðߦ<_8~IՇ/i}I1hgHqYuM ac9Tr\ v 5ڤ&e_5'}D(ϫ-K\=Sʐ$psi>"o.(VyoZagi]V5ޮA-ҳz6>{R`Rj'6+'qEf0V_gdbzC>UDUg9Ҧ IEt^s!+V?q 1 zSt]T'j ;0T넻}ݢvJ;Si]4uiRuðBgރaNCLg걽Ҷ0Io;gJBa"a*t}UɎaIiϪuݾ{^SSye(VҷWN|ŗ$y|ND6 >U5jm2נ[|zQP? =Ҟ={uZƐ;ͱzZ$ejyz靚q|{VKհ؁'v?H:I{w ɛ醖ßjy~Hm~ [%mvWqHx߀916Vcƺ:打qpppp}8֌e>0qXoZNlZb`3lDo6@-Q`l샏nv&XtO_z/(wyWRn:`a}Xo1X-U&9Xwʻvœ;}bΖXjϚG!+ux7OFY*<-4VFaa{Jq?Ss6Qk8(G0܇6[o⿾q?}3 ^N*nf 6 `Jݯ{_ ~6 `+bBd(n"7G2\\I;n7CÑrJ:D?b}W͟}I+ۦjv>/û>a;Gr}[̽ߗ`Xer9ImkV\t_B,tWȎr>xo`{Jŝ|mzi _aoǶZc+714t2?a3 jǐ:ޮ]QU~ߠ6zO 3wHvօqrLck S %:s\TL5{ 7خtnrsslMIg`\ xCST`#%uHQ lW)boبj@lDCOEۏ5OeqY#)5MNS%I {˻xb}'i"iZ_n 6Z<,m} $+.~ֻ^#s]nt@?` y^u|^,gJJz6#RP=)oۃƉ7`Ѽ t3E硷)[A{T;KIQ:}C sgx>TV{!6566!8l4QKpp۵rW z&Y{`J˰>F\ tZV?$)h쟮@c(JyjaEZ[h-d6LH_[pIq~f}aw8GUTZ7ƒTLZEj3]XC!6L-mt=[ 5MezJM.f?P|~7CΗ$ {ݬj5\!=hʱv+9Gۛ7#5׽#NA bP戉h:T<z;,Ol3uT:h[ho>o\L_;%a5Ow+ż&||;_cspNqq=ij,o:4%i䛔&oX6ؽn`m'l$Z w/Xm.;~-:3";bc,Kmt3SC-"{y5?-f9cm|i#!~ߟ졵3 PZd.TݿjyTk?sQ4^2=B`t젱XՄvpdI:Xx8E{m3_}nn 6szj JC6#4~?R}/o#?Lj]ܷIuq1i^Ǫ}d|S*{,^+FL0 YҷwmR%U/OjO?=t},ccS~zW-z?xum5 ;Ex))-v cط>$o-6'. -VK~Z<ܣvbn[-^63DiU#fE;>:e1 ObkLHl'6yG!|FR羺>#'ʕ$:^)f_j[tϥ'GI$o4)zv#2egNe >~] is rŪO4]j}}"/=,+ 5foV;WZh? i|2u>Iׇ5'`i Nݛ %Ow@4&ublְv7G0\X3rK>vBJmbjX!Br$vGԳm4ZگMs{v_w[݋rUi}ZTkL "im#I)z`R7_!*ύiT餎5"ID(& W'Go{OggT̃TOnv(aoA E#L bVGXܡ$6W}jij۟| dP DĈLFmmk71Iտ߫6=ByOgbt/aok bz U)dͮ+e꟝[;^_ڬ.%v!ƷNz$=v;C{"R^]<5lR;iLQݼCUYVNHm4S1w. Ї[6-_C'7ۨ,?4qGĺZ^g1kM- u:ۯ[]36-(?l9O#SrZbdގ="AXj[̺?Q]3 i@k7z^B-;8888888a]4,X#l8ȳ\!~^blRF^ .XWMZY0TDXW<[Ұd7q6X.)3|kuBlNX bv`#98888884k)& LXNu;:U k=X1A=8w`nUǺ[(F!/nu/cf4u=$6l@=֯ ~31no1eb}?"Bc}(D}ڌ[Uq"í4gFZ۷<+a1lr쑼H q9?AF5.f臵MXNX)ơ+Vw$'f?vb4{0b:^'6DMJ+nwFsk:)Xsa$wس` =h؍$6XLgaO\z#l8Fl `Nbk"6^}l(6cjwu %9888888 88888888ah4m-iƎr'Is>p(HMj(rowlPC`~^5Xكeyn;l$wejfxH_7 wc&Xɸcrm6'^*º?}?\w{NGMn)K3֍2+p {b`6&X7E@Ug/z5~u_{a}FX< {SgŞOb|J-xxFlVR|-XgCzXwSYx/6 4VDI$~-0 264Q3{Ns9ʔ7M\#q[ j I}ṿ.Ȑ&~l$<174O)f&R{XW/?1CclLfjb8888l0s(l* 9=l̄Dt[y\eIrω/˳af8ISyRD~I%0Y.&*eB.VVU6*jh;5tF=5$1D,;6qd18FP fio[mkX&N{V B Sr1ѹ Ԟ=qD^cq>K!Ym'p25m"Z( hA}WҘG\W`Uy`J&C "G`խIhk-hEs9X\=a&<""=>cݓ|:W$_cQ|^MTy%Rƪи9Ct_WildbUE<.* %nԹ 'zh.P6ꣳB==C 'b <0C~8kc4)ai<( 2 jbP"=ԱȗTQy|FJŚ g;:f\ BEǞp'Qo4I~/JBn#l'=FD.Kk&0`7⾋`~ >naOG<"-դ4ؼ5u{n?|v{u5XC} x;NJ;ciQovX{$e`4 gX")Xu.}T{P6JYEZGaO|k4lךA' =VR珪\[k'"zʼn1k,ek~^ezE~.vctI$-G{1v3#'b#opS잮񓘙j.+SOivrMwCkt'G|9%I{RVƧufނԶE{RЀ$߳_ބ>W{6G'tڷXr$Ml;ƨR>ݰa#"jwoVen1PU%椶)T,úfBK?zGn5ú+~5<]n*^ېJ0[ץ3_&&X*1ba'G;q cbs|։ßjٝ@oif7:crk6?~ĺnLX gs mDu `K=ZnUߐg`m))"x#9oVjC<xUEIJ88kúf;=4w!߶ɄmTjTR]V?pj__!d3KjgX7L8Jm{;ÓN׋~ߨyºFkh'Xf D uK)_6gbB**ʉbcbX\P+*R']?{Tw\Eoz;Y-]ŕ"";4p_+-E(B6VL|4Aͦժyw~ͺY_]/Dh IkiUO/]U"]_Ly| ങbMߋ;J9z'ntp3"H2g*^YŇ,ze-cfMcE ڶ/۶˰"XMs"ayo!դo |6ʝ'NƬϽR<-zvHIl(:K3MsV=44| PY2n 01 6F{CuQ;]Z{%f$lbJeE?s٥-b(nus{53f*6B̔hW }~1^>*1~b]C(T.Wiß9Z^7QWLvEto_@(mہϕ3+2,{d$i;i `&x{$D`Jk>Oبs]P}ױvVI6GT'i1VykWs?CɌ&T4/;FDp{q$&zw[oaI9HL1, QF,v_'!Q݆Jxu1k75bU9**1c`tCL-PlNcڨ]%oI*l6I1?Py {e-v+_uCP}qk1z4h,K?"ayf5#ƅk݌ȏ)ΏRTK~Q[U8vOt.SDDh:=BD|ybG2;jk))w\k65&$ W_u!vcAxm+x6naTi (mᾏkz1T |Ztԩm4#bp򕯿=ƪ}G)uωj#[aGW~#ށ5BLP[IK@tGա-&tؚ6C5;Qte۞ńa!JPҬ͋-nAh[PĄ][HӰk1d'ׅ$1ycf,mFAB0%B-;8!z QJqpppX H@a^`8@<&$% ΃"  @Iٝn璠N<d@2ILha B H c=ßB HB0!Bk؏1i5_ܳ>kMJ;  k ֋-l\/J{yXϖ[ס+B?llؒǼk0?l/a*cdV@6% < KGoa W׿I Ǫk jX#OoVx$ IFrBh(@N A$9H&dP`3P} ?-D`mVkMPZx2X# "EoBuGm֛b;}X7{^&a-?}{b݁ƸE#6dbls'$^X{}XThDƈp/+R3a <ƺc6Ηz: 6EG]oK# 0CQ[K]úZסڹI90Kɀ>&`?.N 0A ht!6vW"I)kGh?Pc2x2,"i Zb]4?ZI_us6,pp,5Ӝy4Q۪lvV궅=lcjFi.s4!+0LRY 400IIC"Z!i!&b}26HKVmB ̷XhT ?Du `/kQL1l\l+]ole4|dU{l QŪJ8 =F|DwoIWHF žAX c$1Z|ð`|6_>"xCèlTsi3B}(p#+QR[WK`/RQ-'[(uQ?ݎn /gy.gS\EOT(" ᓪk5WW=f}b1N/Coޏc1CZiGfI,s"ӡd{T RLT;8ll &9ikXY`eU4&bœŠ%IuuB FiMjAT4aVi(קpI*t_sYiޢ3db<3q}c_hyf_w^|n&:l i2ZU& 9GAH}Զ[" W560 U' -!1DmeI_P|`y_T?:{-yrl][\ڏ+\@Z>Z O"?Jm `MjJWq֬C Zb888d@҄*@烅l>$!Js(4IbbV͛Lr Jd;U3fgJ/$$=%qh Ay/ru5F{"* Ъ Ljyԉ{HriKN8Q-Fx҅"+]@|թn)'su*E"ށIb.&ڢk8_K_OS%4nuMwܗvta+i:.$>AN'eni'Βb}@/Czyk{x{ZgeGݿh=b=chT.i;Ne98d )DV+X2LX,[^%e,\ӧǏ(7tҭ~b bCW /aÿ0Űb } ñF4 J+gp~ߌt s01}'c[ Cv:'Mx$ c1}c(Z|3}b\}9 C'O`8&b>P_ vj- ͚P&`,y04 SyhekGS _:|g/W+~Cnzނ!~XK#t=W40R퍡D嚭LϞƪOa~adS)w×P!W`aO ϫO: å`? oc\Qk|q?[o0}0mHgm_E5eZ MSj|s_W\3&|}G^Z3W5зo_^|Ejkd(% <l^ bw!6"ԲɲɘL[k2,(S'(dHI{Φ4ِ`Cyc62M0φB`әLu> u*I' ϪF5[v0S >BFZ~uJ#&iOZ*XOYއ,9889 :v?lB E()݂GPUUvHbmppJ 1k (++rssD"cz 888888  BBV"Sxp B!vxu\<>Fs+֣a\uݭz|4Z{瓊{Fwl( L OMM Xd2>!w4(Ƴ6nq?֐~lh~96AдX{bj徽.`]sܷʱ6?Kۂ;jfV& 蕷aǩ<ƺĞ馇d0 1cPq> |=qz\ 6E`;[ kѼ$v'{I럿#6oػ uo$46`+ P")h#O:&Ao5PeoE஍cb*/b`܅a +b+AOr;'Ĭ<ֶgb#{.ؘ1rldA?}&E}`l_5n%{SIEKy]ŞYZ5c}xs'6&Ńx)^uh|Z!?$<aż⋼qB@ӸPˋ% "1YXrol+XgZ`ĺi#HgcE&zv60lP$x6ذ̣*Sc 6O6lEml[EF$roB/E%y tT_na(c}> t%6J"^`U[#X5))N}T#˓*=?EDʒQ74g 6ѿ!>(jW47`mz!pG@}99bfZLF^wn+C֏7'N\ݖYuMtppâ$ }]fϞ͘1c25%Mbǿ/Ij*-gaY%)ߋ=LgVcu-*Xب7k߷8$Y@7(-kIY;O,ͣX0Q`v0u 󭏐F϶L[^U]*XwCԵʾ;a?__t&[ڠYj[lڤܭHE}E}啣hl[(;^mD2"<#t6֙XwXCuz+[o;^XwWX(_}zՏ۱:+{+_Ŝt76cz+)Z4 |,;;9^ wjwv *}6Oc(lk4g!&GAW<ƫWmwoLb=YgRAvSסV2a/-7m]6."!y[{j\`xmS^>CʕPyt9E1ܗ2<Aie䫻 kN8˚[_֎MZzG   %FcZ]c?~} Þ 1;1SFbhf U;axzv2_g a]Jr;^J+'n7ޗ N>0NQ}0C q wb7W0D1܂a8~?w_ c(QFbxC[ 0KE?asT1܎  `  ҿT[򾯾 cÇ0Ûz~W/PWZ0;nz۫ͽѾ6 Á>0\8\!n0^xVTbhˣC6GPo0a |BiWͧo1\y'`,Ɛ=)=Z_OQG0 " wc0T70ܠ1z~fho&W`500{fU^h~Pڇ&|zַO]RrS[HJ~Kgk{탪QS|ޅaQ׌;,^֚ӧqƙ/Œ9|f֬YcYreuEm.4}l_IwƸ76?ͻ5E?R u~L)ИyZe2/0ƇMcƻqLNњ{wj{*tjKaH_Sw8Yc/!o;h%.i,ճLllie [l~5OKMJOkKc!m^܀ Ok/1As)EpbH㛛ieݢ*xT|XTÅZ?پf0^ (-8/)-L |]I*?}K}vu1 diy>"`moL9WeB=R?ޤ-&~wBió6b, +-.Ϣ.:Χm Jb;kW1 h佹W깯i8]X]K@`_7W @ُ1c@Ukv~`p6j}M|o b~}6h]a]Zal=KlݛZ;ZҼa K`Yc&Joz3?[an+x,A{ova0yyylER f\AoOԛ?7g}sB-.L*+Cn z(onSl;I_ʯzelt5`wM?|*?X=MtQ kTt!30M=i\uGF)bpv4r$ԗ_z}^ׯQ6jڐF/^DB;E3럨)-ǼTD͸_TI_>>>Fk#o\! xo  _:x  _=1E~O*[8oGJ [{K6MZLZ;}y%}>#mdNsIgV1gNc}uM(-/\ϕeڰ&> [i˘\Ii4싾ƥm뫇QL b/ =H$%%%vaмys<@1kA t eogjX{imW%Nsjma )-G/; ,ax,m/e3c?߳)aEi`aJ vsUמu}y!>[|z{O{T&j߱"{ T諸OҾ}_k/x~i}?^ީv2?7|v"OGߞg5N5'_iq4Abo_v;r_O{ڻix ӞĵzfFzRޮlTfinxcwg#%=5"[ }3e璣}{waߜzZ6cշ=K{`joy=Zj3yu ?8Қ#M}^qM_eО>{A×Vs<]98׆s̐/#T0lلsօ^wj.;qT W+EIjAZO~P]}cԗ2l~= óO [0-d0_A{&)g+!mƌc-ZdjkkM<7x\}3eee$z5u]v07(-;C>ϐZ4cva:wL,s[ >999,YÇ;馛[oQVV4;1ci999̙3>wܑvkѪU+JKKAb4]9h߾=o[fȐ!@CJ]:88888+#i֭Æ ]v :>޽{g`q 1L&1c#F`v}+mۖA{|r(a1L~C~E&!LR\\N۶mfРAnݚX,FϞ=),, Qք RIENDB`tipp10-2.1.0/release/help/de/img/h_training_lesson.png000066400000000000000000000606251274324046000225710ustar00rootroot00000000000000PNG  IHDR LtEXtSoftwareAdobe ImageReadyqe<a7IDATx}Gvͼ9hWUVٶ$[rll~G q#p˖sQrN_zovv`v vzZ1g~颅 ye_Z]]e3Y$?Gi_4M`B$2`7$a4ְH64q8_#a 4ewZ|g>MhD=f0o]WX09Z-/xpkW##9fb>Lv¦{.p/n]xeӦx͑nc3GwId{׬ٿZE#Ona4'MiW<;ϟG" ֌F)ahԶs[t/4jc&ofMSgX1&:iy8?ۚڍlưQ29bRDh`.b@&<[hMȽlȱE^H'kdj> Bf[/eW-1)QXd۬&K<渂rs k=bچ~ LOFV}vEV FL]c31 o@B4|hCR,tu-a1Y|9G&gjf~`f# r\0KKJ"۷l}SDR?'rFi3gLEcE3S_WkDQA'2Z6MQDzҨndISmE|UF'#k(m%RZ]W/\umK.vʦf=GGIXLD!QefOSF]73Ʋ85HD7錙ΤMzְ 0Ml9SO*f9f@9]el-F5- >kycjPNDm mh847db%)9)P5yiL4UKjTWٺ%Pt rlG3XdmÏ`&6Xi02ӥf_oG3Ct&8UFcޡDž0()-MlܴZjVuUaH&iӦ{+Ļ*D2)-&I27Ŷ-XUhK 7{Sg]eܪ "f@3S sy%8ZU]D Ct^;>$3)҉>FlcLwŚwwH\IlNmQ3>o~S2bD+Kv5JJҩLЄfLEdya*0p^7,Rdt:c9^6!D5͛&C4籂B<9&=–`!71& d:&5K9Cá,mZDhtbjٙ#o{zT:x(ϖP=HjA|m[]~ $&:;vTiiL&V_ŲvJ޲ 3 -f q?-m٬A0,4+*Jz6k^#2:h(4%R=mZFw􆕩} 3FIֺ;6gdYٞ+i%.伃f~ HZ{E\M_vA=}Eo{u%Ęh'.F#jM'vPOPj[bYaK3ǭ^7g1+M57cFZ"ћN&?Wݽ9v?Wu&Q- 25Ln@ڻf^a afnqlnW :Ba!C0vBdKG - V@4H0wS2fh3Đf52"lZ&;"N)=&Hoٺ3U[S[ݾsOZIxFVZ"5-bi&4bRV_bյZU%]QE5)d FsAɤӔ@PEJb5Ikd60ЫuvD2Bٺ|j_{Ic?uDd03zTĤxI+)VubWۺtvp7-\dDQlTELvʴ*KʩaLz,"AzJV[4 ķ;m+DcVr)L !i@ C?x,f+jy&LD z;a0璐fZӲ%OSs3'zNOSc]rѧD/<*5%M?^՚z{c֜+LQ X;2cp>1<Wd)a 5},j 0h2x%)H<5׉f  *ub,%!/.@Tʘ0w=toX*<.Lߔ:]]bΔTG>_arl ӑDEBoGDж>eE HeѸs{gnˤ_ݸ3vAeg&!D#1Z$MΝ`{,))-|x\X+ҔȐzxDjh/-5D ɗM&LaRYN`_th;-l,L"O/h OV0SWzUdvrFn )k|ba['vx&*vx4K1#>Jj 3wJ7NGM核 G>QRVH3~:󴷦~kTt6$lUL NYKd:["̹7Bi}z`p\ wDG$1!hX|4B9v:W& #Kv>v /挪tlNAs)Nvq(CN{>p=bYKC0 Ȍ -\TN[1%vm&̉1b1ڲukc}F[ @Z|YY '.x!PVVjvvY4Z1ؖ!&&-hKt+u)TCa B!3- !0`Ѡ~hFC!CE=B!I& r&6Du!&D8BԍT ;&yXDqyԯzPRRT!0uNRgo͠T~B!QH$<5gJ=T(\0X ! bf*VBb!LJ65=B.$2\Ӫxa`w!L\_$@C::Үb|"#m۶5usJ'r(&.ݥp( Gm(Că>B,@ڗ!L\W&z浃Щ8YJjiN*ГXa IK iM7H s]s㹿~qE\w#Tm[_{hgVjN $A]kۓ)8Zzs_?Q6mI-{wӮ}#m]Ot{)tǯ~Emj~;MƷĘӶw;__p;9GM77-׺Go~Hs-}/Н16hv.C0y!nHQsIс-LejhfvtQO~{o魞j:asSiɒyDt˟ΤŌ])CrlۺMZt7Ӗ=nCrHN:Cm-J Гk=H};=g^:ēT wBz:[þpXyKдj+/8O}x=uyQ~յ#~۩O߷Gzso{Nuu 7}oN7Zy9j9{U%BqR t~>&]wߢ9ׯm:drvScu%h+ %tJfΫS.KJĠh3/Fq-.j[o(I'~JbRENKQ{B(M+f'#5wiVc: lްvnkH~/hÿ_So?#?O,VgJ-3"tWk9iL.|ETQL*kb%rmB\G)Vth?/ח?uƧ.b^zS~{1R UI {v. vǟ=}?NOGڔM?}%K^t`9/\vBˎ9e-Z!d_78(vHJ#)?}^. FG֏ ?zfzЭvPN,]ӣB}VtOM9art Kwh%_y$_o|﹌ QcoKZqW;oyR{K3%3m&zgZGZ]E7Ao\L? ~Mrof80[oc=O=/MP13/>3Dw,JnK) IP<_{>/OBd/ӉtePmulCg_D)2B;ԱMДs}B39Cg*F._I;7oϿ$[wI]voъO:_eIӖR0A:ҋfgy.oJhE2+W_Mohi=Fx?vuae訓ΠJwkCq&h..l ^HrCQ!hvRI2:魯J:mjڹ;ߤi:OQOTr^n-QItvH qǤĭ~}}_K:L6JͯJ}}g޴h[K:6gl1{o!=_bT3e*uwo҇G/oB3x" K{%ݿ,G[` =TV^O%%-kv/RT'.Nھߠk}[{#=}/m2aNTD*VA.~eL8M^$s [ FjVzkGB@^޼J*5j鮢[|=ù:tdZX7f_^0cNzt}j۷%k_{Hjޫ~TpҏӥoM6܅{f˼L3Cu W?sM{B $iJKNO_rkQ|zYKq)r_ξ~zќSiwW"/~>𕿡̤~R?<0)^VA_oAG,JNWͣDž|to;nCƲc_ߠ+^G__pPIQytΣ/|Z0#=C_rZ4mv*C?;R=~G+O}$̹%ΠOh0.[y&_95~B[CQuӇCofq'Ҵ*uwOU%3QG_u泴3M+]C5Z2iKgVG-8|2cyt筋$~<6VP O#g^p#'U zק/-:BkЉ'O8|/kQP+ji葫O#-F7\9gW7}H4N=W9jHs9s|)+sLd@$NGx0Kd.p9Z2<0YB*YF_2nPX8Oҝ3l,9tU>~~Q]l$<ԑ?8]A&Ll{=W7̥5sLlc;ZY3̙S;Zh'RJ0 !,!?t ($N˘0<^wF|nЇBT @H ݉sԢA!Ll(8Vuh\d-L&C'b!L`B1 ysTZBxuzzzBA!L@ =:et&TL F. !DL ˧d.CIJL?/!#sPeW] ۥ@a6C!LF %uڨC_0!&YA:d#9 !ɨ!@hzZT_Ӡ24w(3Bav^C!Rɐڙ E57ǎ!0ǎLa2PnBzN!)qK׾o:bLST:+x^!0<% $SDO2f#zO7|#b9C!IHt`oljO&NglB 5 24LH{_DŽq`L82Է=`P7ozK<y,_uu۲vp]EE۶vh}TNJx}LvcP @^EDaEGQGG,_a^!Q{{{n)D`X,vVy*0%z{( }׻)6v׻<S W ε+BC=֠3ε0W7֎n7og Gpk7Zk쿯s|r5I@,~hɒ%R:5 02navZ:xwWk9w^Tʉ}y.x'dAysw;wŋ%q;4-Pah0%ۡF| ?N:$*sG0)A 1αRkJ񡨇qDT3`Xbo5ka`%25lիW1#Ve]Fsd`/g!۞|r\ jp LَV?x@@YfqG{3g* SaѢErvK>q ~ 3f(ހ_`-]ӧ45sha4v xԃ-Tu Qh ŕ:صkt.[Ly/`* m;vݻSaajh!@vhf_*hc`mjjsh2nM~ӟO'8?Nh\r|ƴM*V o z֎o{:03X@8@*q %av,N L'|R*5vuV9xۧd w裏J:LqN09?rN߂>S4uTz%΁c=;OB0y~+ /P|qU&<!UFF[ eUU$ >plyySO)$a?Q[USN9EpN3Tu+ d??h&XU_vV!PXfa|K/T]!`נ_8 #9s9)Ũ ,". 0Rչ a2vGynV:裕^''~z{/)?hkkĩJPy ?B *;L5Ʈ~~\p<.cR5!Sovdc ,!LONo/-k-~ULjO:0` 64`^n[j!ϢJgy ivԧ$c1gC,8 qp0_1N WvmπM䪫 #Y2qNq{= 9^$Gy߭?CC;x\bOXAb 0t!+*ʇh}})и9; f+V/aߊNygۙ k}A"X9*g$=J)4 Z=;`j{ΙgA,`f%%܉WBb\oۨ- 3yX=TUs*y#)_19\ xuC2zl2C~7VqsUڳ\@9pįOisީ=];'T`Tw=k=d WZ!`Ⱦ=i5^owhV#Pݡ>~TpFo\Zo~6~C%8# A3 BA' T%R4UTK5Axط$#}g$h@`?^S$EU G~\K|¥z:>7*x]wWZj2,"a7nUafB ^{wA`b$ 6ŜXng)A#aBq Q5~j%*C$w2R%H1v5Ɓ S01|EHB-Tr-0~#<]$rJY*h T^fr:5Nf?(˧a¿l-H#EvcONA%$dKQ!'QfBDFU ĈχPT!"!a ͊w *&Ʊew`}YkZH+>QͤEcR84 #zZ z> IJXdA$ %Φd5`7B!* .S-ۓ` : % Glo*@ l$a RB+ j5(E(TxWP.-( pH/kэfٶQylC9/vBw;z\/$.01\; Rd#1q=v) 2$aaA,(s*A. \!HՎ; @`aqyq\"q~V//l*x֨]SU(Uu;hG\Vݡs=<)6ЎSc H-Ĩ (Ti,A!< GC(&Ž(+@r?KPOR+I1 䃨Y+@M` !a!T+ O-'@TB+{ TUyqЅvc #`w`Cq6 CdAbTD}{'1խa|CІW2*QMA)X{vڨ0hE݉U` -a jOe<Q2pd-9e|!xe3L;)p V>я*ة9ڧ s4{K8x?lAHz&xQf`&,׻[~>';?V#~9%#iĝj{0!gCOvY:i/Hr>-u 3q.Ϟ[W?)v];mZ%ڮP4hB9*^U+V}/½wA6v s, "pFiaVQmݡ[Nu;nTr!`>jڸg^GεS䄠kjuе S6HqzR 4/HN/@|!0 gdgMMIH`3Kޱv e܀y ]]HDщ~Ubط FjhskH@pZ)R5o!e1AkdXB >|ѵ@`j'vtb LԌP6mP}9ڤT Il>9.˜oҞGs$~m,-))uho/׎p@:Uv~4kǛx?6XC=N7p6qhKBPO lMLJ1T|IbZhjWDH 4g}}d86cH{,]z8 `.) 8E0KMpP }Ms)v)8lyXӂuMޞ׎G=IǟYx|s To!K3@pj c%b ս$GѴ9$ɱ nMIaDF2E\/ >8,y  0Uj; }I{bgUWk}zu]W}lrueAPeMg~p}waP"'-<^{`qm BPX8ўM :9[Od߻^F01y[ad@v$-G,l^N>[,KDoU9e⃜})n.B{ʢ&Ԙlfiơz`6ܭ)G 3_?+Tg*sdzn^Ȑ's J56vTBPe zڒ:E RTi0z"; L]xZBfڨd>XOeڬΑ½εtzK 1YFP6`(?U,}a'#\~쥂OhLR1H fO<Ό ~4Ҝx?x1i)n;t1_%>%b# %!b<~XLөL0u>Jdyhں)BH vа$ [a7}Aq9OKU̹r o EZNr:5&88H:&25bUasEDr ff9 /Հ<POU:pa0>$r{Ֆ1GD fW5 H$*Ɯ́*B;\䄁ȺCh]l}¤sT퀃o.HA`N?# TS|' h?Ȱ^kXK_=o' 41M7a k]E0on׿^##BۯE{a,ҨA@Z/匑7hƍT>nDc]_B ;COBQvN;w?#JV~JJګ/uo,;U#!__?m;E,M&Q@d]Hݻ z B"Zdr|C{8刌G-8F|iN ֭['^ *{.'$+d"nAex(C5<}O*G{2/Ui % 4Ƌ>y8,'@qp9}  wJٓf+p:4>@0*QqƏNX(Ah TPc\>C"v)Jtd٠"H Z>AwW+svN TU 9I"4_*A/ТQ.a'`r6!2f y=c 5N? 6| aϩF!ey-HT%L5#Ut@*P3Q[ fU o+g?+SU~C#T E_ U*_0ڄB#%*߁!i&!D b7Jfè89g#,sLD\:L R8Tx0pf V' ug|;sD Ju cgVe7;pXq1-hSUƊIp橪  ^ߴ ¡Ewr ]z[OL  =fejjʤ!V];N /jh(k09s  $0~T/ RL swϑ%`BK <~U3+y*ՓX@W~P |H.$55,p<`żv{Xyv'/u?DŽg^ٗ[`͝;x]淽s}1iϗi^;xӷ3k @ZX\k=\qk4;Z/t]i/Þ}"Hï[>ߵzż*b<ҁ:1jD,/#UQ-y'@h%B۔B曟fxƒMy`A2;բܞ)2ҵcjH匩@1q~:Z@v)"Gx`6yhfǫ:@Cе pL7b];Bk7,cW Ua\ZQL(𔎆0 * 2PEK)^R(ǠHL*ʪ)$o[xXwPcb|"L|pEP|gspgC߅ v\,}l]r⽞GZ׎r=D0ȉsUΕ@0 9lqN`&DmٲYE:׮p{0s| {.'];h.]ƂhTAFTb^[ͪ40SJ1κoڞjf+a:j.@_1yMhsTjځh7}yΫtoؙUۻNLj1Z+h#f S xW\rUۻ*sVwVvҌJ^Sa?kgՇ@@h8+.Z;ڏ5oGӦ:T`Ow(S \De&*eȀZ'?Zb;2e22JH@pn #ݪgq#$jp𦫖 B69E+.YUMՇU۶e^*!K#AֹpL`lZ^zL톙X lF}{4w4aԌVH#9ł Q{U-:K qqpt _tE ?T:sF0^Co0:, E)12@,bXy7Sk]qrH>b] @E?(wÑzPAXح"}dҎClUkS SAi:,%~/_?6sT}BӄtsrgJB{^j)LU;>QQ%bI)NI=hp7nzu~Ip?pWlip+hݷB?? 林q(ñ;{_ʫH_ =Hs+ZL%}c_)#mX οcϯe kdvq2ڍ5N3߲͑"PN r<*p`+(2?H;gН' #MAR!˙䥺8kMk7R&O$prH( Rni SE|!AS>h< n {oN3-YhL^;SP-^k'rpݡ~q!39+ƥU N$0'S_ލ8k /(MZWgghM`]C_=$6.˪~́?qagƽ P}ǢX% ϣ`fS[_4Z||, 9XF^vXIH}wQ wYAˆO/-ϛoIs㱱mG|/64.pE3YOa" .A9a!0HLaB\|UR!BF n0޴P"Qe%᯸G[=2yF ;S.*aCC@FDM? 7ޥت%@~4`"׶)zaƳD>Ve;t뮠W?dn֬Y#co@m@2,0ƈ$>PT8B;A0MDG"@]*,c,U.4Õ*zʷVdTA HERCUmq $]V އAc%L6!cZ9Pf='u H_~ez|8FFA;pB^8yBqlo^ ZnMvHZ fC ʷ@C n0DC0Z4 jk+VtvZj`s/0pSk_S}@W(3A)@7'\& Z0EnBhzcRd k=\BA{P݉> P \A$$_|4yk64`nð:4q eܹR3fDBq\~岤իV%Kr'c5BMCMA_G@v !ٶ~C;6@W^yEICiac! m,O @%d[Mx %H XC1d;eJg }Vd/Aё|ZX,e3ǂ1c3# !SߝŔ@@S85""*w~mBq Tsnp/DkL^tLSˢݼwlc*T'D z "]u" bX {.Y wNX< r?7ANv!@,ءāSS.UDN4x96pX+@ñu~ch[v# cQk:,F{|؂V:kbck:)8JT-llA*LTxF#8 r Zc]?7"2Cԟ(Zhu,?Zc9>>svIkB!zBAI LB?+`UD!0>>>sIYB~3}9!>QB/6@! Baa2U ! Tx׷S᭓i!ÀQ;vnV!.D|!5.X#)ZR,Kovcx p3'2?$sv݄CB F;X#OWuM8s('Qyt܀TYtV(P)Qyyoô(SEr$ub.|&5sHm (+8 B,{#Kk$KBG)~6U-LiI?6k>b]:j4v Ll mk #kJxiyFjKUҹg+6P ^hܙeG,"-G)*JP'kdL!ԱN^sgҁVZ6o1ôפ3O0|诛)igJSf/XLsgN6$hbSQ^&4!ݴ ibWEKi B%5T[YNu4^BiWKGӁ]{>}fڼWSѴi@J Y3g eAYјDKY$CPiYš0G^p=QK sΝM*GKfU osPPw,^FBKQ:shެZjSMt6q좆Y󩮢f_B Ɂ>2ublW%219ذSs?=ԫT9:B0^My 8U 64A JЭN5R6vx,<5cB(0m4UVU М9HK0Ωa=N7PZ1khj)3VKIjZ4Bݝ+PR u5VJ5QW:FREY<*a'[g5B{I%3^̜EణM#Ciag["4Gp0 TZ#^V d#TiUq5wD-a;wJIW\FB`Ėі۞CռTZLo`2*ѬK(*ۗNR9xAM1ˏt/b:]u4oH@_bbݛVI3PRsShJsgM!]8oU&"a~4MRCIjibs>3iN&Tɶ5$TQQ*4 ZlA`@Nζ;cG-iZp2eDih^nh]pdر9^0y8XM# _YHn5}#Š<2X ou;;j.f0y^srJY@-bǙlsFMjoi%Ym,'Qi9 {؃#qc/c|L!Jsn/t>Bh4Isۀo^'7m0oHAv4]J֬q{ }_mܸ97_{2+Tvy`*4>۹`]afac;7SkZ+t/'Ǻ3ks;Ak5iۋO]uG-;_8c,y y(9Qp}4,@g%B8\EQ/= a=BxPH hoC$Z!0zw3!B@!BB!!BB! B!!B(B!P B@!BB!!BO4ɝL m2ұ¤\̃1P* ߣ ң3^\na B[.GіKgTrogC?;^.).ŗCaR 0 %˜X H$@U{|3$b,hޏ870000D Y @q\],dx$¤`0 ¬!E%`.;+ 1#~,(ivd_fv}:;os<6~έ;W=w&s A^ `ch$̠J>Ϳ`QMPYk$7 ;з< Sr<@U'6}=;oСƣ,j\e+vմ]YgۀI=p l~έ%w_߿#pUKZ[[ 67>qxŘL2/Օt<}c555 hPi6xr`l:&~0 SrM7:}3'LB }ԩ9 Ro-wQV:`BgϞ=Z®]bX **n]hAxfK0(8P7̀g?k$v؇mX(;^LT3}Ⱥ$ 5m B:; W)l z#]~A/1a5ӯU?]^ߖNg)^'m*̅eTt6A ]>A ?\ 3?d?‚wug[F]<g,Z?_\S9mPiJw?e۩(yQ{}f;]xi͍dJnה/w+-YCTnJ"8en:23oAO ө4"ώ^]=tGQ22>+Sۮ7m (Ln;弙T(Bd`-F_{? wWNô|v-A^wNvd{i%Q-EkowA%/Kgr fݟ_mdD& g2o_yK=hsN}w>9.fקw kݽ6D>e@U󎦖Dy#UPN;/ ͩ(1ӝ7CKN7S9|ФڇZR~+tyh1G6AJ]TQC?8uzJf.KPM*jrV=tU R*-PCf -YN \}[:w%Ueho[?UUdiѦ훩bb,]+kIkW6tA*4VF vɭt;}͔Hgh;&]sӟ)VVJϴ5A7@lj-w?OB@=t`@6E 7bH,N{[nR:&zW$:{W1>wpFi4$I[i=BoyHg v=Lg{PFwaG}n[v>br_-׮t;1p_ha:/cU{o׬UG6Qe MtGim=tGsO>OGy6-H2!)1oM}N<!,$a1 DϽ< AP1>4RumLKּST]UM^fs}d<؜gN_LsgRTBk'JV*khYXH' =N9a>u4wSZ*c^j.GVdBC H:֩>GӧO_۟X NXg>]?63TNs S6c&KI Db`ƐO݃ $5.8>DJqd7T~S%8˽ӱ {ȾpO G/dYSQYN&;s8=;4sa~$6}fcJD´M\C5~5K,їWo.WV2!n9)grPpw}Dߝ8&j"0Uy`~' q0ӼB;_~QC F41'Ͻ1$猥9tpe]BB\l/]m(BaCЬـ! htpgTDDi agLB6yp$գ}=Hl{wϦlsUm T¸(v*Ocτ0<_87cQ*_z3G$EJUdzω (GdGf;&W S#OȴF7ư2x=v9g;øsjaJG*D(ӄg8#߬ DC7T] \|۽Tyi6z"St?hC6l&ٴJ9i޼9J3vv-LwZ= PbvMi)iźb,TZ=䳲Om)pkh_֞8-q9:bnsp81m\X")d6PߔGcƠ?Lz!t=绶m/H"IENDB`tipp10-2.1.0/release/help/de/img/h_training_numpad.png000066400000000000000000000404121274324046000225420ustar00rootroot00000000000000PNG  IHDR LtEXtSoftwareAdobe ImageReadyqe<@IDATx}ŕ{lA%D6ೱ9;lt>}&3`c09JZW5;;;ZmF;޿{VS?߿hႯ\w^WXXq14A bDv!:Y383i֠v4z8Oו_[aRa:8cQ HQ^L5MC\[խ"VY`돆KeL?⯆ed_W>a&n^t<&vw!ٯdq4sd&nf;h]yu)k$$iBVdKvڡ7.ek;R{{^\\n7ՉFlF}4LtlvWTnl@O$]Oz>&c{f0!!֋ ]]Ρ/|]U}NJwFܴDMsVג48XN͒6zD4G7jXEHN'9:TtSbϮn`sEUul]"]w3"$z4SjR ?zk%HȈ~6<4h;N?seC3.Aowdûv+䵚WX#޽ȊKb񸷯+ hA A؞!O <=]1?Yv?V-&*b=bev5"/ă{7y#C,5 i."}~Jˊb]]򪺸@[q~SeFY8jA|*bxԸ7⌥t$$fZd8$e NAwH2Fuj Qw|-"4LhZ41#r6RwHܘPM& IVn;n郚ZP[lfp΢AfW>(=Nqv`p\3I}\M;vuX|Yeww7iFԼ1~x<獗Bk>@_W7wt0nj> P]lZ2+/aZ=3yy=AVhK .{pt ?x }UѮژ:[=KWDo+]k  +- ڷuͯkO$EHڀ9R3`pڦ{3I4c`ILj6OK!XAa,:12Nvhr )4ǥR{,1B2@%h,޲3m^i4˟`6hѼ0!oqaS-b1=_y(а{8Čp{[w;Dtpmm1Ň5voXh /. ç:z0?vkvDžy&1\<: Qsp1I#Ao Dw4y`j\n~i֎]Gy qhKoZT f^{y͇G󖛻aw[j#i!ԩdj{%Mdc8cW&SGbOhNU0S+R8q$ʤ+ÙѐU[`Z}:n8FI<΄i.@uWf52mرcmZEH1[&p"WRHqAp@5'3Mt F^/Ub }Sn%G;4S<3KyBvUXT⒊xƴ|_յ\uAL+-e,dL7>㦄sV-%S^QN ^Xڸ^C`adHg3%BZQb49ҁ/\-Mm݅}qיxgO[w \G1y&F+}Ee0mu&=hO29BLWZJ"I1NnI C `ͶD$$!;KL`DfyeCpBTr1] qzY^>\Qϗ{B+Wmqz&^%BePhRRbjEU`ټx4by]z/w {;8CB\cF4i`%%~u[+”k=[ |F$b4bq[)aD6W)ɗ(Gʓ.d<`# 5$0^J 10y4~UG=(!i$ &g,~kŽǸu9c)Gל1 wb2Oe#ء2h Z1hI7'N9rq-隍=LƱnztQ;D!.$FD#D GDr#hX '];ݦs q]'V 99n^ U|&8;=9a ^iLS骩h@,ˡsk]vvmOqR6c x<ݷ/ݳ&R ˖qp!#my9I%tI s $!e/B;)ZPPk95Lߨtz9 A:(((UFU#R-Rc *6AAa˼6VDq2۹;[Rfղ $fu{^3⥠0@!ʤ!ᴚ3t*dzU*(b e6DEz2ъr-*(Ic75] lܚHd2xpR2X¹ŝ셽bJin Z|6aYYf@ s_*^@Lzu'T{6#m#'Mѡ!H;Ba#^Nԗxali?{= zg}AFE%V۾døkn o~ /P|AiP;[ǀ|ذ#6_O}?.~N\~ޫx귷xg\.|E6?=*rY?^>w}?}h󾍸O7ƁƗ~0|߻5~ccOއf 掯}ԗqŪuxV="->P)f3^hA֯[HBT‡J+]w=0z=Gx_cѺ˱$˱qZ; snnQ}˸ 4j_ Z\{o>{jiï~y+.xpףѰ&ljƮr ^2կද>㚍yxW_.<ߟÆ ޿ 8GX-[^ӀP/8^_.j#_'y!#.#¤4MK)-$x)^xWqg?O/=szz3еo3 Kŵ;Ex+ʊc_8Noc٪k6Gq BM_ : |}'o# j_ϻpe}pqͶ~bmgq㋏ax8O|li3!)JZbI5RaC/m*je\ k֞2qck8cjKض.C GRN_PT{?wx-(k\ wqΥ}ȃu箅1~W\u,~ݲ#Xt4Քո-0XPϿ[_nƛ^6V%:.Klۭ: 0׺V 8⫦ê,/11Tԉ(u\G]cJ\peY~ƹH\]N?#mq^NVG|_^ÿ:% uhsvɵXː0*el.v|$7m-qTGY5M&8=2jl'-^3^4̫_YTqL9iISNJM:N->9pQ6eOaB9P)V i,j%OA띹堉定| sHw NDKeb:(@Aavc,i]:[V=5DTPd6nv"dq#)((BP ii|f\Э(c`tBĠ0|cLQb-˲X6'VPP8 ء ۥ05lNz$h#'X(T((E (@ZrM SLjÛQ W8q`M<` JCv֙CP(b%CF&Ӟe܌qN3:Ѡ6!-!+Ma`:b w6¦1Py }V$D4ytvvG٭[XY<>V,LI4矋Pӵ(Ž;(4#NP]Rh$SYʋVDD zݺu9-VPp`r9HH\Df!'=:=n7^8Ӊ+e#D c`T$q21D`p&LO6;d-([F :Y$Ce[}&iag#h/u&s9gެ|  sA<[Nkq<0.n.lp(YS#EdVD䚴_W;L+(BPJurf ˅`0fi:k"K%Q@ӳ>+4nA2!(%L| ._N˙ v}]HBb9mˊCPyP0sM, ˕JTV'aw Et|GG~{Il Pl}'vVJCPffh;M6,D&d֭Bàȹx m0K[S9e(BPFP3 ^u1B DŋO|BJ.3xQ4.|# 02y9(MSh(qϞ=Pӎ3$d.}{s)I v…?>,YqcڵK"@ J6(?*Cf!WʒB Vê")F:]jPӕLRˤn8f03ݣTŨHNI=)6Z^F/fS^\(BPC@h$DX*ODn4ёs1/1"4d@#+#H7n, 3-t^bZMdw(E itd"'ZH`y ̹QM_!(8@b!H; skd>2H'6!܎^"-A&.ezR"٪t*C.u)zR.ʵԦ" Đ@z-/G; s!3'aAŢaL~!((4e  9 'r*KgE 3 H Ŷ&I!2 ]w%1Sn\HHO~^",Dœk$"6lm۔2>v$E3$̤XBD~h:)GK.st)=;Dfl~!(L@LP\܌zHChmmIˠ/8M)Bj!4BeZ"^0Qnl>IsEDZAaU8NEZ u:Lڜ*(BP8AHGty2t:e |.AL L~RﳱC 3A.vPɧ@)Y?[Ũ0u, πbs3T6YY^ 5-a>|2O>)yoA#{P&(a:ɀQn7_&b%"LMl`!L,CN? z׻?QԉL{ݠբ&CPCI`y %99:'O9\fybCZ8WZ*(BPHQz\ ~"e>6iVBCCnyT&eVE Y |K2 OL2UH nI^rڔ P9CP 1Uɔ=eMEڙMZE=PMU5G!ľR)Ds"((($!J~)AZz)id| JCP[_XXo;w9'񂜄 ϊfyn 0E*["i555D\ 6n(CPFFJFҹn>f 93(BP!@/̉C:((AadW* Aa!zyHɉy #`ԅNcA8{"(| bbd$I:庝f( aƑ-AH>?A&25@U Wa(tub鄚ePPPP0P>m!($L@\+L>a@8er&Esjړ"% ʇAAAav9WPEv!}:״$bW$DW샔]Z6{\Bj2g'̐+RCuId?]}.~4_no,c~ojgH+\~I_Xw>(q™i6}rB6eZ `0 `joQ B-hM#=qlkSscT dFmӋ ?&tP1Ri7 uԃ`&Bd.7S[8&9%onkr~x(uDȪ5w&4 V2ax,g B""bɆJ?LBm/HmO$6˟p:.w"ɏg Ravg259s$S>S?pU5=^O#3 "myѴc9XўCוoc5P^YVR]ZZI%t2 S_V01lBDsK| XhCa:vżv!)Vx^߆: } m i8F\I܀ Qבؾ^O۶nP܃ʲQk%AejI tտ;T.Y Wlw:zTfƇ5ȵ]6n~ܰ酇 pk7 hkkC_1M7> G:1h;Ԃ~TTb+ϡ3qMͽ|/>]_`hƫzQ .>Lp:{ZQZR$e[ qF?l^ZuWe"ZԾ@ъ6c[s'7Vq 2zPwuȰ+Yj"f'i豣e,Yў8.ܿ~JCxذ\}aX!I.hu-[q鵷b -J{GJ<jj cXX6T/8@! Gc13;pZk)ŧqtCC(,.F?'AX=QSV!-X q=;{"u|rh'`L =gpM RTUrb0PQ^ۏ|69K\/Bq~R̫*nWG=|dCˎ-h z *+ !/'J1J*~ډǗXB*zUM(w1ǂFWa> -\RoDh?ŜzzQVӈ|.8 P[F8ʰd2<:/.>[5p P\T>c)ۊg_ڂB" ^QǵS/iX=/6r ~~_¢BAODJc]mm~tC}iLha|\G}}#4yWYeDb^u%bOorBc0DCXB?`fβ*qYvξ-8}͗.a4ͯCEY8@>'eؿ%O~!>UCckERGz\~1)6Wʻ*Q]Y)w,~θŽ'+1n JXW(BCx hlZ-5U%BܔG7+W^]zq#13X*ɲȈ`Q eE,aqs|30o2a*go.[ufoWA%M.\HҮ=N"iJ=K(r㋌5X}#+ 75lx١t$LI6e]Mu3Hb})u5~SQڲS&Yնn\;v x5 ^Lޤ}I !]9\υ7ZH39d3vnagj)qcOnh/$N6i>*BqOnYw:r6c/u&D]_Ӗv;e#Ѿٞt1&dK?"MEI|Sg!57ڵokiU' ''c݀SZ&M7}.~ꒁǭvjN3Fm:Y2#J*WT^ʄ#ϨؑoɩtmOex7S5$ esKSO!e=y L"w|"'iϤ!Mnx0K̔v&NQPP 22|2<.UK$&Aץ!K#uםZWggI3s g:JKKQ:q=Q6xt쎆B,M H~238YVHf:}4O:CWA }VUU[ 'nZBގ`08.!н'4\%6*ήcǎ<$սnJK܊iggz rB%t"=(7Rw_ FBlG#!2R4;RC契0VJ  ;4P'&v> WS&zӈCιyN6l\u/L2ymilqMʊʤ|dRѥ i&oFpvm5;MI'g#gP$qQYV6\e%9y|tNsڠ3 ݎ6W 翂QXSO3`00;GEh۽ Ѣ|s֡ wu#N5.m/a0XNʰ->kشy]uCx@ˑxf.\xy3ȯ_mB^XѾUGpu7Е=PЖhF#Xzj5uUe0z^ŞCQ7*1s>OkHp"/8z-oW{ V.YُoAUpn c:g1Se:V|zə9 )I8ғLדT匇tL:}*OqLXtAoVh#ޑI޽l=ƦG'bi밴6G VY'V‘ax򉧰{,οൃ8Cj=G>!,_n<>߰]Gűf%ݿ'dz͝atڍPMEM9C0XP{Z,$G Ac\/yAD{pH'J⼵M͢zx<g,K#͈UAG{7|$ڱ64퇫?ܔey!\6aS}Kr6mDŽD?18(:G&mgjX:=,~<,T@90!O ]TNs Ҍ~4$#NC8FIyd#Zp&وi6ȚK ǖc.qN3ZnDΪ؆{=iUy#bCo,Z̄`d鄝 z9kW;eiTòuHizȇ$cRtD]]]b:¯YPlA%,L}ӵMĦ>Vd, 3x,PF`f[ySp rԧ(6&Haf+c; E4t"̴t!ʦuݨ 'F4SqO71$猥9meGk R^tb9ۇYS=cTPP8Avt.0.7Z[[񸩚KA$nd^8!{hp N 7vwt2^bǶIp|JYtVp-VY\cALYtdsi,m{:N+fnΎ < q:.97=n>k.߾@UgY%#,ٱ-5hk3_15_,b+-|7ƴVz2u2;!VKv`#(SD;e12#qo $";E6S.)르{4L|ccܱ6yF (1ȥzo{Ұÿy7N IENDB`tipp10-2.1.0/release/help/de/img/logo.png000066400000000000000000000122061274324046000200140ustar00rootroot00000000000000PNG  IHDR" ^sRGBgAMA a cHRMz&u0`:pQ<IDATx^͛N$K=\ͣrOz^snF r=-螋!H5Uq8Iq'm^_7}/\UI:%e&:l{/sMrI_0wK]έOY:szmll|RM6!ϫͯ|y~5mIWW _]"N̕uӭ߅ʹw_M̵00RbL$ nsr¤57.KkP5vy꬜uyOֹ֧͓񮝺]dkfM} .C\I7eq/1+euv덫\̚դZd u8҅U'~,Pp͎]q~CqbNB}߅Pz5a5_:PUl{~Mpz[T/絃4 $0l<[`#,˦7$,↷|(&=p?vitcZ\&ǕkW&bo'wfw{wwa=9*uT;׮;BW/sZnrBٯomzZ~;Ϯ[O;,\xt?tmz~=mi7׮&@gC([VF-ž]ϵdX("t 4"ww00K0{0 0 0-<˒VUWS^,nt"Rap98(ڂn}:{ޱ?YR^bpaE؂6NV~7唗nxUyuMKz~yY&cj6wӷ' ˱~dDGǾKMKQ<O6Ir!.4}]{+rDR 6I!#(UNcor`[Ixg^\6^Z&S#C\>WH8Ι5-d7GJ>4^xKrbc_L6 u [x6 oPZx#+dB$RYa"?f8!>&x C xl2ZB.=e; #q_qҘG hb?WEPEuǟPZHo}[7Z58y S j4ghķ"؍rw,lVV&EB5uߗ_JͬP(|/f{j#ʺbxtBî!+m NbIHtWA2YND- tbrs$2V⟪o_GIZ} S-(mo)x^ɠYB  @{11,^Dmd躮X BVsZ@G򘴖8ɅuZdX(ZWB]V#`\DldzwTrK0Z}Q13[ڼ['/5V/ b@J%~ Qڶv!x@SI 0R+ P-HmR=m!kGaQk*Zj5Q m,|)(M_^P|[g治pyDuej|;Jb#%SJ#Sڲ, ANXͽ:@&/Rè @-qictڪ_x 'rZYZVUw9҅>,δomj |4GifAvaVq?+U @ ;l'-nUmTW$x%SA*`ϭ"FҐƮ0^YiEdSl. gR|zVn_E^X+'ܖ$h`\j uX꾬Yj( 8t.n_baZ_5֝U@E:hSJ.ڛLH=c >d4I]N;{zցN&IPK_v Nl|e)L!!ȉzjLPOGE!ڽRǡ*#X_)0KN l< *M70!\6uQ8}#r4 shP.+)0S"?RBOI hhȨߝ{ޠn6B4__ 9 RѾeAA.L*>#'H 4nV#9 [2(И) /nVH Vcד)kBH?n b &U Ûi#}‹~]_LQJM0Ȋw+f bh9 YJFJ ~(Sn?cM`1 џ ÷sƲVE"`^6)@^ȀT4V=}A847cSYK˷2O! E%ӍDPKyi/v( Lɨ֩;LHuNk*.!Y p6o4'fJ.`qH@rmձvOlUKƲLo7}XʭbXMQ0a;U!n־э9:*@ "vLR\7yDC= :M4wK@b0ɬU , ABZ*2Y6Wdq|SaFPSNx߃)sE&Jd߰:'Jfص nA Ku|b(it# 0J`8)?=He oGDIU-8'kRZⱹmLVX6GLIhy9l j#ҨˠQa&4)l`Nj!}P/HP`:wZ qJjGQr ĵA,Keͨ$7Wj]2U`Z{yr'!jhs#/Qg uY tQ̼ГQ'A'2[lz6zLxU`^&9[!,PnWH.,QtgZc"!H1uRAy#o/|rgy g[k3!T}K, 07ݬ(r:LsWMi)BB:Ɓ]@(I\a$,isN^H[`U(TũW:F0W/jfZ!B塰l9YًJ" .4l%lan2M^zfdے`t=FnW)dv3*#N_i nTX Dat|pF99-YFyؖaKOm&* )CUG:+lF!;ax}CnXSХvʹш7u@+J ?zi]awёmL]# O' 6+cLj.H5GAGYGqB/VGVsUm\5un˘G;7 U}h Wlun~'&JP\h#ADcM$E<"P E"GoEdefit?z,"L!`%z0 `1G1/Fc==~=hx;MZ'c 2leUy,K1sԤ`;pX؜VlJk?_] = qlO H$xrtȎq~klUiGԙq,) x\(Ue$ ˌ>7'(Eʡ\T援G+"[dv jԇW'X8z2&`B(61MV'>pֱi,P:|T1J@qB,Y{ 2pc챟}EˁP[g5WcG8 ܙ@S4c^5h|HIENDB`tipp10-2.1.0/release/help/de/img/tt_logo.png000066400000000000000000000074351274324046000205330ustar00rootroot00000000000000PNG  IHDR ^ pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTEݪ###DDD"""ۇfffCCC!!!EEE BBBFFFeeeggg222$$$簾vvvUUU111333&&&www555yyyGGG444ddd%%%ttthhhcccxxxiiiTTT000uuu˄VVVAAA@@@zzzSSSHHH'''𜜜ʟ666WWW777|||jjj sss888qqq...```kkk>>> aaaIII???PPPҞ===XXX (((RRR{{{󂂂///2KlU&wIXzsvbOf8"9Lzcze*n"gک J>uTd)hMuwP'F>QpA&ب8NA=oqiG0]&MJiRi!u&W뼬wiԥaZ>2K@ti Ild[ew7 T~qr=Le+yDϖ뜭L~x*FRZى3Vׯ1%[^iRW?\rDpTI&]74H{yIENDB`tipp10-2.1.0/release/help/de/index.html000066400000000000000000000141541274324046000175730ustar00rootroot00000000000000 TIPP10 Bedienungsanleitung

 
   Bedienungsanleitung

für den 10-Finger-Schreibtrainer TIPP10 Version 2.1
Letzte Änderung: 31. Dezember 2010
 

Einführung / Installation Bedienung Einstellungen / Weiteres
1. Einführung
2. Merkmale von TIPP10
    2.1 Programmeigenschaften
    2.2 Systemanforderungen
    2.3 Benutzer und ihre Daten
3. Installation
    3.1 Update
    3.2 Installation unter Windows
        3.2.1 Installierbare Version
        3.2.2 Portable Version
    3.3 Installation unter Mac OS
    3.4 Installation unter Linux
        3.4.1 (K)Ubuntu Linux
        3.4.2 OpenSuse
        3.4.3 Puppy Linux
4. Ergonomie am Arbeitsplatz
 
5. Programmstart
6. Schreibtraining
    6.1 Lektionen
        6.1.1 Übungslektionen
        6.1.2 Freie Lektionen
        6.1.3 Eigene Lektionen
    6.2 Trainingsparameter
        6.2.1 Dauer der Lektion
        6.2.2 Reaktion auf Tippfehler
        6.2.3 Hilfestellungen
    6.3 Trainingsablauf
    6.4 Lernstatistik
        6.4.1 Bericht
        6.4.2 Lektionenübersicht
        6.4.3 Lektionenverlauf
        6.4.4 Schriftzeichen
        6.4.5 Finger
 
7. Grundeinstellungen
    7.1 Schreibtraining
    7.2 Sprache
    7.3 Lernstatistik
    7.4 Sonstiges
8. ABC-Spiel
9. Technische Unterstützung
10. Lizenzbestimmungen
11. Spenden
12. Impressum
 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/000077500000000000000000000000001274324046000156035ustar00rootroot00000000000000tipp10-2.1.0/release/help/en/content/000077500000000000000000000000001274324046000172555ustar00rootroot00000000000000tipp10-2.1.0/release/help/en/content/about.html000066400000000000000000000027421274324046000212620ustar00rootroot00000000000000 TIPP10 Manual

 Donations  |  Table of Contents

12. About TIPP10

TIPP10 is published by:
 

 
Tom Thielicke IT Solutions
 
Christburger Straße 46
D-10405 Berlin
Germany
 
Tel. +49 30 80 611 532
Fax +49 30 80 611 533
 
http://www.thielicke.org
 
 

 Donations  |  Table of Contents

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/behaviour.html000066400000000000000000000046141274324046000221340ustar00rootroot00000000000000 TIPP10 Manual

 Installation  |  Table of Contents  |  Launching the Program 

4. Ergonomics in the Workspace

Tips for using the 10 finger system
 
1. First place your fingers in the home position (this is displayed at the beginning of each lesson). The fingers return to the home row after each key is pressed.
 

 
2. Make sure your posture is straight and avoid looking at the keyboard. Your eyes should be directed toward the monitor at all times.
 
3. Bring your arms to the side of your body and relax your shoulders. Your upper arm and lower arm should be at a right angle. Do not rest your wrists and remain in an upright position.
 
4. Try to remain relaxed during the typing lessons.
 
5. Try to keep typing errors to a minimum. It is much less efficient to type fast if you are making a lot of mistakes.
 
6. Once you have begun touch typing you have to avoid reverting back to the way you used to type before (even if you are in a hurry).
 

 Installation  |  Table of Contents  |  Launching the Program 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/donate.html000066400000000000000000000046171274324046000214250ustar00rootroot00000000000000 TIPP10 Manual

 Licensing  |  Table of Contents  |  About TIPP10 

11. Donations

If you find TIPP10 useful we'd be very happy if you would support the project with a donation. This is the only way we will be able to continue offering TIPP10 for free and the only way to ensure product enhancements.
 
You can make you donation over Paypal, with a bank transfer and by mail.
 
Thank you very much!!!
 
 
Paypal donation:
 
To donate via Paypal go to http://www.tipp10.com. Under Donate you will find a direct link to the Paypal donation account.
 
 
Donations by bank transfer (to Germany):
 
Tom Thielicke
IBAN: DE29760501010009001306
BIC: SSKNDE77XXX
 
Please state "TIPP10" as reason for payment and optionally provide your e-mail address.
 
 
Donations by mail (Check or stamps):
 
Tom Thielicke IT Solutions
Christburger Straße 46
10405 Berlin
Germany
 

 Licensing  |  Table of Contents  |  About TIPP10 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/features.html000066400000000000000000000257771274324046000220030ustar00rootroot00000000000000 TIPP10 Manual

 Introduction  |  Table of Contents  |  Installation 

2. General

2.1 TIPP10 Features

2.1.1 Intelligent text selection
 
The lesson texts react instantly to your typing mistakes by repeating mistyped letters more frequently. The system helps you eliminate typing mistakes and learn touch typing efficiently. A wide range of dictations ensures you'll never get bored.
You will become acquainted with all the keys on the keyboard in 20 sequential training lessons. Commonly used characters are practiced earlier and more frequently than those that appear less frequently.
 
 
2.1.2 Ticker and virtual assistance keyboard
 
You can change the font, speed and color of the text in the ticker to ensure a steady typing flow. Keys and motion paths appearing in color on a virtual keyboard help you to use the right fingers and keep the right starting position. A status bar displays the fingers that should be used, your typing errors and characters per minute.
 
 
2.1.3 Detailed results
 
After each typing lesson you will receive a printable comprehensive report that evaluates the lesson. A list of all completed lessons including details about duration, number of errors, characters per minute and an evaluation provide you with an overview of the work you have done. A lesson trend diagram shows your progress and allows you to easily compare your results. TIPP10 also shows you your error rate for all the characters and fingers used in the typing lessons. This way you can see right away which keys and which fingers you still need to work on.
 
 
2.1.4 Open lessons and using your own texts
 
You can use open lessons or create your own once you've got the hang of touch typing and seek to improve your error rate or speed. There are open lessons with dictations for specialized topics so that you can familiarize yourself with particular styles such as programming or legal texts. You can also load your own texts into TIPP10 and have them dictated to you.
 
 
2.1.5 Extensive customization
 
You can choose how the lesson will run. You can set the duration of the lesson, how the typing tutor reacts to typing errors and which visual aids will support you during the lesson. In general settings you can also personalize the software even more. Here, for example, you can select a different speed for the ticker or a larger typeface.
 
 
2.1.6 Platform independent and multilingual
 
TIPP10 runs in Windows, Mac OS X and various versions of Linux. The software is currently available in English and German and you can select various keyboard layouts. In addition to the QWERTY keyboard layout, you can also activate keyboards for Germany, for Switzerland or the alternative Neo, Dvorak and RISTOME keyboards. The user interface language and the language of the lesson as well as the keyboard layout can all be set separately.
 

2.2 System Requirements

A standard computer running a Windows, Macintosh or Linux operating system is required to use TIPP10.
The following systems are supported:
- Windows 98, 2000, XP, Vista and 7
- Mac OS X Version 10.3.x or higher (PPC or Intel processor)
- Various Linux versions (Ubuntu, Kubuntu, OpenSuse, Puppy, Redhat and others)
The computer should have sufficient memory (at least 64 MB) and processor performance (at least 800 MHz) in order to easily render the dynamic generation of the lessons. Your graphic card and monitor should also support at least 16 million colors (16 bit) and a screen resolution of at least 800x600 pixels.
 

2.3 Users and Data

2.3.1 Preface
 
TIPP10 users have raised the issue of user administration. Version 1 still stores user data in a database (tipp10.db) that could be found in TIPP10's program directory. Unfortunately this meant that TIPP10 could only be used by one person per computer because the same database was used despite the fact that lessons, error rates and the personalized dictation per for each user were different. This kind of administration also caused problems when TIPP10 was used in a network because no write permission for the program directory had been granted.
 
For this reason integrating a simple and user-friendly user administration with registration was considered. Unfortunately, registration places a host of additional demands on the software making necessary a user administration that allows for individual users to be modified or deleted. In addition, such levels of usability would make enhancements and updating the software and database significantly more difficult.
 
The TIPP10 program should remain simple and easy to use. Since the majority of TIPP10 users were working with one account per computer, version 2.0 implemented the following database management alternatives:
 
 
2.3.2 Portable version (Windows)
 
The portable version of TIPP10 saves data directly in the program directory so that only one person can use it. It is, however, very convenient for portable use and can be run on several computers using a USB stick with no risk of data loss.
 
The tipp10v2.db database with the user data and the settings.ini file with the program settings can be found in the following path in the portable version:

Application Folder\portable\

The portable folder is created automatically when the program is run the first time.
 
 
2.3.3 Installable version (Windows, Mac OS, Linux)
 
The installable version of TIPP10 creates a new database (tipp10v2.db) in the user's HOME folder when the program is run the first time.
 
The folder can usually be found in the following path:
 
Windows:

C:\Documents and Settings\Username\Application Data\TIPP10\

Mac OS:

/Users/Username/Library/Application Support/TIPP10/

Linux:

/home/Username/TIPP10/

The tipp10v2.db database is then placed in the TIPP10 folder. The path can be edited so it is directed to the database in TIPP10's general settings if necessary.
 
The benefits of this kind of database administration are:
1. The "typical" TIPP10 user using one computer and one account can continue to use TIPP10 as before and can specify individually where the database is stored (e.g., for backup).
2. Schools or other institutions with several user accounts per computer that don't use a central file server can use TIPP10 together. A database will be created in the HOME folder of each user.
3. Using TIPP10 in a network is trouble free. The executable program is provided by the file server while the database is created and used on the client. This way write permission is granted on the database and the client can process the relatively large data transmission (due to intelligent features).
 
Unfortunately this type of database administration will not work when several people use a single computer with only one user account. There is, however, a solution for this as well:
 
 
2.3.4 Database path parameter transfer
 
TIPP10 can be launched with a parameter that gives the program a current database folder. In this way it is possible for each user to create a shortcut to their own database folder.
 
In Windows you add a new shortcut to the tipp10.exe file. In the shortcut properties you can then enter the folder as a program parameter.
 

 
Windows example entry:

"C:\Applications\TIPP10\tipp10.exe" "C:/tipp10/user1"

Please take note of the following:
1. Command and parameter should be in quotation marks
2. The folder uses the normal slash (/)
3. The path indicates the database folder and not the database file itself
4. The folder name does not have a slash at the end
 
 
In MacOS enter the parameter after the program fetch as follows:

./tipp10 "/tipp10/user1"


 
 
In Linux you also simply enter the parameter after the program fetch as follows:

./tipp10 "/tipp10/user1"

 
The first time the program is launched with the shortcut a new database will automatically be created in the user1 directory. Please note that the directory must already exist!
 

 Introduction  |  Table of Contents  |  Installation 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/game.html000066400000000000000000000040661274324046000210620ustar00rootroot00000000000000 TIPP10 Manual

 General Settings  |  Table of Contents  |  Technical Support 

8. ABC Game

Touch typing can be practiced with the ABC Game. To start the game select Go in the main menu and click on ABC Game.
 

 
The object of the game is to hit the falling letters before they reach the ground. As soon as one letter touches the ground the game is over. You get one point for every letter you hit and one point is taken away for each time you type a wrong (not displayed) letter.
 
Press the space key to start the game. Now you can try to type as fast as you can to prevent the letters from touching the ground. Each level will increase the number of letters and the speed they fall.
 

 General Settings  |  Table of Contents  |  Technical Support 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/installation.html000066400000000000000000000254711274324046000226550ustar00rootroot00000000000000 TIPP10 Manual

 TIPP10 Features  |  Table of Contents  |  Ergonomics in the Workspace 

3. Installation

TIPP10 can be downloaded for free. Enter http://www.tipp10.com into your browser, go to Download, select your operating system and save the file on your computer.
 

3.1 Update

If you already own TIPP10 you can upgrade to the most current release without losing your stored data. Simply install TIPP10 over your existing version without uninstalling it. Your data remains intact and your database will be updated the first time you run the program.
In the portable Windows version you must be sure not to delete the portable folder in the TIPP10 directory. You can do this by copying the portable folder from your old version into the directory of the new one.
 

3.2 Installation in Windows

There are two versions of TIPP10 for Windows. The installable version has a setup routine, can be accessed via the start menu and creates a database for each windows user. It can also be used in a network. The portable version, however, can conveniently be run from a USB stick. It doesn't require installation but is limited to one user as the data is stored directly in the program directory.
 
 
3.2.1 Installable Version
 
To install TIPP10 in Windows double click the file icon to execute the tipp10_win_2-1-0.exe file. This will launch the installation program.
 
You can first select the installation language. This does not affect the language the actual program will run in. Confirm your selection by clicking on the OK button.
 

 
After clicking Next you will be asked to accept the license agreement. Please read the agreement carefully. Only after you have accepted the terms will you be able to install the program by clicking on Next.
 
You will be asked to provide a directory where TIPP10 is to be installed. Usually you won't have to make any changes but you can enter your own directory or select it by clicking Browse.
 
After clicking Next you will be prompted to enter a folder name for the Windows start menu. You can select your own name if you wish. To continue installation click Next.
 
In the last step before the actual program is installed you will be asked if you would like to create a shortcut on your desktop. If you want to do this simply check the desktop symbol with a mouse click otherwise the program will only be accessible through the Windows start menu. Now confirm your selection again by clicking Next.
 
Now a summary of your settings will be displayed and you can begin copying the files with one click on the Install button. The files will now be extracted and installed.
 
You will be notified of a successful installation and prompted to launch the program. If you do not wish to run the program now, simply remove the check from Run TIPP10. Now finish the installation by clicking Finish. The program has now been successfully installed.
 
 
3.2.2 Portable Version
 
The portable version of TIPP10 is in a ZIP archive that must be extracted. Usually you simply have to click the tipp10_win_portable_2-1-0.zip file to execute it and then follow the directions Windows provides. If you don't have a program for extracting ZIP files you will need to install one. We recommend WinZip or WinRAR.
 
After you have extracted the file the tipp10_win_portable_2-1-0 directory will be created. The actual program files are in this folder where your results will also be stored. If you wish you can move this folder to an external drive (e.g., a USB stick) so that you can use TIPP10 from any computer. To start TIPP10 go to the tipp10_win_portable_2-1-0 folder and double click the tipp10.exe file.
 
TIPP10 will create a new user database tipp10v2.db in the folder when you run the program the first time. This is where your personal results are stored. You can find more information on data storage in chapter 2.3.
 
 

3.3 Installation in Mac OS

The Macintosh version of TIPP10 comes in an image file. Double click the tipp10_mac_2-1-0.dmg (you may see a .dmg suffix) file to display the license agreement.
 
Please read the agreement carefully. The installation window will only appear after you have accepted the terms.
 

 
Now simply drag the TIPP10 icon into the Application folder with your mouse. TIPP10 is now installed and will appear in your applications. You may also select and delete the image file as it is no longer needed.
 
To run TIPP10 open Finder and select Applications in the left menu. Now you can start the program with a double click on the TIPP10 icon on the right side.
 
For easy access to the program drag the icon to your desktop or dock with your mouse.
 

3.4 Installation in Linux

There are currently installation instructions for Linux Ubuntu, Kubuntu and OpenSuse. TIPP10 should run smoothly in other Linux systems as well.
 

3.4.1 (K)Ubuntu Linux
 
You can install TIPP10 in (K)Ubuntu with a Debian package manager or manually in the conventional way.
You can find a current Wiki for TIPP10 installation in Ubuntu at http://wiki.ubuntuusers.de/Schreibtrainer.
 
Installation with the package manager
 
To install the Debian package you must download the tipp10_debian_2-1-0.deb file from the project homepage. To install the package use the appropriate package manager for your Linux distribution. In Ubuntu this is usually gdebi, in Kubuntu the software administration or gdebi-kde. You can find further information for installing Debian packages at http://wiki.ubuntuusers.de/Paketinstallation_DEB.
After installation TIPP10 can be started from the start menu under Applications - Education - TIPP10.
 
Manual Installation
 
To install TIPP10 manually you must download the archive file tipp10_linux_v2-1-0.tar.gz from the project homepage. The archive has an executable program file tipp10. Using the following commands you can extract the application folder to /opt/ and create a shortcut in /usr/local/bin/:

sudo tar -xzf tipp10_linux_v2-1-0.tar.gz -C /opt/
sudo ln -s /opt/tipp10/tipp10 /usr/local/bin/

Now you can launch the program in Terminal using the following command:

tipp10

To create a startup make sure you have root privileges and use an editor to create the file /usr/share/applications/tipp10.desktop. Now add the following content:

[Desktop Entry]
Encoding=UTF-8
Name=TIPP10
Comment=Touch Typing Software
Comment[de]=10-Finger-Schreibtrainer
Exec=tipp10
Icon=/opt/tipp10/tipp10.png
Terminal=false
Type=Application
Categories=Education;

After saving the file TIPP10 can be launched from the start menu under Applications - Education - TIPP10.
 

3.4.2 OpenSuse
 
The following installation has been tested in OpenSuse 10.1.

1. Download the tipp10_linux_v2-1-0.tar.gz file from the project homepage.

2. Extract the archive. Execute the following commands in Terminal:

tar -xvvzf tipp10_linux_*.tar.gz
rm tipp10_linux_*.tar.gz
ln -s /$HOME/tipp10 /$HOME/Desktop/tipp10
cd $HOME

3. Open the tipp10 folder on the desktop.

4. Execute the tipp10 file to start the program.

5a. Close TIPP10 if TIPP10 produces error number 309 upon launching.

5b. Then execute the following command in Terminal:

chmod u+w $HOME/tipp10/tipp10v2.db

5c. Now restart TIPP10 (by executing the tipp10 file).
 

 TIPP10 Features  |  Table of Contents  |  Ergonomics in the Workspace 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/introduction.html000066400000000000000000000057551274324046000227000ustar00rootroot00000000000000 TIPP10 Manual

 Table of Contents  |  TIPP10 Features 

1. Introduction

TIPP10 is a free touch typing tutor for Windows, Mac OS and Linux. The software is easy to use and features a clear user interface. Beginners will find their way around right away so they can start practicing without a hitch. You will be able to learn touch typing quickly and efficiently with the program's intelligent training lessons, useful support functions and an extensive progress tracker. You can also play a typing game and expand the program with open lessons or make your own to meet your specific needs.
 
You can find more information online at http://www.tipp10.com. System requirements for the software are in chapter 2.2 and the license terms in chapter 10.
 
Please read chapter 2.3 if the software is going to be used by several users on one PC or run in a network. Several tips for using the database file are listed since TIPP10 stores all user data individually in a database.
 
If you find TIPP10 useful we'd be very happy if you would support the project with a donation. With your help we are able to offer TIPP10 for free and can make product enhancements. Please read chapter 11 for more information.
 
TIPP10 1.0 was released in July of 2006 in Germany and has been enhanced greatly since then. The software has received very positive reviews in the print and online media and users themselves are the most impressed. TIPP10 is also being used to teach touch typing at a host of schools and universities in German and English speaking countries. TIPP10 has been developed and is published by Tom Thielicke IT Solutions.
 

 Table of Contents  |  TIPP10 Features 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/lessons.html000066400000000000000000000176551274324046000216470ustar00rootroot00000000000000 TIPP10 Manual

 Launching the Program  |  Table of Contents  |  Lesson Parameters 

6. Training

6.1 Lessons

The selection of lessons can be found on the left side of the home window. TIPP10 distinguishes between three types of lessons that can be selected on the tab with the clock, light bulb and pencil icons - Training Lessons, Open Lessons and Own Lessons.
 

 
The individual tabs are described in more detail below:
 
 
6.1.1 Training Lessons
 
Training Lessons will help you learn touch typing step by step. The first lesson will teach you the basic characters in the home row position. Each lesson after that will add new keys (usually two). The Training Lessons are based on the frequency of the characters in everyday language use. That means you will begin practicing with the characters you are likely to use most.
 
If this is your first time learning touch typing we suggest you work through all the lessons in the order they appear. You should repeat each lesson until you have eliminated all mistakes or only make very few and can type without hesitation. Then you are ready to tackle the next lesson.
 
 
6.1.2 Open Lessons
 
Open Lessons are dictations covering various topics. Unlike the training lessons, open lessons do not target specific characters. They are particularly well suited for users that are already fairly proficient at touch typing and want to improve their typing speed and reduce the number of typing errors they make. At this stage Open Lessons are sure to be more entertaining than Training Lessons because of the information in the texts that are dictated.
 
You can filter the lessons by topic in the topic tab above the lesson. A brief description of the lesson will be shown by holding your mouse pointer over one of the lessons in the list (approx. 1 second).
 
 
6.1.3 Own Lessons
 
You can create your own dictations using the Own Lessons tab. TIPP10 installs two example dictations automatically so that you can see how the feature works. Instructions for deleting these examples can be found further below.
 
To create your own lessons or edit existing lessons click on the Edit button to the right above the lesson list. Editing or deleting an existing lesson only affects the lesson that is currently selected in the list beneath the menu.
 

 
An entry mask will appear when you select to create a new lesson or edit an existing one.
 

 
You can name your lesson in the first entry field. This name will be displayed in the lesson list and the results. For formatting reasons the name must not exceed 20 characters and cannot be changed after it has been saved the first time.
 
You can add a description of the lesson in the second entry field. This can be longer than the name (120 characters max.) and will be displayed in the mouseover text.
 
You can enter the actual text of the dictation in the entry field at the bottom. Please enter at least two lines of text (this ensures the dictation can work with the Intelligence feature - a more detailed description can be found further below).
 
Finally, you can choose whether the text should be used for a Sentence Lesson or a Word Lesson.
 
In Sentence Lessons the individual lines (sentences) will be dictated as they were entered with a line break at the end. The user will see the symbol at the end of each line and should strike the enter key. Sentence lessons are most useful when you simply want to enter a text that will be dictated back to you.
 
In a Word Lesson, on the other hand, the individual lines will be dictated and separated by a space. A line break comes automatically after a minimum of 35 characters, the symbol will be added to the last line (word) after this minimum number of characters has been reached. A Word Lesson should therefore be used when you want to list a series of certain words or practice spelling.
 
The distinction between a Sentence and a Word Lesson is important if you are going to use the Intelligence feature that you can activate before a lesson. When the Intelligence function is activated the individual lines in the dictation will not be displayed in their original order. The dictation will be guided by the typing mistakes that have been made to increase your learning curve. The intelligence feature delivers better results when used with a Word Lesson because certain words or word combinations can be listed and dictated in a targeted fashion based on typing errors made.
Sentences are usually longer than words and sentence lessons cannot be updated so frequently when the Intelligence feature is activated. A Sentence Lesson also does not provide a large variety of ways to extend the dictation in a useful way. If you activate the intelligence function in a Sentence Lesson we suggest using a large number of the shortest possible sentences.
Word Lessons with the Intelligence feature activated work like Training Lessons 1 through 5, Sentence Lessons like Training Lessons 6 through 18.
 
To save a lesson you have created yourself click on the Save button. The text will be analyzed and saved in your database. The name of your lesson should now appear in the lesson list and be ready to use.
 
If you wish to delete from the list a lesson you have created yourself simply select it with your mouse and click Delete Lesson in the Edit menu. When you delete a lesson all associated stored data will also be deleted (completed lessons in your results).
 
You can also import and export lessons. This is very handy when you want to save or share lessons with other users. To do this, select Import Lesson or Export Lesson in the Edit menu.
 

 Launching the Program  |  Table of Contents  |  Lesson Parameters 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/license.html000066400000000000000000000447631274324046000216030ustar00rootroot00000000000000 TIPP10 Manual

 Technical Support  |  Table of Contents  |  Donations 

10. Licensing

Copyright (c) 2006-2011 Tom Thielicke IT Solutions
 
You may use, distribute and copy the TIPP10 software under the terms of GNU General Public License version 2, which is displayed below. The official version is only available in English. Unofficial, not legally count translations of the License can be found at http://www.gnu.org/licenses/old-licenses/gpl-2.0-translations.html.
 
 
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
 
Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
 
Preamble
 
  The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.
 
  When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
 
  To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
 
  For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
 
  We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
 
  Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
 
  Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
 
  The precise terms and conditions for copying, distribution and modification follow.
 
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

 
  0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
 
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
 
  1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
 
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
 
  2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
 
    a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
 
    b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
 
    c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
 
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
 
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
 
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
 
  3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
 
    a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
 
    b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
 
    c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
 
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
 
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
 
  4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
 
  5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
 
  6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
 
  7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
 
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
 
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
 
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
 
  8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
 
  9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
 
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
 
  10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
 
NO WARRANTY
 
  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 
  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 
END OF TERMS AND CONDITIONS
 

 Technical Support  |  Table of Contents  |  Donations 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/parameters.html000066400000000000000000000146501274324046000223140ustar00rootroot00000000000000 TIPP10 Manual

 Training  |  Table of Contents  |  Getting started with a Lesson 

6.2 Lesson Parameters

You can adjust lesson parameters on the right side of the main window. They are divided in three areas.
 

 
 
6.2.1 Duration of Lesson
 
Since the dictation of the Training Lesson varies depending on your typing errors the duration of the lesson can only be set either by using a Time Limit or by determining the number of characters that will be dictated (Character Limit). You can also select Entire Lesson if you have deactivated the Intelligence feature in both Open Lessons and Own Lessons so that the text of the lesson is dictated one time through from start to finish.
 
The default duration is five minutes which is the equivalent of a character limit of 500 characters at a typing speed of 100 strokes a minute and no errors.
 
Note: When Intelligence (see further below) is deactivated the Entire Lesson option is automatically selected. You can turn off this standard setting in General Settings (please refer to chapter 7.4).
 
 
6.2.2 Response to Typing Errors
 
There are several ways the typing tutor can respond to your typing errors.
 
Block Typing Errors means the dictation stops each time you make a typing error and waits for you to find the right key. The character that was mistyped is marked in orange in the scroll text. This option is the software default. If you deactivate this option your typing errors will be counted but the typing tutor will skip correction and immediately prompt you to enter the next character.
If Block Typing Errors is activated you can also select the Correction with Backspace option. Every typing error you make will have to be deleted with the backspace key before you can type the correct character and continue the lesson. This comes closest to a real-world typing situation but it is not the default setting as it is only suitable for advanced users.
 
You can select the Audible Signal option if you want to hear an audible signal each time you make a typing error. The signal can come through the sound card or the PC's internal speaker (please refer to General Settings in chapter 7.1).
 
The Intelligence option is only enabled with Open and Own Lessons. In Training Lessons the Intelligence option is always on and marked in grey.
When Intelligence is activated the dictation lines (words or sentences) are not dictated sequentially but are delivered in a way that takes into consideration your typing error rate so that you can eliminate your errors and increase you learning success. This can be very useful for shedding some bad typing habits but the dictation text frequently makes little or no sense.
If Intelligence is turned off the dictation is delivered sequentially and you can select the Entire Lesson option under Duration of Lesson (see above).
 
Note: It is only useful to activate the Intelligence feature with lessons consisting of a large number of lines. Please refer to the chapter 6.1.3 (Own Lessons).
 
 
6.2.3 Assistance
 
There are various visual aids to support you during your typing lessons. All help features are preset when the software is installed.
With the Show Keyboard option you can choose to have the help function displayed as a virtual keyboard. If you deactivate this option you will only see the ticker and the status bar when you practice typing.
 
If you have activated the keyboard you can choose to turn individual help functions on or off:
 
If you have selected the Colored Keys option the keys that are to be pressed will be displaced in color. The color coding also tells you which finger to use.
 
The home row will be displayed at the beginning of a lesson and during typing practice if the Home Row option has been selected.
 
The Motion Paths option will show you the path each finger should take from the home row to a key outside of the home row.
 
L/R Separation Line activates a separation line showing you which keys are accessed with your left hand and which keys are accessed with your right hand.
 
The Instruction option will display a text in the status bar telling you which finger you need to use for the key that needs to be pressed.
 
For users who have no touch typing experience we recommend activating all assistance features.
 

 Training  |  Table of Contents  |  Getting started with a Lesson 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/results.html000066400000000000000000000206001274324046000216420ustar00rootroot00000000000000 TIPP10 Manual

 Getting started with a Lesson  |  Table of Contents  |  General Settings 

6.4 Results

The results are shown after a lesson has been completed either when the timer has finished or you have chosen an early exit and saved the results. You can also open this window directly from the home window of the typing tutor by going to the menu tab and clicking on Go and then Results.
 
Your results are shown on six tabs:
 
 
6.4.1 Report
 
After each lesson the first tab will show a report of the lesson that was just completed. This window is not available when accessing reports from the home window of the typing tutor.
 

 
The report gives you a progress overview of the lesson you have completed and includes report, number of errors and average typing speed (you will find detailed information about these individual items in the next chapter). The settings you have chosen are also listed next to the progress report. Beneath the report you will also find the last dictation performed with all typing errors marked in red and underscored.
 
If you want to print the report you can click on the Print button on the top right side. An input window will open. Enter you name if you want it to appear on the printout. You can also leave this space blank. Clicking on the Print button again will open the actual printing dialog where you can select a printer and begin printing.
 
You can also post your results on Facebook. To do this, click on the Share on Facebook button on the top right side.
 
 
6.4.2 Overview of Lessons
 
The Overview of Lessons tab shows a list of all completed lessons. The results of the last completed lesson appear at the top of the list.
 

 
The following information on each lesson is provided:
Lesson:Name of the Lesson
Time:Starting time
Duration:Duration in minutes
Characters:Number of dictated characters
Errors:Number of typing errors
Rate:Error rate in percent (Errors / Characters)
Cpm:Characters per minute (Strokes / Duration)
Score:  Score in points (((Strokes - (20 * Errors)) / Duration) * 0.4)
 
The Score column calculates a score based on your typing speed and number of errors so that you can track your progress. Beginners usually start out with lower scores. Push yourself to improve your score!
 
Keep in mind that slower typing with fewer errors generates betters scores than fast typing with more errors.
 
There is a table with typical scores in
chapter 6.4.6.
 
To the right above the lesson list there is a drop-down menu where you can filter the lessons by type (Training Lessons, Open Lessons and Own Lessons).
 
If you want to arrange the list by columns just click on the column heading. An arrow will tell you if the entries are being shown in ascending or descending order.
 
 
6.4.3 Progress of Lessons
 
Progress of Lessons will show you an evaluation of the lessons you have completed on a progress diagram. The x axis (vertical) shows the individual points and time is on the y axis (horizontal).
 

 
Training Lessons are shown with a black dot and the number above the dot is the lesson number. Open Lessons have a blue dot and Own Lessons are shown in green.
 
You can filter and arrange the progress diagram with the drop-down menu on the right. You can also position the cursor over a dot to display detailed information about that completed lesson.
 
The progress diagram won't be displayed until at least two lessons have been completed.
 
 
6.4.4 Characters
 
The Characters tab will show all characters that you have practiced in your lessons. The characters with the highest error rate percentages are the ones you are having the most trouble with.
 

 
The following information on each character is shown:
Target Errors:Number of target errors (character was supposed to be typed, but wasn't)
Actual Errors:Number of actual errors (character was mistyped)
Frequency:Number of times the character was shown
Error Rate:  Error rate in percent (Target Errors / Frequency)
 
If you want to arrange the list by columns just click on the column heading. An arrow will tell you if the entries are being shown in ascending or descending order.
 
 
6.4.5 Fingers
 
The Fingers chart will show you your error rate per finger. The fingers with the highest error rates are causing you some troubles.
 

 
If you position your mouse over a finger the frequency and number of errors will appear in a small window.
 
The finger error rate is calculated using the recorded characters and the current selected keyboard layout.
 
 
6.4.6 Comparison Table
 
The Comparison Table tab shows you a table with general empirical values to give you an overview and allow you to compare them with your results.
 

 

 Getting started with a Lesson  |  Table of Contents  |  General Settings 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/settings.html000066400000000000000000000270651274324046000220150ustar00rootroot00000000000000 TIPP10 Manual

 Results  |  Table of Contents  |  ABC Game 

7. General Settings

General settings are accessed in the menu bar of the home window. In Windows and Linux click on File and then the sub item General Settings. In the Mac OS click on TIPP10 and then Settings.
 
General settings are divided into four areas: Training, Language, Results and Other.
 

7.1 Training

Here you can make changes that will affect how your training is conducted.
 

 
 
7.1.1 Ticker
 
You can adjust the ticker's font, size and color to suit your taste. Just click on the appropriate button and select the font or color you want. Keep in mind that a font size larger than 20 is not recommended because the letters will not fit in the ticker properly.
 
You can set the ticker speed with the speed control. There are a total of five speed levels. The middle level is the default. If you move the control all the way to the left the ticker will be turned off and moving it all the way to the right will make the ticker move very fast.
 
Some users are annoyed by the ticker after using the program for a while. In this case we recommend selecting another color or turning the ticker off by moving the control all the way to the left.
 
 
7.1.2 Sounds
 
You can choose whether acoustic signals (for typing errors and metronome) are sent through the sound card or the internal PC speaker. If the sound card is used the audio files error.wav and metronome.wav will be played from the program directory. The PC speaker is only capable of producing a beep sound.
 
When the metronome is activated a ticking sound will be played in a pre-determined rhythm. This can assist you to type in a steady and constant speed. You can adjust the speed in strokes per minute i.e., 60 strokes per minute means the metronome will tick exactly once per second.
 

7.2 Language

Here you can set the language for the User Interface, the Training Lessons and the Keyboard Layout.
 

 
 
7.2.1 User Interface
 
TIPP10 currently offers a user interface in German and English. You can change the language in the drop-down menu.
Keep in mind that this setting only changes the language you use to navigate through the program and not the language of the lessons themselves which you can change further below.
 
For changes made to the user interface to take effect you must restart the software. You will be notified of this after you have saved the general settings.
 
 
7.2.2 Keyboard Layout
 
TIPP10 supports the American and the German keyboard layouts as well as the Swiss layout and the alternative keyboard layouts NEO, Dvorak and RISTOME. You can select the right keyboard for your computer in the drop down menu.
 
Some information you may need to know about the various keyboard layouts:
 
1. The USA | QWERTY keyboard layout is the standard US American keyboard layout.
 
2. The Windows layout differs slightly from the Apple layout (Windows and Apple/CMD keys, @ sign etc). Select the appropriate setting Windows or Macintosh.
 
3. When selecting the Schweiz | QWERTZ keyboard layout you can also select between the German-Swiss (SG) or the French-Swiss (SF) keyboard. In addition, all capitalized umlauts and the character will be written out ( -> ss, -> Ae, -> Ue, etc.)!
 
4. If you have selected the USA | QWERTY keyboard the dictation will automatically convert all umlauts and ( -> ss, -> Ae, -> ue, etc.)!
 
5. Alternative systems such as the Dvorak keyboard layout developed by the American August Dvorak in 1936, the award-winning RISTOME layout created in 2005 or the NEO keyboard layout increase typing speed and reduce stress on the wrists. They have only found a small group of followers due to the widespread use of the QWERTY/Z system and the enormous efforts is would take to implement a new system. You can find information on the alternative keyboard layouts online. The distinction between Windows and Macintosh is eliminated in the alternative layouts since they are usually based on converted Windows keyboards where there is no difference in the keyboard layout.
 
6. If you want to make further adjustments to the characters available in a keyboard layout you can access Limitation of characters and Replacement Filter using the Advanced button. You should only make changes here if you are familiar with regular expressions. Changes are only stored until you select a different keyboard layout. You will find further instructions in the window.
 
 
7.2.3 Training Lessons
 
Ideally Training Lessons match the keyboard so that the keys can start learning step by step where the keys are from the home row position. Of course you can use the German QWERTZ keyboard layout with a training lesson set for the American QWERTY keyboard but you may have to put aside some keys from the beginning.
 
TIPP10 currently offers English training lessons for the QWERTY keyboard layout and German lessons for the QWERTZ layout and NEO 2.0. You can select these in the drop-down menu.
 

7.3 Results

Here you can change the settings of your results.
 

 
 
7.3.1 User Data
 
You can delete all lesson data that has been stored in the database with the Reset completed lessons button. This will delete the results of your lessons, information about which lessons you have completed and their evaluation. The lesson list and progress reports will be empty and returned to the original status just after installing TIPP10.
 
The Reset all recorded characters button will delete all character error rates. The number of errors made in a lesson won't be deleted (this can be done with the Reset completed lessons button) but statistics on which characters you have mistyped most will be reset. The list of characters and the finger statistics will appear empty after deletion and the Intelligence feature will only consider subsequent typing errors.
 
If you execute both deletion processes the database will be reset to the status it had immediately after installation.
 
 
7.3.2 Data Location
 
In Data Location you can choose where the TIPP10 database tipp10v2.db will be stored on your hard drive. By default the database will be created in the HOME directory the first time the program is launched. The portable Windows version of TIPP10 stores it in the program directory. This cannot be changed.
 
In Windows the directory can usually be found under the following path:

C:\Documents and Settings\Username\Application Data\TIPP10\

In Mac OS the directory can usually be found under the following path:

/Users/Username/Library/Application Support/TIPP10/

In Linux the directory can usually be found under the following:

/home/Username/TIPP10/

The database file tipp10v2.db is in the tipp10 folder. Keep in mind when entering the path to only provide the directory and not the database file. If you enter an empty directory a new and empty database will be created.
 
You can find additional information on database administration in chapter 2.3.
 

7.4 Other

Here you can made changes that affect how the program is used and how information windows are displayed.
 

 
 
7.4.1 Windows
 
The first option allows you to choose whether a message box with tips for using the software should appear at startup.
 
The second option allows you to choose whether you want to be informed when an Open or Own Lesson is being accessed with the Intelligence feature enabled.
 
The third option allows you to choose whether to change the duration of the lesson automatically to Entire Lesson when disabling the intelligence feature in an Open or Own Lesson. TIPP 10 will remember if you have enabled the Intelligence feature and will change the duration of the lesson to Entire Lesson when you only want to switch to an Open or Own Lesson via the tabs.
 
 
7.4.2 Other
 
If you select the first option TIPP10 will check for a new version of the software at startup once a week. TIPP10 will check online and inform you if a new version is available.
 
Enable the second option if you want to use the native user interface style. TIPP10 will then use the user interface of the operating system for all controls.
 

 Results  |  Table of Contents  |  ABC Game 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/start.html000066400000000000000000000051721274324046000213050ustar00rootroot00000000000000 TIPP10 Manual

 Ergonomics in the Workspace  |  Table of Contents  |  Training 

5. Launching the Program

To start the TIPP10 typing tutor in Windows open the start menu, select Applications and click on TIPP10. If you have made a shortcut you can start the application directly with a double click on the TIPP10 shortcut on your desktop.
 
If you are using the portable Windows version simply go to the tipp10_win_portable_v2-1-0 folder and run the tipp10.exe file with a double click.
 
To start TIPP10 in the Mac OS use the Finder to navigate to Applications and double click the TIPP10 file.
 
To start TIPP10 in Linux use the Terminal to navigate to the directory where you have extracted TIPP10 and start the tipp10 file. If you have a graphical user interface (e.g., KDE) you should be able to execute the file with your mouse. In (K)Ubuntu this is possible in the start menu under Applications - Education - TIPP10.
 
After the application has started you will be shown an introduction window. If you don't wish to see this window when starting the program in the future just check the item Don't show me this window again. To end the introduction and open the TIPP10 interface click on the Launch TIPP10 button.
 

 Ergonomics in the Workspace  |  Table of Contents  |  Training 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/style.css000066400000000000000000000014011274324046000211230ustar00rootroot00000000000000.container { margin-top: 6px; margin-bottom: 6px; margin-left: 12px; margin-right: 12px; } .headline1 { font-size: 16pt; font-family: Verdana,Arial,sans-serif; color: #F97E00; font-weight: bold; border-bottom: 1px solid #F97E00; padding-bottom: 4px; } .headline2 { font-size: 13pt; font-family: Verdana,Arial,sans-serif; color: #F97E00; font-weight: bold; } .standard { font-size: 10pt; font-family: Verdana,Arial,sans-serif; color: rgb(0, 0, 0); font-weight: normal; } .small { font-size: 8pt; font-family: Verdana,Arial,sans-serif; color: rgb(0, 0, 0); font-weight: normal; } .code { font-size: 10pt; font-family: Courier New,Courier,sans-serif; color: rgb(0, 0, 0); font-weight: normal; } tipp10-2.1.0/release/help/en/content/support.html000066400000000000000000000036021274324046000216600ustar00rootroot00000000000000 TIPP10 Manual

 ABC Game  |  Table of Contents  |  Licensing 

9. Technical Support

You can access technical support and assistance online at http://www.tipp10.com. You will find current information and a notification system where you can enter bugs, submit suggestions for improvements and search for information in existing postings.
 
Unfortunately, we cannot provide telephone or email assistance because the typing tutor is free software. Please excuse the inconvenience. If you wish to contact us for other reasons you can do so via a contact form at http://www.thielicke.org.
 

 ABC Game  |  Table of Contents  |  Licensing 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/content/training.html000066400000000000000000000113761274324046000217660ustar00rootroot00000000000000 TIPP10 Manual

 Lesson Parameters  |  Table of Contents  |  Results 

6.3 Getting started with a Lesson

Now you will be shown the practice window. In the upper area you will find the ticker and the virtual keyboard just beneath it. A status bar in the lower part of the screen provides you with additional information.
 
Place your fingers in the home row position on the keyboard before you start with the actual training lesson. Refer to chapter 4 regarding ergonomics in the workspace.
 
Now you can initiate the lesson using the space key. Once you have pressed the space key the timer starts and the text you need to type will be displayed in the ticker.
 

 
Depending on which settings you have chosen the virtual keyboard will display the home row position and which keys you need to press. The color indicates which finger should be used.
 
 
Virtual keyboard color scheme:
 

Keys not being used (all keys that are not relevant for the current character)
 

Forefinger
 

Middle finger
 

Ring finger
 

Small finger
 

Thumb (for the space key only)
 
The current number of typing errors and current strokes per minute are displayed on the left side of the status tab. The right side displays the elapsed time and the number of characters typed.
 
Now you follow the ticker and enter the text that appears using the PC keyboard. The character that needs to be typed appears with a gray background in the ticker.
 
Note: There are two special characters that represent certain keys. The character is for the enter key and an arrow pointing to the right → is for the tab key (the key with two arrows on the left side of your keyboard).
 
If you want to pause the lesson you can click on the Pause button with your mouse or press Alt+P on your keyboard (the timer is also paused). You can resume the lesson at any time using the space key.
 
In Training Lessons 19 and 20 you will learn how to use the numeric key pad on the right side of your keyboard - the virtual keyboard will show a numeric pad in these lessons.
 

 
After the dictation has finished or the time is up (depending on your settings) the typing lesson automatically ends and the results are displayed. If you want to exit the lesson before the time is up click on the Exit lesson early button or press Alt+B on your keyboard. Click Yes on the confirmation prompt. After that an additional dialog box will appear and you can decide whether you want to save or discard the results of the lesson.
 

 Lesson Parameters  |  Table of Contents  |  Results 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/help/en/img/000077500000000000000000000000001274324046000163575ustar00rootroot00000000000000tipp10-2.1.0/release/help/en/img/arrow_left.png000066400000000000000000000003521274324046000212310ustar00rootroot00000000000000PNG  IHDR PXsRGBgAMA a cHRMz&u0`:pQ<hIDAT(SmO!Rap-á>twF#dbD$ǼFNHPUf,{V*a]ny%?9+?49qfIENDB`tipp10-2.1.0/release/help/en/img/arrow_right.png000066400000000000000000000003601274324046000214130ustar00rootroot00000000000000PNG  IHDR PXsRGBgAMA a cHRMz&u0`:pQ<nIDAT(S][!A}`jeQsR1j{qW*e+Ҋ*niEkT5l=dMВV/dK^>?l]IENDB`tipp10-2.1.0/release/help/en/img/h_fingers.png000066400000000000000000000161611274324046000210360ustar00rootroot00000000000000PNG  IHDRxay pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTEɖ}~ӨWkɸWWWY†O555eu(###m~rčٴM'hhufeew-{{{BBBysۥp{kkk!hEg8}Ƚ{8uttbZ;bū²t;п}HHH/|zjt{Бqbr~WhtϡpDztoozz~x|>0Ħ|q>M\Қȅ}ٍ4SlH9nlm nayDQ6L:2v&7Ɓ<'+zyzaHC啷ÆYy8''|0g&1Oz_W3 YD*̋'H$&&%[Eȃ3 tRI%ʒ$ʒ$ʒ$ʒ|($ʒ$ʒxHVގ:~drF8 []r~ЇŋF(g3[ ߽s>pfr IcS;śx_t:NS}ҙ6o'>[Pz*'Wԍ-n ՜3ygXľy7aS(do~Ni=o%o\I(ߓ;>4>P~Ь/nhj7}t _QM-';?D(?m u=8M9L[_i} ؘFh?W%䙫g3gL=~ί}bm/GZEMoh7n|d!'83| v98A~Mu6@3(B%l ݗV4p)ˇ8[St=kE{D#sJg L6^mt ʧ~L[bk+}pҝ;|r.jU63Y . >LQ林oh-$UY_GY^|f?},#:,. f4%G .7.s'\sd}B \]5haZl&eP7Z̳Om]@Ew~V >ʹxX|a°l؎UV؎ʜ@_*Z{km< wu, Jx3'Mg=XAs<ݴ HbGP->=vV®D g2&0eP=ƊlM[v"ue`% ܭ Sl1N6,<,F}˸erY(toˢ%QmDxoD{anjCsժ2J4Jkwkq4BhE;g|jM?kMrԟrQQZ+^ڗ^.\ 4}yce4>Bb$*)ͺpYhzM MS5^=yG'H~ x<un C%{ssJ}GI1.0_{0u,fn+rYTy"J~I\l?1cP!>0&gF1b$=eECyN81-\4l ϳivO֜\. 쟪:<#3N+5Hny95sxPoVsfϾRˌ G(³qUe1«~Dya#'j4'&xܥބyYMvIǫ98p! WZ<.-6qCҭ_,2ry>atZ^qxG&z'uCȳz[ߥ (Z-W݄HN$$!Vn9C>S겆,/,uylGo*w)u7@#rC~emgfhh%!sptJ}{fwJo/g\6m!l K_H&7rK5 ]lu5 p[#6XmRƆY隦xǕǏ) OoO@4ԇ6,lBw3͑ a] w5gyH6/dຫ +]95M~f{o#Le%h+v馡\g h"_9rvKKXynT?՜v]3q˥buaa+1%= ‘H?kXjn\9s֬Y7C˙x^ !Ȋ*(K1^7Ⱦt(1lgUm[sH(S~bwR#ٿ~_| H`y:CVLjI/Q1"[+s3H֞ FG{kr94~u-%lߺLuգ  \Կ0 ܕ۬v}ovqswuV])&Rkq; ,5ܜ{}K.B?ۣVyw fHT䞉QùӄޖI" ͛lUJk_Я2K|BjZy^|3,4T<@d:e`I P$\4~ESq+р/[g/fY6֠Q7M%haܱ0t*&-66j.ֳHĐ#{HqWn=Lk-¹j_b;cCyVE5U.Li*7R8Ļ=vlQZttu'&YA(C9%PJM"r.t+{b*iT[ZWHNzL) DEHAZ4w=ŶuYy?_=ؓB.[f[$Y6-Y5j#@P8HX`(RZe[dk[2p4 ra]UrL=ہF -PBY Z+-fiRa8_[YCO|w}*fP[c^/hƦ tnf~ f*bԨ~vUs#6Z}U޲MpieR`viу@PӼ=]C7lOv.i?ӯn?7ݿ)1X0lr[[sۣ(bQy>O>BF#\(J|]Qק_~l8~Ӣh88_~q2]wmhZO>o5poUX!&V2b͠!- eԛE8_m 84!H5{Au^zp<6d -c[|*%}  ^UeuZ^k1 qJ"= J`J095EAOfm!X4L(ph}\zޡX@"? I~-%QAA&J$pN>fw0>5iىlnvʠ̕!FfYFX*O0E0 vu1ydvC}-PKP72;5mN.)W'x=q"d̾ifރ]YV2/C Rw+̎ߏ Y+뙝 2mlK,<]]:`5!5Xg{bYa! yjMNAק4ʛDOtTioCE.3iQ?NjJm;4^Ш\hޥ6U\(7eQ߳f-~v.i= v9L)&.غe0h7c=Wfc`ۼ]@NvZ`yr?cٚbU;؛.,E%f${x%Lޭ޳1):6˽'SllS;kid.f=(bbkJbL+,K\يȖLS%bvH>+PTO+fyJٷy|Z vW$mS.7Č90F+ȚX}wt1ܺbg.[$6.7l[즛p; ش}쬏}G'kk6%jm$oL=k9A:-2{B;nU v'Eȍx35Ob%Eel6kKtk}X+6VK5tռ.&^}fEu̻[0NJ.xwi?KuhEMiѥb;fkO0bEa~]icE(vcM6&>%7L g a2`fk'{Vb_Tdgc*v+?Y@*?ۥ~\o;iSM#h;خdoU~[%3{avN`wH6%yK+6'lXun- ]_ɾZm+6va xlVJU>1v9Ją۳~4vZ3ڌ23Kr?8s"Zyg{*#`\]m3[IVe{>Ym ᝇ}ݭDvt% 9f?!?g|q1&2ɞ6G=쉲FlQ `[`,ْ8ʯפ--SxKjn~đ{g y" łmbW!I!h¯MeRHh.xE{؂h߇˰KEij5J̮@淙q(7P4*+&rY=f R<sHj{U Zc^fcAc `cVX*r+vI5>TaоN"=cۊ6?KXf'x{lp]UlL+˒1uE䢂C-͜j͖Af{Ɠ:?=puT46GCDxm zt+nM< :wd3+!HBRn,oc1 ({M.;m E^UnX`M462lrXŶٝ,7,Imh?(kk|/!xk-!( FmZv^-s8{YTxKҥE Fٔyݗo? HGiWU rIiCB~/(ŮD] xGl.HKngG;~L}n΅(ci;n9JkkaMhn~:^7j y&%"pa,:W-?F0U<]5:e.Vbl ;9kMhw/hm)pœŦIWxL첥Kc?;,w tQJ̜Zn D::sx_7@V99P4}@ ·1{ yL6'ryo=t%r.4<[ ٓ޴]M^RnK6Ff yᎃ<7.$نm:M2k!tطƢs{W׏Tk`.x?XL6yq?;+w7DZ)HijG=:˴>٬Mw}$zh/~?wާ ODuݠzqُtxil\ӯ~>>H^:1Kt.N3hD9Nmڸꨌ*Fvs4 D?=7> Lwާ;@et͸!/Erq6;tu3K?<1ɲ~"|;Wtr9LERCט][`v7L#xǙSa}=r{(&WλTV[ovk2%ZmXx/HkXQJ9Oya=fLc޲^+Aơ'ё6MNw{w?HwtνRD? ٶ* =qUr 缳ڕm^w_9F{^23HoWs~JY9:ߦAv3{i݌?IS{zߧn/hhЫdN7z_$ME;o>΢fd#jq\'ݬ -R`y9"`zʌ.axA6IWf1vU_)$?-M2[MY~>~ϢwXy [nVix~6I/cna#/A[NcY"uUa0/,ͺl~q9GZ*wTO׈Fʶ#H5K2GS6X{"Ra"6i=dP\]*c,{鈏=s~٭>vbmIv N7Ob4Qm5؃*=kӛ6EtXN"cѣ vhBB`7:'~_8$X&&gaߗyRԙܤ=Gk](Ֆ|^w؝+Lԓ&u}[lRtEZ2>C}Uy^z~v6Oͷtɫ\ֿWKWY"w[NzT.hǺ'ovng]v6(3=&pj,/l??UŘXg T.L9On~A~p156MM;n "MlM$e=Uх,9ufHʍ(OppF05뤳DڥֳRGnSq< [;,eI[.b"SRne+Xt5&:g\BXNu2XZ쇒cEdOS'O<^E7mzs/Rt̠A4xtJ;YΞ*U"PkqvSxp=Zbh>M__H5t4K=-_av+r#ur]U@PwSwnlb rc5rgƬy=leP XH__ o\/`Yb#llDL r8RmZb2r)+n3E `Ƙ\`%(PbolT"ЉFqVwT瘍ᕼNɽ-i)`;Sf `u{(!n[Wj_ǟ+63 y֢ߝҋ}&?`~vN- hznF T4"u%}26I^^;VTF9={:ڻAwI\z; 9vy2vX+lʼ?9ʇTXvV~Fx(Aie6[YbO1f2bCbȓ)WE/)],Ej UQ^dxg)Mes-efRcRUn͊G|z8N+_m 9=Ss~DnyQuZߺC0;T; Qthϥ@KwX9,?c(]f1AA.O]zm6@_G,/)FU)fc<;lSw" ?7Xgټ`cLVǙ}C +eV*=ldXL g6NX;tl@f͛7+3s#6~i?߻ē,B轇B '>rشBH焂<ѰIb֨5"vhwy6cPnXGbcXа(u5mEBt6Yw׵ev5x G`[pĮYI<կә:? {d!υEmQ֖M1']ߑ;eߥRXb".lǻmYQ> C9dq Ch:wċDfCMYQʞb)اICtxW!m6w*v>`6~[m H/gB (./+nc6Ҍ%,w-g硨Qcgo HΝ.dc_Zf`Ih<]}8O<܎wL'Б_ZJs99 mVt{/[?X8sGk۷O]챻`D^9’|p[`1ܺOOZ-%Y~Efg6 Ҋ=윏'k>6\"Ozg[ɾ˚PDEW/ޥB8FZPC7O9쬑6+M&lċpFI@4Ze;@ALbb(wlv)Sf )$.b<.mN@&M2flٚ`aXiR`QGBtݕkO쐺Uu<ȳCLۣhMt* 6iO#^]fUjL4 ,wD~yo ށ ?ӫ(D2LUVh>;lKEA23UϬbc*7M}=`[Шb#+Mv<0.RdA fYQT=$HA생Nk[˗ͅ;mKkf0,۲SX_}-y7CKe=Qhxl":Vry~u-8 օU)ɞdS1;jL(H(vR/bhH~rij$1O>HCO%ٛՌ_ٰ8[֮T\\S>#vcH NQڟ k6q ۨBv˪MlZtwh3| RfA.jg_cQfOClq>ےl E供 | +;̞W쪭E]e6 p^m0*`d(6 1Y1(Ƹ#ʡ+aڳrؒ0@"{uƘyW% [})ɻ٥[ˀmbm{PO?GQuG;eEq@yC|LXCxÒ `;[:\ӣW\vq.AR]7\ѽ۲zf9?)>RXdtbr۠%.|}ą iKӬ*xL`!d> 6Xmzy.XEM5 YNdmV6Kc?; Kzo.ɿtWM^̒,rG&Z"b ȋ^>‡B##&vi"(lz`vBmH-,[-W FJX1X`#njZb|}.,UdKlCɍb75a@Sb#X"`b:fPbvQb:ڳ,Ƹ\( SWl2FɎ;+DWl{(Նva>Nccrmc?켩 Sc?-;͂LXIʍbO3;';2oK<&P"nJ[mQLud3<.hӦ |lvfP(:\*׫҅p lw:; ucQȶ("pbv T$JD0gUk>.FOwT5"$lH6?m8(aFL^`_3wEVb~?ԃ]p0w1b` f##~M!N4bv,˪ÝPdo*v+F[ #ņ+6QDq6}M)boD0'@_dv/(`(w:[6%s X,z%v:Ohh0ђ(ւO>.JA}b1{;,ԴmaG=^~}xfg|lOqh'[0p=lБF]w3',ũ}dcOs .D7ސ{ rwܓ,%ݖVv9t;[ۑVK<G䑖{ N1 EcY`lo 8؝9~K`JnCuZ[X獛&I/ú(2A~Zlʎ&%cA-֤/'Smic6i s}Ơ4:b6]FŪ/j6΋ǃR >.bne-~!EI`^fϚa?A@ndФr#ǖ 830QIsN+'.db)ܨck޴&o z!w:(ٯ[bVE,%"=rˢ!(ߝV-V"!q }ۢg!Gi;|lKl܂tlVfv*TLzu2 =xj6uw;Ž؜F1 0OB (l7[I~kJC5d6otta9}Pؘ.ʔ8o [,7 4ņG [ itK+x/ꆍjK zK,]P!CN]w$9fӉl?<bmU uBX8fCS>R0W#Ax,{gtGL[U'`Cn`}g*$==Lze6uYnԅIʍ3,%%]81A0I6N;1fGnd[j=q vKv+ɬl# ff[늍8Pl%1,HT58v$~hJƹX'|r Wȍe.SKA2+֎N>˿ae!D:ֲ tUpqgh$ɋ Cts>ږC2ʏX֔x! 4S ^;࿛uQH.8 k2{TqDVlDcs7*,bH[ޚv)srԥb&X&:y>H4\Muĺf~^2 m䎳.4rg|rF4qjld!P-҇,1{Z+#$DYf3&Aqb#wdžUQmRn`gm;c܊}j6lv"vMOnfd@6PAyM^̾oʍF:cjaUp9GUC1a_41ރF#I"Sr]Qr{l v PS'*1^eےrϝ+ʊls 6҉/38Rnc\DطpM=vVVس, ĉ[Ȃi3{Vch*ԑi!+NwtTY6og絖+-|.GdTZ!avE\zc+ x'iGhshLť.D8ONSԭ[,w[&03$p3 ͋:vQ=9޻0uc`g #pT׾~O{C @ǞDA_Ez~= 0䞭n ZYnAͰv΄tqfGym; EŮd<6[&m>0&pOpJrw%Ql=_C-Jvdbcg* g@N7Cȍ1rzHM"vqLK\F|%^cfYVl4n~6|cނ@Efطz}{}[W xATCnc}qǤOw`X,\Xp@o1[wLѼc3;`S5hG}ZIoFnu+xkڪE[nG"4^=s̉o_tZ5ݮ e=sEdž\R||aQinMíhukF$J(YnwE2{3Q qY,{᠃PDsj H+mSE%w'xWAj&QOq--6=f-ʦ#2 eי!KRذ(ه]4qn3R=01OGc!!w윅&#f  J&Q yHl~e 8fӛAQͦ;bS\35 24c?l ǘ}وI=bݑ"Ş] `EO042'PX!ttt97Y!| az-XdmiFOѕb}Fn;O]]Z, B!vOuQsB N$N6"H HY?9-Z4:r+6N^Jjꮳ?8p5v%k7$d۠|EFd_+짙^ |lccLvӠ$av-!BoDMN`]/?Y2 SLO]X?6Jt bfς^>6ʋ.KŞ1&L9"v1%fb{/ͨ1+ [hHs(3~݊,ڗlm^;xL{_쯎[yQ Mvk50|ssF|{\ʍk{z 6\Vt/GSKYbݦ89cY`v~FY^_vi}B1JMXMVUqhlXH xξ-k8s4C8PkUDSߚvH!Ό6(8~IvPIzX eAݙmQ¥+F j4uoz7F*9qbC#sy1R,LTOGڪ܏3h}B?/޹xG8 tBTTj2F))Hv0-h fS_m(v~ Ρ2W|ޢOF!Ѣ*qf*v&~*/h4}/ b[[D6]lUVYۿ33`Ǜl1/FpepB"W=Ỳ!*?1 0 `k4بf٢ Hn̆f72E~ޗrd`/Q-jplJq,Qެd(yq!차DT_KEEеuNfS[˹/F2ӑ^6FyOanwaݲB٠#0cG~g)O}|%ƻ27p}jn)Tg!zI7VC@#.KA7!˅}F9rX,7JC楬-jtJ/tl~JC.(v[OE 2!uu<؋DYnT, %;SUl͕Un k%nSvs̾2R1Dw菹bҡS;eeڑy!&S'6%l!JxD;,Dfcs5 S4,ٶvr)DJ쳋Ҳ=ki{d#>7y;c=*F}} gnFV;J*1!٧Qu"8 V`Ҝbc-IaPS mA {2ݐ5#r8YJE™xn05ۋQa>Ϛ[1z @FgH6aX` `HU#G}1;Zj39fO(P#ڻ\/Gsu2' lKw2Zzw<Α m'Npvfh!Jgm{iF?-GD l< Prh)ԘcR0QBq7&HaYAȩ16ul:<|nQ!+D` 웞&L%mqPQwJ`. [VTcaڞt]#г,kccWlUp,mͱ:6)lo(I(}i9&磸7&`0v&Cq@mٟY!= EO(EO7x>A"Q |Cy>+\E֬{A}ע؁l!QPҢiߌ Our{ ;!-c~%FҘޝXI)?Ҡk|IT8TA6,|p^fuG@n3/1:a>`,D.=lX8{Β%٘ @CB qH}a9޸5ꪒcCnt~uAϴ~ DP L=d yCa&6c@+@u#]bWyEl\Q.ѭafÝX3g欬 1;y]dy M6s0fGߗ Tufͻ>Dg.]qûFv]\cXpDDߏ#me +٘;P rb~cΜdSi>u~o+ϝteæMl2` ̑^{F0#"A#mu¢KDh-+. vh=6vKKh*v R%7OoR/mM ÀDm -sn1ug{El0ٗC97^&Mt{v 6[FA iHz;I[ ƍ\4}.v, ={wOn_+@zbssCj ֘F*=Lak%f]Li84E-As/wIfgH\jaQ)ؼmRi{PÉsGZ5jAP8R'Haaayyo#͖lq ^w{~P^bqUSDol-.rE.Ga  ń^ pTRr'M>v*m$NHCzٓ<Hg<nA`0pCRomxAMr ~>rx5ĘEltAOF +P^(™?D{cFF1ppIņj?UlX,T;ظl{9&lS1?q~#f+`%ĕ>TD>؇phs[X^#z6(?ګkǹYQd#Ad^۝Y- ﺗWђl78>]rD7+NZ>Dщ aX<4 {2}v$nOVŃAhbٷ8".y*W肛mp,dbf8Os{{b"w>[f99`l\!|lD1$_2"7v# Iyfl\H[`wo0 K?1.K6K31ѼQf_ޚ mq;(+_A٬čo3{&`$2"7Ž}>6JŇ|V%7Jm^F0=!7ܒ?b6DZa2*h}TbAb#sԥP2(F³;S`fxٸ1`bةuآG.OpUb{|l,:u*6vWܒWG =R% y3NZ)Ů5P(cCvdp%$]9:l(ˣ?<.$O2q,UmQ#`cNH6,P'e eS<'B=)D_Ty<G?ܞˠ87>,sBRkV*fe{z+W.*q#~ Ju[4XEV3F/=iK֞5Q#T9]H5p[zAx=K3+N=imaWJߴ3'FB}[zG5FS!7/,ahBn6 w|l^_NM;JNTYnyv if}瘍-җ_^WWMM8ŮvC{c#=~Fjw<| lArۂ d]l%7{d6v܈]x8ρ҈bޚ5ũpSnձp+&جF` u-p!-ۖRL'4M96 l[}glib_Xn݌_3ǎ;V *6bZ[R(A ,Lf^ƘFܢL-A!F({%s׊ dAwE_dU(wx2MC08hN`G߃6N"MJ7| \`KM3R$h܊~fC%aDSF`'f 5생['k=Tjr; ' 'r n6Z&Aa!(2B3IhtYfG{A10&i();rm%5,;!7*6rclZf(ؘ8]Qs-w`^Rn[qpUߢy]t_;E.be{Pd$-)ܓ~QX@G.%Ҍl+؋6uvU ^+.s+= 9L-ffX{n,s>xo%!oi**nqWoOݣGwMS$;IȢ8ck9[)F'9jd~gךkU&Wkc>ɊxBjw5lj/= \h귊] Ԧo; !G}mCڑ;>>H}>|K_Z}8\qC~zEo: {c5HhJfL;P:=ob~".f EiB0weYu~YoNVn.lOWneSωHZ 6-cSQIs u*l:` {޿OlboZ6qtBLa6V~MLFc3Aǵ%azSf%vW0ZS~|`ه"lRd zj>K~شs ïUELj_v ֢ hc"CծvTWSy?c9 I~RFzWc Q\]c$o3'elЉnLFƟts17zcv#tjc3w)W* 'IGiLۤ-UE 3oV\=.ݍv3b O}66mUHoTl2$gx<־9@zjLN{j3gzpX&ύPfpW1ɍrRC!Ք_qCk7.#D= ? ҮOOSҙjokW]ͤ{!C>bLדbs7jϏ {"EiJe6LBڎ'7,^>+;$^m>S; JM}!aosvsr쌙}a/W/첧Siޖ x0wwd-,c?6t4;=="'}iYK({ڱ]c8`c7"*̑=W=.z vJykt@ YoWhs–kIiuvi]plگo&gkߙ:ý!~ [>T vS-]M=a{T&vұ9`fSsp!IWF3ua'_ C6iD]krA~$DpT9lfc tlߞomYFZls|,U[޼ɸIy/Q9{54jMsۭ Wug7s7N^IO7sJO-bz{~ٗFEaR;{(J_Cv[v¤饼9["Dܐ]A/Yl|l#D%HG>49p [q&ĽflsR]gmkwrɲ[Hk]?7tN-0󵆲`76uv%{M ʠfs!σMԹӱ Mȃe{=#lmМZJݰ"vvB^/ǵb&ki?lə)\NMjԱ&lքQ6jBm~COO?R 8iasm!cEG(v!i9v1¾ζ_6t}LhCP֙6z;،|~컻Q 1ϗ\lMҰ&6!t8f񪹁Ǧ `{!4}*lS A< {gLՏũ6RhGU 9ct[%۟4&wT$vfzrRS=(VvM`?)lƬ0sl+/CMK> }uƪ!w;6"#l?kvCYf`Bw&F6{,DZ sݵűbO†`/FxKSդ ul'R[tm]N;6?ʚ >O4=YIb7r{Z)U h[J_:; |!ǃ3V;WtP̖T9f%Lx&jwӾd5򒢱\ͱ;'vVքa8-P6UaSl\2cVM[ԣuD_rus:fOeSj<,%'+TLN[;6MUvMl/ȀYpMc7 M ^p[bݴ'BTdɱM[J5 杣yiߥn/tбͥl->>an5i)$p싎PJLEsa[ =fMECl$u_nq5[߷7]f&&:>fxht5^߭Bɮ72ȚP#jݔE=5T@=ݶuFF %v[6r6;5+yzŪ7M]*ȩTak$yi2Ek749 oΰۑ܈< 1n(]ljp-͗¦%aǴ&,W٘ տCSaHv+3 M !nDtH7FіEzCԝソب )[>F ZZ M퟿ 6qHeak[ڇ ݐٲeulN^2i-?rXQ4쩄֩1ظ̶qe G6BAd';.&p-mase@]aFt4]3mWײI&a&a˚FTX`lSx9އ'ʔ\zc_Uv\gWL9;s.Nl:i>O#LrjQl.W;Wv8T#vr36ؕfMVfݼ*l&m񞰹F}'v4nT[v#2j]ġ .Mk⁼6ס0Tľ?As$&/ݱIwLƴpɫHGz*zyi:e47S*akeijOUw[cc3|DX WdM^d@Vm6q3M_PCM5)-ͳ`ׄMt0!Z\)V\(rKŞJծ_t$k[ ޻s tP 9.lZF ِ^oT243%M&>\n(hz-lTFelu_oT,{/Cr~\Ii =ȁ{\JSF U|+1NNZZ.T T5HE9O}&.eݔXi甝21˾y ;k^ Ե̕oîl_6H\^jZl5AMƋ>zlJ٬Rk1qηpbh7WߙO >w;6vY\zntbL! FL-^pʮ (OokH{t¤l9?3/}RaÆ77.M^~<;Ծ׿UAPr%ka֓&VTN_ hW pxP/,jػ},ns-a{ZA$-+86gόYE[:ֱ9TzYg -=]ʮwjV6O6x6RXs+{Fa?W7*,cò7ZlÅM);߇ZjLX5ieb"+'gnٔ[OZ7n!zTf%/d}̈́d:–wld垀]lbh*`52>͠VCm=.lyн_vB-o-۱5)ךViTU}Ӎ6<+hgE2-Uy$ogtugOY/iN9P-;0޹\ M9QaɇR5WNq}}M{hvstvrLQ@i yG=`Pt$A-vCX 0+ ! Tk˲!~C`.CM{hL\-vnNuj*m>(}8Up{Jl 5-69wNJO߾ >z  T8Wn(k U:la@lyk.i-u+9{D5Ӝa"ll:z-n&d#l"4Ghʣ^86[{ձؾe((14\&}]qg-촽FUe 3vlܿ_lu;vV3Nob\ l81F|Va21+M}LӱI-=| w5/ojSw#k="u3j+Wrr~rfW?̧L!Lhgxڍ 9ʶy/ޝG=Ixt0d z[(jqC!!!qCXZ-dVLd1Yru|L,i d.!**w3*LC$ 3q> l4I7$̢huԝ3\dұ;-dl׻v6&gaaSFhCN^B bVhy˞Mlؤv Hh횔{[6&86p6ތQlb=,Y6cJ[˰d=>6:ya|  eǦ_@=Φ^vR-?Z[lzG޼=f<GP3$j}H<#j{ձ#V"Ld?ql8S/9~a:c7v_2}@="&l8v|،CM^޲j8w{dth)亅"^!a__[ul~nEa?!Lh;\dC !n~v_)> Q37i`PL@@SOZ ccƤ靾 e74C"1,AG {EX5QͶRtVzhD7-Cؤ ̗^c?$mm1ܾ(sl6cNߎ5O}:wDՌ?fNزiT!<+\Lua#'F&Ch1l]ߎ5By&ξޒ*kUx(9oulBύ&0癷`s%>hK4Sf?A٭)+|Ra[#D=f I*ތY<7ք13\sl:]EИɀ {[|Hl(zWw#l ͤxy%SqlG31լD%yc.{:j NCd+֞91ex扽cfAřܕs۽`*Ɠ[o3 k0ll=l,1daKq 3vMOhC>xU &]iZ?C'r%rlmkn[+n_@A]^*-RPʼnƈjjO͆:xgf҉>)re՗5~@{MIn ƶGc*,Brg-tEN)O.^ ]cgv*)OBsLۅvJFd")쥸n8 sa?7,lJ_P6 윋 vYRR?Dv=a>e:>"P&®ybt:K& Uhj̱ݜ7 形)JWdMpjM4FF!B{0` ،6 RGLR3S+(58߬P~6OYTFjbbwA./neC>$ |<¸B2dW?b?2舵9>h'Ec% v%( qPyHWu1 CEd=5GdūЁ(N/-A乐j li-'>q)Yߑ;`#]Z65t)xML^^Xٲ4(%шmj#&dZxn FM Q[lMUdDjt+Oʦ#=ȷQo0 oǠbڬ6E JA6Ko<'0trPrW6nR]QXS9cE_xnc6hAƳ&Fdi8Qc{l~cVv6nפIJmN!Tl]уAb֛.Ȏݲ& 24!ozrfGCNf-eep/WJ @i/uz'QRi7 -xzN ͵rJv>r%lfPdcQaW;ԫ B} ;vIF[{ cEi/l}ZLF.I\%}zب65>½m ux]l߲ ĕom#=9YXL&͙J<0ر^-ⰻMl)9vM!/n$<rjSr~Y{M mVhlXowz9xM\cwaE&i7 c=:`5"$/bR\r;ㆡ\w  Zh<)Ϯ@Ҳ)a3?bбYRÔ6k<׏}bE ,amm)m.:ご5`˕^ ̢/lE{z{c[LgfZv_"J=?`5tKQU}C1"3PEKF%os|RO]y)ǎaƵaueDH'.Ľ)-xA_l=9wy#.fv4J$jɕ|>d-w.?1kneoU`U!Y3zg̀'ϝ M{,/MKa6ud';ؼлoöv {iM;=^ eށO.Aڱywf-ڔ;-mu0 HT>a%l L)>69O }OnᯅMZ6a' ^O^vD~f zw{c}]-Wki9@3f 5Y펍6`z%V6;2{RMBtZ SjKU;آWE-mK)A?ݹhfK"w@)QL["*ސ;/hWBM)_[N c1+{xSvlR6KNzrMrֱݰ{[,PWOQ[\<ǎE؜0-]vK+]c[ŋ)wsg~sa©Ob=DH:HF6S,vo krU؜DycN~˄Ȕyf/UNkz+;uvLمT\J>n4 4wc7;WVB1#lF[H`U O't씬0PUXtvߎF%ͫa&H%]։X6.;*sFQ&Nz<*h .7]!Yn)j+;i*&(,;.yG'xO *ү?DeJVӠ17W:-scs" m"-r<2(\l(KZ63ol4w|6FYvXQ6gڣ /hh*&Wݰ갹1ǦvIIaQẑ;\e4\U 6]SM1 kDGo^V~X'>k#=}z-HO6l*ki7cSC<&6Z 8ݴv #tFuL=T!F- O۸3ͩӕX\Hv%tm8U{ez4bD%l<3]gBس5rjM +7VfNh''?&Q[vΔգ!#yұCXg71:{cc~M\IEωN;e\Θ5k7mle+F6]S6ׇ%lٌV\,Za.)f{*P&7!|y.UmUʝSd 6''Z%~OG]5&jS3$hzHg_]SiMa9jod бlz2ȮojF6ʮESV7}oUxG6fǢm؟3ڱHSԛdfz`vN,AAOZ\ϧwŠQq]S=qݮv= ^  W0* {T&VšۋlmV ~*5jf?EN~^A@(Ba MR lmnT:a(He;TqG32UظПMi;L&jwMCjI{;& ɴʯwD-id8R\ A7|eGa'sg\&7z`;.χc,fRTLUK<ąH{ߨ0ib̮rl.wW;uoORF U4g4pF{}_o/E_ :Zo˖C΄m$U :wk r#u0K,lvl撰殜c-mO[lQ9bه{BOGegHU*s Z nݒ5F>}zwtg|/}OMw.v&3ч;4)R;Ũr4qب\CMSk64w+fM?Gs6W.KaߍRɲy~-6ߙ.AJ6C_Q& _cbDS)$J6 L.O)&ӎMk8S{[ttvl2;!,ϴ?{Kvo{ǎz!tw>@4սudJ54m);&&:k<0#O>dė3ʳ|T7ҭw&^v2: Qs;y=JQsƜ[  r-e_'봧ZX5Kŕ}Iz^,_3DT*eJU/7?5JekB=T}>Z)b/vxhSvs &17t 5t밐 6덌krcSѬU"Z`f=쎲}@:}8cԛ!tlhҮݛr j w;`?mt*ҭ [l>lZl(e{S`50l3-6F?d6"0La ߱!C^m3FGpj4mxVRI$d#rWvߜ; !:5c}2aKf3:vjou隍&E ,D e@Q/7mLL6SU-"SƁn/86 "žrh'.Wfןqke^ &dEat}f(F\mͦ R=ԟ`Zyt3;HJSn&v́n(gYt 96{M|B9~lۓ׎/`0Z {ly asFӔL)Zw aa!!$=*jP 6>:dJSIO58{G(U[6&50 $:P;@t?ل*@TJS`OV#-dw 3M3>. 3G3V,A;6͐kDŽ"? а8k&UQLln6`|~xjWXn]LצrQT__l3SFUȱH@,ʬ-kŸGMSICNCP {cB$9qՐSž_f=yP^ΗCM2F3y&h\^UvM+xK%l-_JiaS4عD`];4tB;KI pfɗ--U-D"fa١96ia|I&HlؽIFY-̚D\o2PYe'ˡj8&l\G;^e7u ? ;`eYx*?reif㛓-i=U2z~%44@C\NLKD8"( h1OS4w%a6=(v+1bl`vYGNEVaskb 4[3\|赳[~0Mh:;]S[Gؤ*6 UƍZ¦oz{zo$}CmlXr]}#]H9Ucw\5eJT}ֱ˵kk]fiVˎ;63&U+d]`u:6M';SV+gy`L` 9|YcM@59!Y_]y̱Xvv' w׎9S<˭\[=Tyf]kP]A{ͻ͵>˘Ƒxp2mKb7Z \Yvl\g @%LDGU76v :v]nmO96q*Rj6kBT⺇p f}r{Mm Q=S mEjOΆf,0..#cnz!P |M7\c} |86pXk= Olz)9<&Op] |w7`3؄uӮsT߀~ .+;Џ|)k7b~t D{NBf+֛a/;0Z%Pv lpBdl 7C]|^p//&d~&"lR'ff'NˮȚP̬ \baPSd-yfA ՓF<٦-׃g7ljFY s]) roG'^I{(6=,yas`ؽxTkbc-v>6-n`xdYO,[6q9Z/Bԇ3('-veV=N__PuݭY'"?d4(R7bpڼ:A8AhASY\3mCpr% cR*"91O6 Ouءe'"l :0%MڜwlNPaS+Asv̪v/as*&$XMp>"l<7:v2&8Rol5lid^ AU,{Z{y+WN܃/miiHmNǵLٲP6g7QkO`̜5Ǧ]xln_YKo961/|#c'd>(}PرfC[Nӄ' 2;izY+l"l4PJQbm)؁ݰid dr]h /ݴSTwӚ[QMQ1qoϞ ح)jaS\&6I'\~RAN9,hM#jz7JSK)YdF*˸G]-'=nC3 zaU*~5RӈD* !eH@3[k uűc_&2 E KE<.oa/@)Ekwݲ^;6r=-N4v>l$ךf8GPKجZ]^eͱ=F^Mh6 FL"o~Vd6}e #K(lfI1kلPOY)yo̥thrvpR[el]ѱ6NpmmG11ĴnI׌M*BxLԄ\vl~vVڎZ٫c-Jߌ^bX6 >UǞgٕ5a;f6;rM#Gzo6_NYoxZl447O/X=)_y8vNZ6;s[:j$R?HZӟ7_~RIu2976Z^ LZ[Zz] ;"MF~b;Mc bH `8E؁cOI86̂cc>6w65‹ݏuC}qaZ$DH-kIH q#r(;/@&6i'*b_6I] gmf׽R_l2b֚~>ULl9?VTW`2f|{I0:vzӫ] FnȎegxdhTZkiH5!w9ƥ爲.7 ;mӫ^Ht^Wبg*zfLߋb6إXH}&ؽ+k%:}Ck%+bW#l} 9V[Sl=#l*"İ`g|g)Kɱ"=ң:Ǿa~vG֤bղ^VIrpI]]`s]oZ {Gl_^Ȫ);jw[ӂ?C(WpwNf hI8`47 s ]>\:|Z{uW1Qt;OYQT;7pv~,-6nYT˔n&lQEC(;T,^];郿ثPoofvuKY.&[kIs2/;iפŖ1^}6,5QiBL+:G2ds&NDͻ1Sn11׵mL͋ʧsjnIp^NjdM}2z8b7&DݤI`7e=I+: GMXT5A5^'|M&fŖ;Y==kʚf6G_`SLLIgdMh١gS?`]W؈0o┰љR1ᦖ7^v[8#קFA 6i)g7W6*T 4v%7f f6ީ-lW/>6bTQGuM-9Yo4ųH7jB@DSUvŀ3o Ve iE;ڛz/G~[!w <)\'B99P[vñ=UN&;;"5ȝ/a)a j]e5;hԵt^$O]wl5Ƽs>l܃ϭ2OC960YǦkjz]F{.RxV7C~xH3= 5MG}UrT4DJo^~p41-6rHWMlBahYYz{|]WcºO_gmi5'M&]DžLRNfjF M{ͱ3ͯʱ_65˦B6>icr;zQ8HIY5lqq-f;Ѭ'-@րWek$.86sCu}~-#CVypI#)?9hZˎһU&lЏ -lg^h'AHQoL;}~<EO㎔űl*Bfc"&/fDvc8v٭}. IN56DŽMyFL/c¹N`` E4Q6AAEN7bF[_ מځLʷl7,cw$}& 򜰿Zlj:[O^~7;D: VhvSELIwlOu5[3S UKb![%qgn]sv]hؤP9W2fiQn6WJk"69:z˻`rF^⦟Vz- rNF+S칁jC0[:8Ni`wUtMB4l7јNw"7.9Y&Rfq=ؠPڢrV#I^l<]7;P[g۔b7^+l`~;v³`ǔWngFb:9`h?WMU)W)^sáV^aiF| 9حkwٱ){a]IHdXXg}ǎ-6 h'zZ̽vcZAw+(඾3W:4hinwJᅥSI1 cwh&GX\^g:KaU !]=6oi\*Y6V},l V}WrlVYvW1;m=zW =mܷ/ ٘du؃=5]^\͢r^G(: H.Q؟ kyٜM!R±I]vn*o,ju/V 'Rfh#}ž-rӏc雡ķk~fM;/+ >=b]ݞri%ԫ I<$Ҫؔpv]Lk)ݪlkoiCvcl'dbX,'7t > {ұyoQ@j SfJ?C'b/f†wq9|?=6?(?Ot,$ԆZl7&(`1gL.ufRNH_ 5 6l 9aCNc.VO}}̛3~N+wrGݹ( LȴZzg1EbH`\} 7Ujz&Na3 !XgC.wE=&aU^ dzWA(7{y=.liY#X%LqogCxۅM@{̎{eo6uo/D4 v/ww4/cgz,XcvLK:de@hNъǻb̄ߗaL`x{rLDWyJugm%rmn*.a90GTπ+Z_їŔM$|dY%ǖ5Z)܋i ^C([>?F[V\[F)"s M7] Lc'Xƭ>6 MQ7)l-n U#Ē:qPT2H̖͠#Ьv`˚LZ]Q~abeyvME\sma~)n.Su#GKSUֱ`OQؠh=eu?\h$;Zp66l44Uge8Z@$@)cEaXب !U_>Ʀz4NmH7vlz (>|Q7"l=ؔ>(vgy_k#,^ q؈Rx©{z(-5;*6)_EؼT>b wx{ر%nײ#'ԩ;plt1 )lʠDrk{+nfd󫷲ͱ-v5+N\ٔW?'F ( oT*Zj$yRf=#{h7L͘)N[~+Ӊf[5eu!z~|؏Y VHbvg7boGو&#`^#0/7U6"l)ǾW)=.dMKF+8\]wlA9KIe{ֲ;ز <>ZoD||#l,cÆɆ;a9CMMlCFGb{xD!QnJބ6ӟ6*9U < KM;;gh$UơzxMVH.;{M7#-(ٍu6=Q63 ί~MWŖSMP vA@eInM-v5;Lw.-{&mٸHքʀce/]L oԚlqjA.IGsŨ={3qv>OH [aׄ}n-Tc2tB)<P:0hRtd&XW 4E؍M <`cXw. }0Eqk}Q6ڙuE۝bSt>i(-v B~ f6eF벙v7m*l"Hݛصݲ&mڠ:R~MOKa36% 7 '&L6W nr "%Y;W3u׭D%*HJ]M E?L$ ,TEK mN \Mك¦3.Eq=Ǧ;tτM?lRi{&6v`Ϙ0 7l{{vB.UZA@g][-Ṉ9W ye8%lh NۡIN1H5/g:ep!/Mu>^\ rP]-VWϔ;ywA7ÊQŦca/ t3`ҙ2Vae(cr"?P6ctf-lB7M=6p`p{ 3⊓2}m£Ub‰ H$l")U lDO }C~/-OTE@O) 8t VB vL+x^ D`c]GG}Sh{\Bגj/BD{k4Ir#{K~qa?5l;MZ{d@!Aavl>7]t-]]r4_93sPRK-[3s0  0` {;*HDs9zuNWPn>ZgWk[ɦ`]<D1~ԞؽFE4;vֱsY°Wz*ZéJWbKӲc=QIuRB>.F}O'WM:*NGL\?6ؼnp+b3 x1\HOeL78v2ĦCl<c9vVXWB؜z\?vc7nu7_ulDh6D=KF:co?3a a S\_gyIѰsq:9;҇l\G>`%^]W()HɗOɮ#":-lv\(井=g q}9&ql6azG:Z;f W߄ؼr~NZ6حl&]D _ HRPM$%Xԝjn^je/؂(اMɯm7"ldCdCwyg߈o⥆/5}DORyL,{c^ֆy-C$Z:'iˎ 98+A Mll ]5F;;xװO)Hcռڷz _:(v;bc_*zFt;WT c@܊ 6WxUղRx;,ϭ72߇؍Mܪͱ9+*ŀ}f6~9y$NKM/'ϊS$d_RHEP',rR?X24fȎI??/ {wcgW_:5VpQ y)TC؟qd!0(|Z؏6ۜyR؏9t9!g=_eB|2a˟q+)wE6^t9; 叅=ڍ&@Oׄ{6v_'c^ڤ]^l)sM(^$\7f5iasvOZO?˺a7Aġb>KFײά˳d66Uh3a3xƜl]a%So=lO ]\oֲ};%nU?m ;MݭLʦ`ԍ=!~1sa_QvN庸`ׄv^)rll6Y}m=WWh:$^ ۪Y86'c[> g&lQrKz0` `O96b7S nao[a[A1ǦXk/PdDIJ"=&㪭Tlb&T^slKe;{SVyNb_6W$665lϪ.d/msM]c@[XTeOn٤9Z~t拳w~1>Hɩ\9iG BSSWfc<A& Sb2T0R,.t3hd)dg.iGC%O~DpwpokM3R@byƱdKFqvYا,ʉddW%}`sWLk?GfYS*f>6nZ-X gVؓe\?j5`(kɱ }pMh I^; G,Yaꦕ)n]e96'`"ʺ3Ťsઇ{L]D즕ٲ!Ry6z2dV\w4v]²Q]}VuO wLέ{ vMflٌc)%Ξ6~9qld쨂6:؍cowl€s> E &^iC 6&wSl M>>d<2oBCbj}HEvgȍ|2EFO\p\Srؼi 6p_ {5p v6ZETC<_%C~G,rgŵVe-nRA E{ Jհ9v^`zm`^Ew_eXo-bw2`ײ*/j 6ͱ{[cD/䮘NX6'}rhr&-9㎍grl6EظبMa[ZvegX-;!@ :#:}Q>F֤e&̖+32{_0l&^^a{vg7^쫺Te˚u1Wb1&e=̾*a#Rw؈aor >1[--g2RB-s4{9Z!C5LK:*/]?6ۉ*)ݡؽ|.3۽eɝۏ\\wk#EA >:LmMut(c#Su%(&5ڜvgUYVv~ݸc ;]plb6?e>Jh&bw:`)lWy5l- mpQK;nS}u7]5vgc74\O۶cBlۻ!7ہn,kvr}&`GײuNcȳ]vĚϤdˎ)=ք l*#I;ufk7}O,wnH~]%v±[xFr?f;junp`;ZVH&Ws`?(Y7;Ӫi9s( N͍ulٝ3XDK6_tvw?}ͦuklXe:G IQTݙ,w{dxHVfV,̓/u}g$&"ͬ_`7KyaO({{#EN`פشiI펍lj6bxmh,wR6YjG"8NZSBv_GLcC2}U_Վâ&Q|r&imk RT*?޽:8&z"rD#U76cMaw"Qth>~U_#z"f\v#=x}|"f:4 È]hNT49`FJKqiދ{Ř`b>╩#o m 4e'I%&i͙= <ȘY޳X)>2D9T͓q R7}Lɳ!4۞+-2R/h2tTfvƱw`,i9ṳ+ab>EIϜ6E'acz6:v>`/TS|E-yvzsMdR`=32OJk&LLM^:}ƱXa켯cՒhS싫Nجqia#bIy9åM 3#V.b65ﰑٴ6h-;6zJcqU!ޔ-LٝHr{;"m7TvMڟn**-ѵ촳ժܚ,{1/5{scDpoߵb׌[*:I"+M`e=f@߭ett9hNn,Phv''|I8v&5){VP6 9 ɤSWB`Byy8e|ܫhz:0+c |VyF}sqtb6`ק~Hޙ==[byG]{MH4+'uNm:A]N?&>G޺@DQXb`sKGKä k 0!$TQ|gIU|)=ma#HBc֎=-lD_[ZM~ARt:csχ&m7 lZ)˩yd MtSL&Op `k՜@۱<tαw,_6 1uwpݾe)JU6}{ɱ_hȾ+{>)V؜Qkf8 ?OXx-8}\1_.i\;|nrc/:6WUm!=[!6 ύv_X-7<0$ #=PW&Q ՞>k>Solݲ60 @+W^e˟C=xl e nbwa9@u/%΍w@兮~b`7̭ӑEGvűjul#3-YfCHM܇qskQ@s ! Ҫ6,>#؏8g%:dQ^FsuTN4ӴiK?Őa6VIgyjjr^lUacsO;6]3݄hlONZC6}/@5N!3]:F5kBdhX'l5l_֫/#t}iuvh,m' kηv{_@I܍4k:nzws;lR촓6sQus:I!=69a+iwڔf˳}OhY`M]۱+-vwlȫ]v~WCgTpڱ+M0NҼ+lC~ixgPBDV\;?k٬ ʘcTk6,ma cI"G>1 Fb杞{"̱K&f4̺eGGI0[~1-ncS yl`r^q#]e`L˘JY'IieCH663׸ Batd|b13+|p=:/4\keYd=D/,$4ܗH/:XBlKy52Vd zhZ# qvVe-::6WQ`c޻͎M/JaS`7#U~ea?ۖ*CFnN_ ؅r ,9櫃5M<6s)z v>TtWRq]nz4-=2@f]?#l 667h9'24\3O&3, 6_'A:*p[.@?55(/*a7hЊ]a#N,~@xfsMb̢EAVvit:6R4thP{SF%-ٰgz/˚ RaBlϵL3Cezaah|;֙2^;7f6ɼݍwo_hIF;slUk|n[wf}oW\ZFv v~oYl*9vkO7U'mIcjK R¦"l{'ƌ(;U^ GQL=nfKUb+ȨK3j;(}O;69_Ot> "n6 |3mڞ$r׋X1mDŽAԈ~ֱ#=sYHOTRfQֳ!6)4q15,U,>-l6 *zn.n5!iҿ_eoΖU F_;6n;bjFz{ޱ r t-S7[v_g'yղ*7kYE8=֫s-1lǦfC iɈa#JP vC&h!LBB@ OG6DHCVlL)Z[z4JGJNӻ*Moiq!c)=VQ^Y6@Uu"TLSB}_/KvDkWe{fV+<>f۱9wa?v|9ɘɋGրƦυNظ}7ЁbkRYe6쩸aװn&cNb¾hNCƕ}ln>]Q4m_ 6rE_j!vctwek[o>,|-;)SƨWd_5mI옳hx'y1R?dMq)dw6u# ?MIJ?r와,UIznHLn6(ܷ2kC6ENԍ|3CݱxF5vیA=PRv[JqW7ISšA M{E]N%Fu4_}#y?M(1[~qƊU6^#wfe\+˰-#2{N$ oi.lV C(cM'+8!ll~/6dwˎv*fu7`;vܱx&RlXQo!^ٞ5ge:A&='l~dK9K2C`lk4]reG@ ()t;ӓ8jʚMΝ5Ī&sݱ~ba]fTf6u| $򿭾;3lLɋ=) HQBW2*xTm7G|#?ű,5ꅽhToP*K::k2WgO2زdA-;|4M'`99іѱy[ j hB\ŮOh|-/0[l[e?k;8v/ixMmq% \]]V6٬!6*১mvk*"7ޱuabo]l }M50 [ӧr Оhڔ eGma}%RgHVE5DJB79_]GX"J#ЋSXg#ѣNRfhټ֏aY歷&fiXey6_va_3μeouV6K}u4۬YN(Eد uatv[Z .{mJ%ְ+¾>%۹5!Bv+[D˫ ز!zosAeG,"ǞVo~%?ͪcl%%64?K -&v6&شQO±ٿ''Qðe=7g@(ojʦ - ]oa{;n;N]M?[\aS+lʳDAGVBF{b`Omv浀`u%v'vU~+E1#-U}%/`aMNqYZ4Ǡ n& #U ~])%4d4*/DDǢw$逫6Ba6T>X:! X#F `S,]am5He{(X ӈ|Lu;쬰kI~{h˱o.YaS7 Ckݜo@6_4I@wt~ʇUTiGѪd^=i*QmۭI:`ko86.$*ٳ a3W1NZawؤa=b;6kXsl"l"\h^bM`9Oq~gز+ݛvlE >$Vٞ;6n\6=:jl0[*6ذmF+Szkh?O( MWe5z 06/ƕ2n IXwF"aMVI }rMrF;qZM.My3%&BɶϱN$=`sEuaS+`Y6Te$;D_0)vc:QN0ΐ:ltu"ʟ=L#@UYa"vO k kHq>6ݞφ]͔Z632y}#˸_Nu]́@18`ccQ"6|<5c!OɱN =(kno{o;Hc-w{ڱ9ՙDA4 le=5&+ƣDcڋP˦d =D[wNF6BxqgMPS*j|NViC_07M 1:kFq3T_¬oX:p :Z%ŕ֪d mjhH^NԇO#3qyfbd] MǦ({Ǿ DŽM c> 䃇=a&KZhon'Jo)>VRcܑW6"GK$vtv/Y`cSAvn}}SO+ؤBNJ=؇BzF۾?SzTb3aۏ=ZR;!l3l|ȿSo96gfS#z[=)#`5p[U٣e->aL ht;vıY;DuWY1jgekGa00-qLma#Gш `uG=&l<£F叛5;~-Β6}٤鮳l iW+:O=61CsG4&f,2jҩWحz_xdvu2lkʱvDya_=ZBŲSբܗ.a1k:6)!챻ϱ;vZd/xY5A)ݎ}Nf,!u{9b \MLbb`]̘>5?LyZ>Լ쬰wI*&Cߔ26qnٴ2lCf=Vi®_|-컰wf5ljLb㼳)"؍L)kg5=e˘{sYvlD4韫.t3J7{d{SͦL|0|19<-\oUt;*Z{pW#v܃ɇpG/~"b/~DZ?^q߰w5;|[6!4 !9ؽA aO[inp슲1jROĴѲ넍X !}nڭM[uG--v&:6{R#1Eee3[9ab=ֶj7l*Kuc&Efhv! lʲi{7nMXrzWTQjP;vlb#(;o¦Ũg{rS`762V!mg}ZNC0v5{VNMv9Ejc`&>ǦP%p1i4l®}peMx/^R/nqOP|0;a{zrll,^*k=mqƊ:eU/4M@!'Zvu(^ˋ]em/fVEvj>ʼ\0a#9*9eõO86ݤCgQj{v5jP5}f(Z!1a6Ka6kpl*(_& 1bCaO0sa&>9(lnf9e(UwiC:Z,;%܄\)sƓSZl ()}UaV ~$&Ţv֦p \nM5`f*zg~oJr6AMYaYa 拞^aS%؈1o+3a3bҀ5My$rΠln62uuZ G jd,K-`sIM[nTr-xQvc#2P,S5?^g`ӛvf}؇[ )_5S̈́0NcDžql]̮64::e>lʩI& 6ws3vM<җkNa6S4# =6!D(Εm5AsȱZvM1V_OX6̮wl>U9N~OlO`cMڝa6eȬwodj1-e7F솉X`7.?ҍB?`DQ*`ϖbrU ^u'lIJ{vco¾\ݔff#Gß2;L<Р .jkOQ e?c3V̀^wgb^Is#_։;ŅMl_Q˦)ƅeg p~-mmxvWΖ_`c7E)6l(ɭI$&!6DPCp_vM,ۗ+w옲: Rh}vzeT!31hMB:3j lSÈ|Nj+hBuɘ3b??ݍA iH0[u,'ko| ?݉k=MԝɼL诛!6vSўVɸ`CQǀ 5U戊f|!ll]˞-Z6Rla"vӱ v݇}]_iQϱNOjyg**/e_沪|tlԗtlcNBv{M^Z\l<b{| ;L\a`[݄um }?6F=_RlO԰&ڵm$='l*2fu&xǿgj'ޮ l:iy/lքF.5aNYc;t/W0`rcs=OX8PgҞL&[^ [7GkS6 D]V] !Prc/ T='Dcm%XRk)` "O~5֪+ bS۱V-(l6)gŊV:뙌NyhB`SG!Clm )((uMz.[[@ }C.}i=m'f|=eT?~;cfa(FѤdA7ZaY>{&n,)9)l`d =2=T-`$Ԥݞ6)n1a݀-W X&upQ\in;ioձO ^ ~'fRZA3{c!F-g:*!SӞc3icSAHENoKN_cLמzd6 Q6+Cي'A"oT>{ctlؼĈ  Y->l9)Ƥ0^86"0^rrkE+11F!, ӳ {y)oBO 1+Tud#Ecfc(&4XoTrhk(-~OLfcP[a#4B[PbfNؽ¦~aav`LL6F_Y" ݰMF );EbSQbkѲ鋩$:6\M p<]g48䡒Dűl6˚ -炮7c A6]:*+[l~'fN {F؋YİG[eqg7RQqZ%e3ncG|ˎT8츲͗T>K>!l*@k[w()_aV٧f |3^ժ7MArݕs ֌V#& =Vy-̙ V)Oխm`R5plF!}+?Hm>YZL[&~d.MɮZIJeG'DUOZVʋ&ޖJOuתQ/- EaOxe5u웎,Ў αɏ+]3i9]Ǜ n۱Gͽű QGIQ#a5e>۳%cSEPnɱ ͺM 6E8RuZQfM]˶YV6v C^qxHٺ Thhzd}@>K[DCnL1;ja/ǎ[vnu΀\7Ybڍ)*N4(H-Ekj{ ¿:2ޗg=鰧+۟Neu$ KlqaLat:Q6SŘ0%?KUو''T[nagIP®GrZES)[QhLyI.?kǞ i,PUʜ y<ړulNYnLupbM7r 86x Uz}{ܱ2PYfn^Rf'J!uOƇ _zӑiBaS@9aaYG?7㯰$ x%d.Ev6קt1R㬷~) /̛Dz<@ѿNe//$Tf"ZSh^,:yq}`SI?qפB $ e뾲¯,Y=Ǿ8gf Tzsٲq8Dt+'2~0y;Z_ akfb5Twkˎ=XRLU evFm1M՝I]$5sG5X z)l4!55Z=!6zUal|،a#s 6neO :c7=&UmHM /-bXᅲ^-hR G*.a3vocE]6obH]-E b7]wASN۹ѹ${;Ng9Sk\ {@4vcӺW(#xuٱIoqlRbw޲ݝ`DS%-a,l -2o6:dxoV<&vSm:ԛIæqHÕb#sJu-ePDt $>pou'D\,*EPG_6yi{&C?`W)ar)FlƍQ p-Ϊ(2e]nu$=b#˱Yo\ێ;6b%gwٱvZLMiw"ʦΐcaEۦD*xьnaO9vԱwlY㱜FY $ncg'&nɷ߭alb=^{Z$&k^?,=zKǠ%&W%Ҁs54YE8 |Au6j[fDą#'x,oQd95{رI]1˶ݓ9OdQ99i M, VVkS}gqY'}؜ߖmM!aQܜG rlR͘/8?+]닿&z q <Һ6=،'%vc1.klNa7Čݱ&ؾ[6q52в\a$:ǮwO}ű{j\`kg0ˮ ӲGWޙ˖M/o\F'YbخُVvnplπݒ^K,vO&vU;bSI x\rq߈ʦeG,;ua:ifC2P4:hxMf_KUwYTJ:+ƌH뫋h*>,R*m>Hf:Vək8( 2KŊyYزKvsYn&#g}5lƛ@wj؜5qK 6S(e8,9va$l0^6HV5,Ń-n.s!6i>\ăAӟ?Uc0Yc %a/;58 ;i= _Tl|_ӺXfW ! G'` v#RwXrsOݎFF;~_)lf5^ ]+LZZ&} na ؾe3><{c@6l<{ҿ氨Vְe[ ǦSb5XLںٍ*֣p G[+îVQUlZ*9!rk U}oW=|r⟡tGtgŜ#>? ͼ\Bj1c$O-더S]cqlƴ19&GaS8Eݼ6IMjUldvgnyy(0 شRBa{F aSL*!{:&[fmmcMuHɉU6'vϤRRݑ(B':**DZ*&'LUQS ;G[=XLc3i?t4'ueM1}cwlPM䐰&-^{Tاgα{)f;$ktRB%eXo][Hj 찰۰;`zߢ.RW6%UMlo'ia/+;쌬II[-O?]Q.l2dطMvHL=SԤ Ϥv/ſ(*.li%"Q3uq5wGtj]yA~!~v@xUO&Gـ-A'~,MZe"8^׏ ''k٨Hl:E` رNz424)#qP%PIM/9Y F{eMVE"M6}&bMfŮ7)[lxyc*촰/7g;6JόăM:ɵvgbM'Y_{ԱlP>B:kiÖ !GVZwQSBF-%i|$]3iїBlkYY,잢}:WI-rƣe-ۿ[uDݷDSRU'`=bl_޽+Y|S̀h_3b;vl ]4Zņǘ:k;d,L=at2:c+6n6^tD}lMaSG,x"`M>Y$x{\kUFNјxQ-l QL" ICmwSApFݦ4g[E߽Xrz~<ݾ[3vfkCA>4M 'g lt=96(ľ9x-aWWٟRAg7 > l85l۹|,.7l7}-Y&qmivdWg-}0Lf#MĵSa焍wˏ厛;7'H=8 e 3RKT\eWmf/964e{()ۂ6NؤFCl 0䪐pv_sva[cC  Gя@V;+NR/Nʦ>gLA1cTu3wmy]bjwcYqas%4`7Y6vY'l W6c$060 ;良l? v @esNɦAЛ~RؑihP拉%% t_k搂Mot{^3N4Mtk"6-?ڃeY0&[w$^^'Z_ Hɹޫ(j.Z11 %VX؀SFaԲӾ;My |?GIez2D] O_6Zx)۶l9xQe8YeSzL 6;LM8!6ٙ0{pQHZzαN}6 uNL4(Feo˱&;' ktG "j:?j =k&p)iՒnLhwxtX_6د H:v&uKr1se{}KTb|DȦc֭tlK^rl&x^b.ˮ̔0 :/بn&n 4 abO]#~쮀);쒲KKMGdK&eGuy6}&l҂Ytl!bV͕؝w,QMGdΞs8`:vg=b?Ukߪ{;dÃ|~-CJoHϡx8Umɒ\+]LkV&`Sf#W Wu.} {Zdt nYa.Sv6W.مat>%vO asָ'srꠖCa[0lrv|Ltq}50r` Nq0|`4ʝi2RPiIJ2<* olk`JT{f(atSȑGU%a:`Ssl5_:6v86' *4-4L5a':ݗk2]v=kٴliOظsɼ]of S%) `_^vmqvx숳t;m646!`ũv/ A$ݿ)6 c8v})}fڱ{!Bž e}Wf&L]i˯{ȼJOʚ\[jf`{ldI!UO7_ {]ulQ¾^VU&`S?AWI(W>g֠E3oԠ}hڡ\˃?NQM `clh)&j6b|#1iwF.O.4N ڒք}H {H؇ljMξw=;1`| h,n+i$%aԣB̜Ijً%s&Cm Hz'\!ʎj]g*A`a?l& þh])/'Їs-!nf4_o԰Cs>*l\QχZFǁTGI fRgf(\ljuH0lc5֨?A 0ؓfjj؛|@HDž!kٞi(̕8t~"lʓ qff%e^ _k)KJ< },~-?;xBz]l>_>NY#w;_54uvO+`&)C`<rVZӶjWW\+/Q{ 9}~Õb"Z\i4ou\Ya{3=lR!ve#a l䳙RDYa)^a_ )OS [[em;CR2LB3lOe\;'+/v6aI"wט [a w3 1o hnslrHKc:x~ԲT_Q ~'nڝ|MYƽJݸx^R&vd>~OȚPݹBVg3iMauuɼTͪ0scȆ`2- epɱERؠQlS3I^T"`IN۬UJnatsY?R63sU^aoH /kՌ){s(K&l <[ ƶdMȰlhۄ=ĕ>af 3Ho HcY3cvݞ/mܷ-`O`Of۠%yUX3epR?#©C*.ŸϔTT*.s닫[I޲O$ U(D57KЊ>&J/T96eeH$yM!ׄMG*Pau >cӗkq"5U'l:.{W؞:Rʲ|%R\77Tkh䄩#<:lz.'5)L(2:=XMyb7GdB71 sԁPD]{ ^va&鳗My~+l r6U.z0UmlMV:Eh؝fSUuv^ˎłޱcQp:nc hnU߼.l< lGѱe Wم*?]R9TžWZ D7;W$/ہ>3ׂuq]kݦl#Bsu$YfC>wJ'2rM5(/f*R B=]Vr&}SJ.e0J?h+*ޒTĄLJ̟͋ ]gtٜUv|F!$4u01a#ca`;qlɚ-' l9qJR{1b祀2!vˬlY7mh$0I6،&Czv;6fXv&n7,96v#ITDG[K+l*59%n8a'&F»& rYQ&nca^6:n;VQȩB!v!GxwrВ\nv6F wFClA>h}gѱ[-{RIav샰'z)30K!6`M`A ʟ9PXX^Ǧ~Se&PkA؈w%9 h0"$zX _:?{ׯݽp7g\^PNE@w s1C?(*n\"dRꂉToksk«5 y}!6i{5l36ZGI[6yO^!t| 6rϧæ".Ͱ5l2-+y 9BDd%?,6+߭}aq_E\˶l&&wLA` 0yy`&<Cd&Jmn/mӖlYڸEV[7;琇Z(Y{b=u=wbU=)n72'èqN axnZllj6fc p {(HXj ݐC@Al䳐D<\ʠ1l<^N ΰQVjAaGdbefl -lin I>8Q}:f#pm8.tE&~z=L56GOP6[ujfʢт}Q ̞g̾ M%5e[<yS; _{I%f!>(`!L߀QwGO L$4v cP\̳}EPmeSi;[`ME!Hv!D H AQjQW\IjPK?d6aaC LWbk†5Fx! )h؝UTjX)NT ^@  >]ޟrepr^IK5{4z1UlG5;V$(|2:bm*PK̆. i6}K?,p/ifk6v*.b fTTnfO0P`KBc' }6Yæ5Ykn9=ulowqծag45*V.aPELYf#'B/j6|@n \,E v4vT+}c6 Y9~ UQYv&IW>lTQoO…,% "&#!4P%BGyG,0_ C S %?%k@əSIm/Ë-Nv%PCEK꬧ٰA 90Fvtٮb#^*5|l;;Nj}].1;af#Y Tl,bf½L9hL z:ݥ ۑjZpʃb5Gr%tϮgc|NL8a6O0$j(6r>爭 >+9nd`6@nr".pQm7&)53hSәZk@EI"sGmNx3!f{:_" EJUlc&bOCVQpYFܨvs49[êOj'c)fĶ u@;`{aKx4z4^h Ri$+1I*vX1ፅ^Hy){< z=${Gz(R;%g3PJ^3lxMy߾ e~c~ty6V>֫:lrX"؈;OwwBB3"I]6;QsOk;N(v{7{b١W(v#ɪb4jeYVjvL`_Yvd- ^l*fƳ#rJXl;.^}r!,.w1'#>km;S$}ۍi6>@0Aw0{8Q^eéeqln ˞]{EG5{' ra‡#٨ljgy\2ѡNk6b6f3]_'1"U۰uI,*p_'j8b6f6k إT*dۜn7 \aCh!LUfᘴdHM2D:(Āɂ+J65~AdteE+'c`AWYǗʰ$Ǟ3jE3l6_d/&Zc:ٻh9(KCAm ʠΓj6\Go2b{&"[͎j66fCaf ʆ†o2Oq35 fcO=!&=l! GRkl4# f<1nfh llS 3|Hx=Ef/2{8V NǙ쇙٘'f/T.3;$n=P=B^A҇o fg"ro`n,[`_XBL/bPŖ~vBfc=.l;i[UDnbY:okב2Djf2;9A=Xlڐ X D}~g@ 8ck"B^ 6تc%љk9h .Wnv@JD~r[n8tӕL4~tCї]M]b931wX(쳆$/M2E_e&]z3k).3Sfk<4u&ҞQr6Aq2`0;;cc*e' =9M`vA vM_s(77o3f! :m+}(>If=j1''3<( i5vD }$%yG̞lR}J{TS2l:uݢ7]I!H=ùm%W36 ~fQCfYl{;'4qn+dʭS~bLW'9<߾r:=6Dٽ<vս|l3=nfbr?1P+< yWWT Eb~k#Hgt9 4W8^Y>7_ΡQzH8MY 'ޠ"QX0ha S$)H!i)8 8ky/1Xb,Ŀpnv5vX2gK]F`Q T#6f>kY]nh;&FlD;0lgحQkӷvQm#l ;T$˓FNQ#|z;Oz)P|G{G-!j z,³Kaz&4OP($CU@gyQ1 Ӫ!1>^ ۩Îl;,;{Bg׍Um]v9w skPp%(GyPuCێ# %#a/b>Q;dWwu5%.I+W-k3ƺY>4ܳOi6( tyc,,ћsI) ͦ~+5[2 JnpAN_LP ='/б; RF #{!k^P$40"b."7.dZFJjNj5f_͆`s:-W7=Ý(tl$5ЃPwlvFlvw9Ѷq?[mLUH=vجry(k6Ӷ#wdEEʐPZ/b#<#b~1fKte6zYH(2eIfAf_f΅*v+ [װ{*PY͎+p> C̆/ !l6|%ߘ^ c xx">#QX".l~f6\lP{[-1{;_EVĕ0;p1n_1$l ;aJRKIo)ϙ AHffhbq(WPӬ)p@yif٦{7*Td㚝RPm}٨IeE){| Jiv$CnwL^ nWWagiوf?(Wc̾:r5;jvٯ3;컘}~ʑ~>㪜yɘ f{A5ȳjl"sM=.*9fOu~<QGj\v -Îf f?fα&B?*̾g'Y:x,R(%p|Ej*Dx<=Nf_RGKR{sթ('熝Йf48cv﮲\) {I'w1&#JDۻ{ ={RmGW^E0S## |U F.h!PBKCqPd$b/0/./W$oa$4L{{F{`s'a,Rm %i7# +.-6F1֋RF:>t$AƊņV4Pƀ#xv, },DᲔ;kb_ jjF&,=lT/{(H:vPwln7,}Zg}–(1ĖaT\ ,vt`#Qu[cgߐ{G-MfoԹ+sS>JqCk0{İPB]C O?%yȩUP!U0͵\۴|ZݷxmaM|W_w^ `ƏfPmCUm[^^^x ?d2f4Fj}-k}& >³Qz#ܷ}[WsQ DOaQ09 ꆚ%9c 9sZbbG;ղZBm!;;;}HR5'Ғܿ쓎uUM{B=F"]>KK#;F(Z)ЉDײQzԕJ1KJqUM& aLuѹsS{. ثѓ?xNʥ$#q6]') ORW"~DzJ$n$Irݛj#%V(i_fKHz 3Ak>gkFݯ>,n hKh 8|FRkz&/S^w8N?JmFKQ:t`7-Lh{iO=&مjr8(y?FT{]r(ܿ˳wOYr?^ @px&EJ&7ޡGa!D~1:Iw0Io =DvvS64(n n|  |5*?~CǏY0Y~c,ɸY^xäm|pl P{=npF0{MuҾ޻w^[:5|&K=N{wB:_N'~yV_@"$ zW%>l jvJZi)z7|bfPt}NhM8,{./R1C=LcKK\O$oT ma0V_Zм~zɖoԖZKMvVo[} :dzSSK %J RڧKt_z8u'R=tpFwɬ\衾 ݔ@C+oECh^_,Bt#Te%Hªr;3pܒGzO7_`K =]|.B4@i;G_͋?1KH(@9^BMϦ q0xq]ہQq݅f3 sέZ]3]mi`/jx7;HEqmW'XL-վ --p;r=|i~u݂[/kKV77u` z$mq5}F=l5lZ3˛eiIf@i_߿U9>,l ǵj9M\[WA؈ K-lF4Fϵ|0>9ּhhpQ́Nf>m ij8}1Pc}>$g|Uq&5^ dPIGGǷX봁P0@MH/ ͛7 eߜ-?X/`C!f]Wœ-幥ϧ>kVv6 E} S< L0d3啟{N^[z/8:;>cܪ]s[6mbSoKe _لlwgǩ c_;;;FGo;qf\[_|-E@:Ʃ3Sx3x7<:S~E!DᡄQ d2K^y勗 0 O]*$IENDB`tipp10-2.1.0/release/help/en/img/h_home_settings.png000066400000000000000000000644671274324046000222650ustar00rootroot00000000000000PNG  IHDR\KtEXtSoftwareAdobe ImageReadyqe<hIDATx|\ՙ>{d˽10lBؼ7yIvR B'1ݸ&[%˒,]^|>߹9C[[[N:aj7+By A.G1ӤӗEf5&U-XV͢-OZFՌhh8nnŬvP= 3ӗB~}k(|iZ>&\I@`1a2<1c PS}5vE2 Pb* 8^ VB,zc0ook`9n7 aX1ꙍ~+u0ti9Z@d1mbŷqt "o`qD9u$ Bjn~~sذ+_&EX\4>sXKku* DHɘS 9 v5DF{ioGQc; w`crzO@I!R~)(*8eǸN~ěJJTcFEdu'&JsPeNM]WgGfk+Y"#L@LB7chĠTx ?S@NN?D+))键nVz~zZ"2?Õp[5>gQi9d;oө^褓tN:@tIN:I' :D't褓tIN:I' :D't褓tN:@tIN:9k y^ݻhb6Z?G2Dy<:::Nb|PCbj1c4K% HjJENTQ*UX1z_wPȸ655r񏋋#22R&sTr1nRSb ϵ݌HRef1VL=>ۀY=KP|CO%85d$577kZ[[ADgP}1l+0'IpE1H5RQ}v:],YM) Hpyk c%lPP5QwnK5e5 2h A()/ubj|>wDjl_O_!VK`9C81HL)zEڌSꩁl=v5av*%%1qd_`kdc$CI/p=pUejg m^֮]UW]o[ 4=h`5wc|͍}ΜLn?'WREjlntO5oG^cGJN^DzW_\:} >[#YX7ZURV́T<|0QQQ wx׏o`ży ?+]9/w oEdZغS.ҭ˨h{oų/eܸB<"\~v`%g_Fmۉt5S|f%_RO~cHGR}5ci-*gבa+~ "#L… Yzvꫯf̙Wz(bbbc ugFD 3ڄDYJۣ9R׌s!%tc\jYfqT^^Yqԗ!Q&8q`f~~nνdY(2ɝ=[4]fKiw9fRO( *5P*42.Uԓ5`8Mn7t0y-}*P4'pg#';xwXtv_nVRcc Tbʚ,}jrl#p1bV$6%߈##'W W2!^/|'eI4cj.vmP@q7$nEČ$kҁm7s8)E]fZ5>23I$7+_NrUV"-PĊq˜оɚAu0"c,5"IbL#/sO= {+Cn(cꕚ[Dt椓ߏ6ĔYs o/A(c,Y]lm`D5wa&=)9j+$dYftRIR6C|"F‘ DpxǍ'aFRZ$?6IDN<)]]]1*Jw)if#Bz8: "+t;ͦdR(~H9z4d AһhHsƀ/f N^VIk 第SeeR%_LjOJ:ߤy|> Aj+?ۢ+&((1؛ ͎lfe!9t^>Q)bϘ+Q4k~&bVX#>z %j ?8/@xN #R:!!APc siЙ|9|hu݁SsAyg&[7q4u)t^D}@KrCN u⸾:}vI}>4IuZo@yTYbP oD/zj/cf84d;VGg*++OM7G 8CZܰ262KN} 2<}j09rI<4;=#ܹkߋ[V&7;WnY^^IMMRĠS|%,x OހFK.#11Qƍ O?^9m04jx1ڮYsnM 8$@HySf˽z ڂMIjn_2~~/vecE7)dVAqq&bM@ #X@lPo G'-/؃<> =yYҹ8t:L XDrAΗj>'`νQnͭڡ-!\Ys17U9^]KKȶErS8z<7}Y~F] %Csڴɒ<'rPcv' {p ͮ!2GMP_LeEI2p5U}K1(3]~6xS|?Mh>2c9V\AA851d Vl=B|^.Gi$q"Ss1" 2xMI$u`K -N'Nԫy"ɉѠnKyi-f]%Iټb5Ňt&AneˁcN\[^?2RZyaV\Y5)5(/Axωw1%F |~v3g "lٸN(;vQ75**#c.;X;i*]dWWp(\(ۥ$+v%L^HjV>cp'h #.AsTM"03$CBoByfr3:7hbILMTKrB$6%AYىDlo#Ǚ0bĒ?d7~ ivʏ5c|VoaX ڛ%y'4\l9kx‰N0\ ٿ!'hBZz%[gecR~hQh!jھ$Oʨ8mr2dH!Ňk tutG(}K[WfG$i#M4s"f g8ӈF %9"Eq$ڞs|`w`ÇiD)i6&ObQƅ1:S}ogH/=AGa2o63X >@97ko(^<+=o~ycl\VN ;m8`("سa'N{ cpy T] 5#WM\R}JU dO_Z$QjO>AEM Ok.;SKqe 8VLWkbDXDU#( ˆ! ТäI4I.H ?)]>7bǫR7Dz#G4]Xq >νdmjy6vfTǤy!P^@0SDB5.$/ݾ=ƐjskȤyZv0ߐNeKܦc\$8rss5i"`Hw^Miݼ*=oˏJor0,\[[M$kbXs~ /׉&-&+z $s$97!Xq"\Fd>l119.C#eS'LɅI&KOZ7veWs5`>IXW2snio5좗gvw4rǎ7a|3˥M;y# F} }L8!-+on8HLɗ;a `28-elʴ1B<*ۃ'~"-Vfv?`{Z+1H# = Qe7_n'onig`  |Z1ev#*C3 D1墩L7+S=R/jک?>äZ 4Pa8 ]eaHٗmU"^B& 2j>,v:5@C( _-i7O|+ljåMl*`Jhk _KY8;_A7k3Y8eĔ M&к_i2X &QhŻrݭ$y=Wucٻl59r<}r9qmػG!߿kk;cN@ XZʎߙ y:]?g& ~:B}W0ڳ?.\GJƤt &+-/1kX[\cna~#Y,{1̵Lfˊ3q-Wo ~A>-KJ]J,VT(T#JJjg:hdkoP` qQ-3r?{6YiǍgl*w^Px.n$-)KR2G-'JERI^`둙48̖.HA~2 63vr(Qo"pC^Y\㷘/e/?)a)YꚔ3R8]Tb>^ch2oXw.gga)nb=s,˿{ke6s;^xMKqh(ʚu̽^_PMn['z_lw?IW2/(--($('1)9f%:/Cƌ$) ޥlpyn:⴦)@z1lWcߡjjF/oY"0jRcQUSknb GLQ 蟃å!fhgxѣHƔD+61L,z+>?ңݧH!AYI%HopkO+qш4V۷RQ.uZJ=&f\u7?{GkrLoS*֊5?b"]ȼXp?ߟUW]귗ʑ\n&5JY1[CAW,~GVP+q;]8@uE+x5x#q7aRiw(c/tJ}}ZuqJu6HF=)$m}>Ñxl -^ec(S=2̍Aǫ6!.]:ڳEE+uO-Xї{x PyPH_Tm9VUUuד7F=ހW4;l!*t'+R 7ƣ׬AnnV*:R8u?>Pbsd_A0| |?R`N=[H=z>?mYIoӺ;==.|i_Iv?N^>:D't褓tNk;F:@ȦMeW'*l{V{{;Y 0 u"JMO=xN۪! &36Y Ft &%f:}ADP￟cǎ_|ӧ_Z;fQeNq9w|!B% ٠+HȎ|@Ȅ+>.,qMUBL&XASOQQ<k\BGT>q'GmiPRvvɰ>'KTnロo(nS/)-$x {F$3{j: x됩̙W0۹ Cy訨h <aӸb\ア=r386$< o^:b4撍0Լ6;-oljnf b$;NbHyg+cB!-l9HOM۠'v3,J0$|ޓug[hqeV/ 2ր!ǀN IfkC18#Tur5<Ȝ[.c粍f,g"b\>i `'G9~<IlXK2{-fJ@WOI?.^oW373lDu8Wg}?fg^2Eزޯ3@5СC3p@V^}vpƵ%Tc#X#NT(@B)~4rRUߪΗjcO^+p͇ p`gyp<?~TpĈɗqnfh^ q)GL. #)L-t+dJ!''9'dgPa~&oFRչN_JnNrvҳbtF3wɱiQw1456>%JW^d2b"7 KlD_[nu][/M.hE N/voW+Mh^ j 5B@;wg3wm6|WZ̘Ak"%e]#??_-mȚٰqNQG3@f~ϲEx38+{ڭdeDnj^z _ ̛=Gɱf(@%+S5jBԹ6e4EۖB$nbk.+u4^j)$sȜ(7PGG&$Abcc{[2dz)mNv;(6aC]?oZyݱv|qtvTk).Upx ^7[o;kVb2 ylyk>E%= f=܎P(Y3Ͼ.Krc<_ZA雤SeKҔIrb\WWA)"r\^R[k`a ֊}=AMLzeV;lJn~pn(~K$êεKes>Ðo~]ŘLPen5W0oz K^ƕ+7-Cxf pvR{izwim s)r'86Ax%q=-O̫~DZ{ljÝW>SlP%&%%i%P&.++ <4B/ь4ѥv*cM %ZwnnG[Xwp|⋌7N{}뭷N?Xx}m6ewbv$j♧ALև}E51抣f)}M%{u ؇agsQ3dFJc Yg8v/ #۶1tLH-!#!MKut _J9"ӅI"y5@jQ^h}9td;ؾ|sPm2yt沭̽qRmb)ptNȎCZg4FfgԹ\=(K&;*=\۷+;īQx+0:[1Z8B:*VɆnx>k%v~"}a"#ZU燔 sF"5JbgI4ܠ j=hhkvb?C,.^I$h lUz]J=Rں|yl޽%56hg2[ϾCˣl`6ٽ I]m=._ww:ьFMmN7IzjZ4{vZN_s$pUS&PウYs?-䍙HFWjf]7+(o`%w2(72vpJoag]=ÇNll?AqkSRZ\/b ŤbӮ:˾UkH>l.NJi~rQJgzK?tV>:c"qR(_.J8BHJk;xwpN绳 E E _|7Tȇ_ak'3)V+hԳ*'b`C/2a}eZy4[˲C~3d\V5;Yw,'e{YW .rDf} KI}QLヘ~FCMDƧ3p([8PZCRLb^xmr_ׯwɕyT8$_~Ehӻl,n'1%MVf?(?زbiivijؗ_: ɯ A>K}=Ƀ#xⲩCVRG%D|V݌96}2v&yQlx%}i1SZҕJ53&nOH#8Fy_]ZcK*,~Peo=Βett#f+ΦVQ">3 oߗQ\?O=C4lY~;o\00qhesyɰaы'ZCD_F/سs 9&i"Dar=Z-ϫ9+4yϮ&o|kVꥸ'7/T'FKH%B4bHd_}F"w&҆)}9XRô+c\HHL$%9BR<*).-"%5R=܌7XRHMîf RQbw0{Le% gi!qqٮT¦Hϵw>FmdKIxJqF0YԗQ<"L&Yy?IzHxf…L2E7|'j)&k6n~TriZicDd8^OfyPPev|$Ghiuպt+6.Ҧ]:yh9`TѼ43Pػ%وݭh5S͐ C DZqpm=.٠&ͦ+x{ACj{.gZ 2m (=&u_q ZTq#ڢKk2]^?V"#lZjPNBpS^2;K"\;_3fhm0(Ffrqv\𿿠O֨D'qxՋlX[!-CYa|6foc5#1*jei6WD~m~=4oJ;_1Z \|}yӏ}׏0}`>cYۢHfc&mpHJTAzH IJշe߮#yR .x#3&TƎG%}cxfn~;j(]]S'u&̹sjp+"jǾjխ>LìU,\soĢTxe3lYCtFiŒarRYnηocګwW6Gd2 v*|eu&y;*7߼KY!-٨gys3jqyx Qv]A(I:+Ӌ8f]E^f&FՂ O$Ѭm\ص4$ _=gtpc^? u٬( r o3<m=Z\J6JJ9N(g,qT9uJpG EGƓ@\w ?"̻n& L`Ǻ4 ?r -{6QTϪ᝝goq% ;f&3yL1 :2 Q%E+>.*XHffV^ \HqLV=ǹb9R*YacïSE£}ulVqJjpnh+뗽CYh0/KQQ {?)&|;n:ʵM:G¦C~ ajCZ):VUI׳r[)VEGGKX|9*sB-D`PwcU{%c#Vf1c;r~D(h,YJ=ĿbS>:ʡEi&f5Ov-F3|U%HTownɃh;j:Omr RuNҒbJcFdŐkcHz1Lh.P7?F#g*JҔؘcƌр2;رy;8 :.E7܄D1[Ғ[w͔,~A.ze[,?|'"#T A2cE8{ZLqC\g5o5K~GԔ@?..7Y.Բj[ ^GBr_}WO,I5 O>[ ZQԌD-X@СC Ci&@¸<#P?=wd?F d`lYr ruSNhjrn^&,FڻB|Q:q{v)iG1HGn#.p3k!)ٞ3O??-eU;]rA=*13o1V纓iSI\F@!'|K/hcig'(5`b؋ÃIahO֑$۰:,\|յ۸_{n0?Ȥ,&Ϭnх5MƨB/58WTA.Mg=Y!+6G|".l>=_U/N_/ N'>:D't褓ttq~ș!:x5Ll.]v"#Ε$gä( 2lkw&p3$ C PhٰH:-o@6Vech2zw`8I8;[`&.ơO -q){Z٬mJy>_ܘ_0Y ge㱤ڵk]UVo>pRwc)o,xnv-f\}UmVm$ǠE(-+ՉnӾK>J1lFp?z8ɹD05 1IJJҘI󜦦jyDDFbSVv#"#0?g"--+k/,VV㕵B|Fa߾}9|0/PPPI IectPUz3V@W@T"1j;(!ZNбF"RIq1I$:B?^7dfxHu'}CGcUs ?axwu/5PO_4o _;i#~6VL1q$1fVhVD  !\n,˞Ego 'ޣhٴni1,}g7w_H0xpj twn,@HxHpNJJ[DFmxB?铞:*P׭i;!LX1C"\:][{Q|VDI;@Es'Q}vo#Ͳ%I̵߹=4R,q<#"o Ʀw0o_M_t(l!UN0AͫW3ݒgߠx%RDNj31iIrhZO@ u]0*w8.Lh;uYkи#9+xq.$vǰaØ5k֩cR]p_qKȨ^ΣeyEs.bLR#o,=̠Wpa^7pMX/-|W28ɺ]el5Xb԰l-ٻ)wW]:hs8<=hKrX7nԒjDzHħ8D;h]DRc$`ZqDRmsBʏRCzJ<91+"b5Wq&\:9$bR0(oc6lP=G|QR0p()QgUD <ڼJ˃zAis3~ Lr.i &]? %TtfNdeg`E0b`|(R1 >˦~KkaޕvKff dȰ9*6a+7~,1/_"@DB1' !޽{5XVHp1җ+tƞd%?Da8%΃LvT_1WwWDFR1;__+{qb $Q8ܤy25=չP?OS>@4'D*&Dޘp 7n,dݫ}C.bUy% }3jaϵQV!ʎ̰EWk!w0MFC0l$S \__}(s~48C䫵d/ޡq6 a~~s6S+@fq %f yjZE|b@oHfmixGo8 Zf+&m֥Q_g^$W׻jPxO6i)@~]PB^kE7>>u>ȹO^@[kiG$8>>v!k7ѫ" =Ts6ΐ!c~i89ߞ- r~yH錞r^dc3 .q 'X^%>8נ2 p~OQ{K<7 7ՙ7 j[ ԗ` m` PYzK4Z+Pnh pdS7n.{(=֤l)zNʰkokV@5j!(F́>d6ڛٱy=AEGhaN=Vd[)cj E%E,>5AוyN\A7FXvvWήpI4(E:~xrңp,t`T"5mt7ತ2rָqW :SW$"\j7yIH^cO#UuN$MĦbv 5- Yzܹ<ǑMvr$Jk%E#2ǢؔTkk{M %MfJDlH- ;cK},ǫ'>H"m"S9[𑢞˨_WAJ@#2VBF 64~V#9!_.ZFc`J%RG=a Lfk]Asu)\mv,B&"ijݭ1lkP 嘍VN47м-a퓊Ɩnn<.TU7?A{C%E.82 x`FjsWRǚK|H-xs:2`S_ZDE4fwKzHRb4]-.G2:?_&Vˈ!CNk)~MICf5ɀg˃#~sߘ kp-n,$R/Y,EeSE&RSrT?CJVbb'Ke0-Q٤%%ry `s_ݝ{=]RZi$=]1~wFLEWW;zz` bsyнnSX\- V̢fal B݃mu@5s%<0oZ~fo7'¨>mn/FG1 hݳAo..I %-8U$;һWIˣ{|Ã=58}`8tj[Hn`wi.fڊ͙ONEV cߏVD<@n]-By8X\^GF!%-AFrI'ІPV!Nx׎W&W12֋ DZ2DZ5?׍8} Zw"dr w.ۏPk+&YGLϳ t;n$AQW96T 5[tq %Ʉ9 $KPHr8n&igca0 4WӵUV`m8d^j*Q \3NjzI U@[='أ*SuY*Zqjkz͢E[msi3P,U+j9m`ExzEيي5" -jUk{Ϟr"$"d ]]\9Р /sH}]( CAx+ s=NO:d9N9V Lc2YbNE]NRbwO+$^/ +h\g0bѻzG3TۓαR|Uqja܆6UjmwsQ*>1T۹%q-dkŰC+1@$B(ZBEbArURF}\5ށ6s0ZPeQsX⢀z@&ޤTJEpZIyqcTT55Ro|gD7M|S}~?Zh>l5}Xκ5cx=8\>y nm`LȐF1T +3B=WKYzh -q}ʩ޺A9Fb@+ix݇!ֺơ0QXG| c-K PdMYlR9كـtAҳ_BOIh V1;}#jFavX7sC XD쎪K< akL_rT4۬,QY AZXg+Y56Vb }?8ǡ233sGHX.t}xwf|Tl$t~`¹W1SBkA(yE >ȿk?x 'uN4~O~3XkV۱8 1'n cI[M ~ȿK$֖pϫZN`n(0XkL"}'.dpelfB*lje,,l`86.cuKFwЄpU y`ei Ӝs\ \եT-BE-~<{!㨚 \_B;}y,.LQȤpExP”YC5G\iDG_= ~j $%$ifCDr~nx882ۯ5~uh$ûũs?QWq[w=/駿ķ0/chnߏ Ͱ<<^K8q̓^\:= +Ͽ| 1{>G?OpeS(ԙfgZDli|?[OWgSؽ0zZ)46+Uvgp^ZDT ڼ̐FBzME> gOo#H檺yYOw{p;٭Dhآy-.k $^etv@6ұe,Ƕ!8X@:AD}"뤤D HHFNDp避4xˊzՆ:hsh4*rz_h( bnٷotZF_ ;< &\:,GHgd}>X<ǠƦ_?82n!YΦ-31]D'Ii/|ϞIbb4#|9<sJxI# zis>f3D];N{X ҋ5ڄZdVJ1 ;%joSD{OIEDJ-=)[P,4eJe 3per5{{.䱱UC[G5dэ4ܭ]UDVb0B-kyK*?@(b"g @9p Hz6`"Dy, B3LB2iiE76h&7BGǍbZs{<u͸r0xVH%٩XJi^8q?)G0܉j|74L[΢bmގ#4/V}wT. *^Pk Kq6,$ &`1䰸GP7M"ZS8I7:E$Zfoq1xkq,W AIĉ8.{f"GpwA*$T=F! UI"sl\h9Z|Nт$f#XϘ=1!\R܂6\(.)JV8uIWُv<U[>rh 1CRM`jZ#X܊rl%[-(DIEU\,V- 'g`]P&)›MKssZmjo=wF}{q׾0fNDZ$i,~}^WhؽwVЛ X!"U*I2n O-sNنr0b3+C26G4 +qQ hioGmu[09}B=WSPъn;232@"1ȄGPY9oa>-apzDd9pr= $D(f [ŋ?>;C^!Ob5[& jFk(v> .QnEUsm /:܁[Ĵ|.)=>5f݈O$Z;6 K2`bKơ%$, |P!Z 5Up_r"RazVN,za d \H5RRq?rƯFhFz5UjIzqfj\b5_ktvx5(*AIbfՄB}VJgM+4c[4Hub l&_E7-[lppl!o 3K)Xx:QWՆD}B-Vh4&U*,L\IQ埕%#r`5'W.!UF:A( ?hH/̠(mPƠk k"JϚE,U`AQub׋ũKE%>WN`1b|o؏fRx[} a6F3$B#Bj$Hn_?> c 6 e47[0sbvuw gk$b(Ռ ؇Ą̿9p٩gD\ޡƉ6zdϋ`= =T,f\Kl7a#hHy3E`W+1l6!)ҡ% wKC++elD#wFk^j X:Bůf0[F/ KqcG&b ``CМc3NƷ~6(FiHvlEH0b$ :;Zq tO˒JUmf'E)\520pe"'?+$ {gqff}w`PgI4"j@y^Bv$A'qd'11̤QP,PKېNq9#ҹV- PXPYEcP3:Xf-yX^\B҂V'2:qRT8e1 k3,8|k'|l(9L¢ ~E'F w/FG(@ݞ÷$ %Ν׏"S5G!w .^Xr[WM(&S8ĹUF|&h(XG"S+7fF2 \텥;6PI0ۉLDvG7@omvBf/ڽ׍,g>fج6؝NLhmqֶv8fx h_^!\m=a" v +ʰ`4MdDT@}6Ťbk9'`A  FܑDA䂱Dفauc.ml% \xiNVBN@k™?䚺 \Pswq!ğ2‰oHzSL7@xs:ݣ{i(p~K*w^6Ή?9H\㼮\]~U@#[xkJyZA;Δ ȢV77o"{*г̽z!w %LfHhJu0xBprbvɱ?DP;gJU;sJ+*Csͼ vz:ۅY@ qxIx[$TKY7pT7rwP0"PVDY8B̶5MpZـw9EAa5A%A#^ŨzM.qPz \7[p]46K624tַkJw\x度j`IDATx^ŕR'[e e"$L dc=19c3gwxgdl6`$ d`#$DH(nKoWݯ?YRwK|}^z{o -^|V A D P ɤ=.s'\eL:c. %ka G|>D vw>h~@oBP3Ff͚U_7+! 8qL674 Si^~FoOɓ'yIW&V=zKC>d ;ܰO6on@cHn ;K}sL>]! S|(͒)ywrH3; ӻwawQFKcʀ"sN[hܸq/,m۶[6vXS&c~boXn߾]FaR޽{GJ&J3wr LVO"oO̟'{+ Mce2vɰTWWs˞k/=O֯y]*;]mR+7 1ՃvZ#G_FZ֭[`:i$SP(Jeee°h@lμj FʠQd:Nka9 'UYc^DAhfD`l͆RUW+~iiJImV`9}D#`n9eݲUرSΚ69~URUH΁9((:*O,2uzDsBQ߭( \Qv%ɶSe|R1e=5E2yMI2ffb^S}} <iqÇ10S)qLP1,"ZcU>?PkU3y' Bьa CI14e#rM2rx2yl޶G˅g!Bv޼9gyw+d 6ԛC\1q)ǥ b㊂2cWrQFGlzx220m۶ PG0Xa:Di"뗵Pҵ;&%a`J֒Z'jW{tT+SCq6w=nll:wyGz=up lMMM6ru MC$Fh 4 .`lXa4|~e2z/ģėc9VgJYӈ^zI?wH. C .jGY}F.:$rPRNW6nuOc]=(6@yQ]~g]{6zƍ&L`_~h\0߷Xrܹsޓ3fomhÆ 2sL{LҥKeĉ6bF\7tN|>gLU)*'?I A~կ~%{}Kyo  ~a t0cWU2zӢvbi/2+x70 C ):6~x(@Q̍>ԣK_JvwZt`f`ꫯ. "\r-@:Hα> cpgwګty _#α(< $. q9{V#2[)ƃ y,1"dG _Tx];X頠w$RVa^ SŒ2s̱Lε܋su3g?K/Ԫ>:Ij?vQ/_{5.^ضs*xNGXQ'eqzL9Ħm? Fj1}g9@3p> ̈a@TIr]a,w BRԝ7=#t-w05R&羚WFZ-j,sTPQWVnk>Va.Tsn᪟RÀ]N˿n.aZ 6H>FWM(;Eh7H].؎(.hžQUfYH+:*;cΞC v3Rͯj86Hc$S0҃h/L&l9McGk1&`.<Sݽ^UfXB13C=0 FtF˻M^y{ %$ 9wk,EaX| 9i1ppO 21 %z-W%bYde2xDݴó{׹[ L:u)Xp⻂aaLOF L$RW&r,ԏ -`nڀ a% #0L`徜 ` \<mش[U\HzZKi+>?|Gi@s a(ȻLKPʕI#joLǀ "@{P 5Rïp!o?s_\B0 0rL}zlZ.9ukb%2 u~M)֔IH H4SDCR!'Th\DD"ň^TS$B{GYg^Q`\ID[.b;_%]',P95(``!@Zރ`2C2<_>uzV.Y)u~ԗyLMPUrihB-j}Q#Amf%F߻u>2Hj%iԑRj1տL5|hnh9V_&V)OAzO}p^Txy'O<-1rWi`Nѷa;v>G#W)b hHd P؄diDtA#\Je"9$ DkEduqG.%"D0RNԉJIDp=Tr_0xu7#M?M\C 9N?/wM2F[tM>N4v@}=t}^A)t%54@ly9ԸB :H2B4*yLI/UŹ|3VV!u.E 60!i@j<6 ) 3b(mt3q2h1vڈapaa@wGq?V& "Y]·vL?&kJ=-6) /}AY/zpܿG/u01 /ڝs$0%x㍖7pC)D&b%N؄i2Fd`tFs0'K 4{,AEMFJ\tE L eE%%H$Q_5 Y#侴Uw! 0 &TgD55B}mѾN}n={ 0 0 >G)MË!(ϼF\O.F621w`$$z0,`ռ*0< 5x |(K|X:+9G7 2<;K~L\HPs \m$ `c #^cI)OLXx;@H9ڌxwSktSk I (8FUԒG9 >VCCpk,MM u<*\hF}nmjy 36j45(ٵZj_5s^uUМ96h"w^-V5Gd; i`/O fRS/봜ۭmt3jufCn1wd4yOάVN]@y,/QFc~sFdBҤV4PFe^MTڹ#;H(CE%--{&WL<7*>e7 YciU9&ZyP5\3/an 16iL}Vn,̗`dIgŜO΁\G&a%7? DwQiI[HɇµOPUi LQL75ٳ#ÚHi2N UqP-rKD=|'VKO#2ZZh3B#bk1]ͬr&{0dNVR{cL9وavWK:x3A9u@VVYlgF]dj1P'f| 1j;}da}y6L<7@Qf tD&'OMIp}`FnFS@X`VQU"aXU80!80f9:PC4 S|(BU=nҨaexh`,C .H\c07TY2@iT Ljf@9>\/|B5dy?\#Z03j+c\M-m)#E 8fTV"&k?A`}H~'(uE@ZK0{75Tg<'m:ET]tC\(F]=vQH_ 5?45:P霴?E (+%#.L4huxH@ߗ̕QABr&|@h Kꈯ5RQ܋$E ԍ(g ܏mT_OHy'同vr"OHrD9GB[is89h :5  sbP$8#c'ζ!v7PFAC78 QW!ݩ-Z 0IO fw7w>S[DE\byzwm_wQ)Z7gF>nkټS0xyyɓ'ONK݉}9rqM(.qs4I؝hFs"HeN=W tc4%pk>#;^ R_ڀ^}29RbhG0Jn/Fx0oy0 1n ȀKKQt=C  }و B}#{"1$Qx{$}$Ep$޳ۂzf ^UCd 1JN\O0܃x߽;dZ]]#\26񤴟xFCv"dоe˖/9= 7M`n-hl|k-m{Y1Yi]Z|u tv\&Hoλ pzqLP4]ׁ|HYgU ʎ;o zEU\w.@d@mfTuځϷA˫mkP^hFӀZ^2*9Z6FqHYQK_[xe>a~$-b}FO}SrZ`!iJd;$-Rzب^p~]e@;0ZΝ{m{2d Ai”vB 0JgdQusXЀ DuaPYBЍ;T]#',19h6m,%/ FKB 0S8^4PԪ`09FJ|P,|XJ`<twPwU`S0Ru)e}7T1ZZeҤf~&77ȶseT ܓgEn3(sC <.Ucbg`Kѷ &Z;iT5c~mW%g}J[6}F>N7x5_SG)hrEU(D`MZ <ݸۑ&v {M]5܌f:vW \Hy"$]juW?PwgYj'G|EB.yODxxi+uz N[71;zrIRH.Cs}YnvQŪgP#a#_#PK}JGN(VJxN3VG=G4\d.?w,Q[ћdea@p~ÒӵvvXqyO;/[m~8?Γ'8O<Dzqu.̓Z94uwP;Fxy#L4RwQ*<7Ҭc']6O3!;\[ 8O#@ XNs"zL]{x@n1 [q]ksMN|׃epNzf^p:w87!hWHI}PՁTqUo$R BVN{HuR'Ɛư&ɍd#y9E\o"ZJVF๓'NS !CbvG[^&8eo\Z|]Z}R'廨h5)舡nǜ*W~Ө]H?38Is6ymɑ> l3Ϣieap'C_d'4Sl0Hw ϥ>ffQDр*U#Ŧ]$$3fq"󆨵lm$l MNb1PgnY2hVywc Hv_ b<caApErg,_dFe\J2*ߑ^{􄋥U 7PI++*_)cߠq\]X3InZfS'_%GSŶpaJHq;1 %; cGL$Joz]il(ڪL$U (&"˚  M B6 > E;'m D$Hr6feņ]rZ懽[™<lUCDw%b"% 6e杦L)dʼcgD*s{5溊Au+\IT4РҒcrGJ23K 57$ g*-"Q#٥i4ĨIIs!m)[ VuVVe %4 D防18Ks|s%5)h.Nn_ 9c ;\U㹵^.ɽ͖ÚqRLR؈|s:,mdMt]0I4|)&hڃxgpI38R鮥HČhMnP~m/ID 9&T,->pMlK&XzGU,j pV>U|h *q\!hdlzѵmތ-٢?w̚k97ZYKq i}F+$;ӒԮW%JY&n63u̼AK6 +j (sPZvA i[TCQ`ȚD!M:Rm?/b BN.~U ʻUoO%эqX+)9yqN (j 0>ia~%VKu\* 2iRv|+I~li^75θF dMDV-m/kIs*k-XpeDJɤs41n\$biz a(nU+VYv>$`i+2zM>Ǖ+X+6?TJV̰E:H ڵboLzߌ-hcf>0|#H3$-~%^S<%' 5P@ Q sa@B_%00|XΗ(4c h a׹0J {^8L~,8:8fr\!/d22Ĕ$]1VX$/Hx+lZ YcުNɴX]3,$Id4wu[68FqCZ7 Laо<0Z)]u2jQ4S2d  ctdvvo|C&L O<"3{r$":>C9pG#<\-wI$Eߖ9N1Amo<\ *fͲVo3F $ںu_޺,X 7n'|RZ_ʯ\Җ7nYF2 6Ns _BpQKbd`wyrE;+X%>I{+%=V^YxP {ɻ[vʮտ7w.M]հs#kl~UeiowKk,<O՟ vJ wzA˥΂駟?TZ/r4'dxbkD[jꬳΒJ{ >7W\qlڴI." @E+-=5 4cL0QfL#o jٳ5 fΗ.ǞxVf]x̝6Z6l.L]ȸsd;[MM\E -MK!;dKۿ]!SN/eź]റ}tk>¼zA4<1|p[dYng?Y~`UIE,#G IxX H]/A=p ;wǟ{B]4E:hlS1n>,#͗/[']y/`N7ސ#_,)~7Rn cU 25US;O!2dHJZ% B%p'dcv{.F7+\F 6.;i΍$Q=H 2kiصU+dS )eFʍ/W_*4ɧ/?SyV%+|GF!V,||g<|Ų=ZX.D‡kzݤ~5l/@S[wSN2AMkԞɇ!L6,Oo{z*:H'Oɓ'Op{#F?G|d2%Kn~*2!=utaOˬ W4Үa=,AʣZğxw'OA˛O64IENDB`tipp10-2.1.0/release/help/en/img/h_installer_win.png000066400000000000000000000307411274324046000222530ustar00rootroot00000000000000PNG  IHDRetEXtSoftwareAdobe ImageReadyqe<1IDATx}`UErKnzILA,"*X]˷ߪ 6\]HC @ !~9g wC®$$9}9sT[vrA0QdA"B O=z>Ngz+4`IϫCUեQ:Exmyڊww Ne RE 3"I=*3(6I S@LBP4bsYcd1׿ FKɔ0㌨Ukr SdLd"M A$L JiB "*c%Q?|**dB:" .WĦQU))U"/P\谻/)(.Erۦ]uj $͟d68]Wr3aYWZa1ʢz_ÂXWV+()mCiSGzբ bSJZ"qBeZ!.U.檯 z&Ֆ[!XOQkh]qi_ϲi2؍ #D!Z r ;E3]6i7nD7BR+ );b6X9 Z;o;.vI,-qG#ţ.,lCcb~9tYFN$&8Xdү+UA !Q/[M7^RZd?K!bc]5ȍʆ m-i5ԓ:ZmuNFyn<Y0ɤƦ$oyaIjծR7mu9 +A_vL4]Fb0)*OU ]i3@J5RC sR2WމA}Ubά4"$P>XJ1f$"iq6nږ*zi}ř4Ta)JɨR 2Ϛ6Yv/y@b `~Z K"b(V 6u((*cX{@pQ(̤g5hhBM6Y꺲>?ҧow$pu0^DUJv+Q[M]BߛJ. c8u"?AҲcR+ₜi_LRj X^S66I ꞓHQ2PA_4&?1<[ky`L_] jol,JǗkyUv紩K i4]Et6z8a4СhNED$T7=9Kɨhzs_3nR%f\2:YJ𴩣YkW$?g}SMgЀ@mC*EOy!w/9x{aU4~;14L>!k_Ut @鶅D`#T+U{Gw$@̲QTnr'q\Q0 'JBE9l"h.v9$4PKS4Q֦$A N$Y.:ϜWg>էt˛%zk6g~/DH+:V0n=س'PITpaH>guV*TVዕEeX@6M#{4V92UhGuXB$' 6|=_8Cj$ ՃОRyfU62 4Hʝf#vAvlWIfT5B"1. ҂e ZUf?_U]jIHNeYA)R] U"T=)螊YDP}qxx VޔE db"sbVo/ ]j.ꖪ{OvqCz(طnu-7۔WI49IPw& hnxݣ,H)0`5j@@G]`&QEtZV5Y tھU!,Q߉QsaauoaUIԽ% K_r_#Gl@mkUA [\l.P`w!IWpv\.DМ$ӽ3j Db%!`\^R)]F`d(]Cޗ7"50ELd3uCms7.1SyH˨ߠvfZM- Zw1l=UP=B )$ɘ|~$j&L٦g:}IMow8WHV&*~۩5WwK5jzA pikAɅ rDnuqiS%Δ\ڜȿl6p8냂Ngmmmpppd~m׮][UVuŊs̑;h3g, KߩSb CHHH~~> ܹsgDk]]>>>4&RfeeLxƒKl|EooonS]w;vHNN5k*`(SRR4MU6o5xQzr5ȢEP%K{R?n_j\,C@?'Dj׮]&LDޅ ~ɓ'Nz٭[>3[?B^x͛7e˖y_G<Ф@/]xƇ3ʨQ0GVWWNox I^|E@$yyyo_=cҥ8qb޽x ֳgRK/'Nrn^z1~O?L ن 03g0`kg}g L9ӦM1bė_~nt邔'OR##G&%%} ut7|u]1i$o~?Acߏ5 dy睳gFS,*:%Kg}Y/^hԠ%_eT .@ @s t6̟?޼yW^yHMM{f3w Z gĪ3qqq{QȂ P8Kjӟ~i,aQQQSO=R)//GM60NHJJJB\.t4:,-,1c~–-[0X%ps~Ћs0!Jj௿3 G>(UV :43vX @0:aazI.CQ/ l;p$8XoRE<ĸ2@?(~zd DSff&0u^{ $LC[3fxXXp' wYaW.k0؈YLVoРAf}&ڀc`WQ1!u EAvΝ3$[+**}ή2n=d6f(P%;~ N,8qÇ@Sa}r=n:.㫗M.omv٧OgD8.]}U>K6 g m@|5dāDBy'siăE@01] I vǎsСdz >rA%E9r FD@?ˆ0+Ȼk׮/2 aaI@ Ν <:tiP]w`h*0Y6lٲeL;#GO:EoصkjO^^^?0J|M ,X[C&o-Z*P {u(7s̟ ʖ)ҠG>g1<%xPLq|M?dH/C;Ťi`cz1e"@A#I 8p\n4r0J 0O>$h lbb:ښԂ\_AN]tM0b[+Yl6.D$#aOb%X( bǏر#ڰuVPWaadGD=jb@#r&{ *,* D,,Qt DwBb ڃZ~)[̽Bbp+PGn;FoLlOCb[Zڦ$1☏ @󂷰֡ŀ : vW#\#F`CHP0i2 (.FtgR9Eb48*JS±^IL3SX( u!{ n01 cǢP&Ҡ@dGQ4Z^|tZza,\|HOԂa@qO>(12?0bͣ"mCxMRG㮥]s?҉\6ׇCh iҨ?^(ӌWE@" 3%ҲGk#Z1nMdF=O3׉}᰸H ٘w('4҉Uyfy .-Ԩ 3Lpi̔-i!XJK_\i-k=Nd/wdpiY.I|`!W\q!Z[[kZY>jҲ1lpTUU]Y? M7좢-AMWSSse=m-2z<6is?mn|zyFi]ƾ"Zi̋ʽ{nv qoq1M]|e$1bn!=gH#=C?O3XW_}ŞE9"\B|7'^Ka 0V?=Am۶mܸqn뮻dY~֯_?i$G{ԩɓ'L&wZZZDDDLL &СC`c6SSS'OSN!˹s2331U›oyɒ%;v%IOOC.TX1cƠ[o]m@AaQ5 Ƭ?S>>>?P#Glٲ`0!CІ8nC1bDrr2hІ^zF;v@30DSLy_ц\pĉ={޽{ƌ |A޽׭[3gά^᜜>} {>`PXy2GЊl=P{VygRk9-pxkcC^XXV?&&::8۷/ 7g01a!!!FØpJ # 솆Y ޺uѣ1]t߿bb">~u]l̫/a$ӦM:),,Dkǎ{iٳ@*((iL];Bg͚2BK |v2̟?W1Q±c9z(sIII# ,Vl4 %g1PX'f\yo3Ғwo ~׳_|BP7i~<덚`u9- ^w{)-d{# zs…{BL>&tBZK"|;(D-`aaSÿ?hhm*>57[g>;XQpK6l{=Єe+jѢE# #8裏 "=1y ڪ3f B`m0iS`U.Odpiٳgɘ?>,x}K6m ׸[nN5khBǥ_Y\8(1c {~@~M~NϤI  C.F:CkEեqN,wo =NSW'ֆ<&DLۥ~{ݏ-mx\\Z|#HT8 AďxnB뙹\ BFuy"QlB@UF>\S}}QM-sX:"~mPkǏ=z|h0U/hOJII=JXPPcǎR__cm/l;:%bu=p5#G_\\| &?g 0{/1R\^zjX׭[G[q E^6G^ɾ"=;Ɓ ^vb7n| #((@4ӧOGo߾^߫W{Xb@M7݄Ȃ~-66}_N5޽fk}F ޽;ڵkzz:BEpƠA1$!y YBB&{ٌ@W?8Gƙ3gfff댆C:ٹsgll̀f F^Ƃ`%DFFnݺu„ :#<V:v J# lM4 f ^tbׯ Ncǎ!e^:CE2U)O ]Ū6mb䀫> r4 E0  P& ؍?t***8GA.P&c1 '*bO`MTء=h ]# 2da -";PV'N0Ç@B`m۶AEtjȑ(Em߾`_(l6_[8SiԷ4-k 3#ibhi*=\>x]ut~149*q%^t\"+y仪}suҍǴ2"䕴0OpHKDӥKZ%or3jj|ޖųdM6*KI.uxuɛps-<#8'x"[cRըc~[[u?.}_f…KoGKT;J<8jĸ1PӴD4VLEs@L Mq[BYYuq|qoBZA4;ksߋʿ@<9/O^?z>[.>\Zu%"OЪ*R@ .'VB+qr @)v#\ZѡU4/Ҳx!e\ -E|ܹ\ tӓY+&Mc1Bhw7?ǝ5a-}5XKKN5D*i*z w.94+]Χ5k2ǝ5'>FR}\s aݥ_%ŪVqId/"_wm=.-oYZ+ݲ6Gќ-jhwҤ ,9>F$"DWsN]8QMEj봬c*ܤe֊~J.-cJ .4z%Ӛ=@KOKc4o4fرvf4>>\Z+O~hsC`, 'C5o.\Sګ5]uZ/M|C;>+M|fǽ"ƍeAv}?aZNvYK^Gx-RWbb^eo'9w9%UދR?b֟]w !NdET%&3AmwŎϒ!siҍf.\ZZSO|G'gD%Ol>\ڀMF"b#Q| P%C_x?O˅j۔"|4/؉%2}ď2kk=V牽~KҲt=Pr0>\ZX}۩Ju;&PTҢ|qQDმ!|oELAu)VUϮ|:;D J 6%pc sK/>1ʢAnR5"C  l>nlg"dVINr^$HF0sEJ.(O9[&ծNDG/$FY:u뽕>D70Іn`+DRo's'vrhYϗU?Z1oAU݇$kgeqؒ 8O S&d $M#$PڿH3^J6d7]Gwe<%Bqe}Lx[G3ję R(e0VX>~ccB@*/0_؋n*t返2@)N"E-enw4[! K2dЄ a._U]FJеkWոd)hI3ÀRE:Ջ۶mlAA"C-,"";^Ę.GsJ.ԺwžlD^̲:fd?Ԃ􌤤T.]:[ȑVVV^$_ \ ͦZԻw4(u5O?1v?Rj3Q7%,gO||_萐ի馉+V|ixa5k-m#S*%EgzSݻ> hP`f%&'W[*mQz jnݺi͚U'N߿_}}رcAV +|jTKLٮD'1%Qb~ ¤I{71r=DVUgxx!uMFp@n T IhdzcH~A%I˫՚ @Fv4V,L|-foyʤq6=?k\PS Z+AَRv}nцZ4TaMh݅.e M'xv*E"`2NSWp QA3+_](_wV{ ?ak]Y0;T.J )^%&Л(ϹgU3yy~{*Τ$O`/P&fWCA#@u'9rPG]~Iʖ҉eD 0&'g-lґ'6`4mw^YM[\ZULSN"jBm~ ]$an\NE,5G[_/РKiIENDB`tipp10-2.1.0/release/help/en/img/h_key_blue.png000066400000000000000000000005241274324046000211740ustar00rootroot00000000000000PNG  IHDR(( H_sRGBgAMA a cHRMz&u0`:pQ<`PLTE쑻Ⅿրyʕ'"WfIDAT8O @Ey1dw6l= >F8T';)6RQ(Rd{>Ox@]!w{]p=N0AxL%5mIENDB`tipp10-2.1.0/release/help/en/img/h_key_green.png000066400000000000000000000005241274324046000213450ustar00rootroot00000000000000PNG  IHDR(( H_sRGBgAMA a cHRMz&u0`:pQ<`PLTE┯嗩ߑًЂvrjԆퟵV_fIDAT8O @Ey1dw6l= >F8T';)6RQ(Rd{>Ox@]!w[]p=N0AxK5qIENDB`tipp10-2.1.0/release/help/en/img/h_key_greydark.png000066400000000000000000000017641274324046000220640ustar00rootroot00000000000000PNG  IHDR(( H_sRGBgAMA a cHRMz&u0`:pQ<PLTEɿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~H fIDAT8O @Ey1dw6l= >F8T';)6RQ(Rd{>Ox; ^At9K]p=N0Ax5H9IENDB`tipp10-2.1.0/release/help/en/img/h_key_greylight.png000066400000000000000000000022511274324046000222420ustar00rootroot00000000000000PNG  IHDR(( H_sRGBgAMA a cHRMz&u0`:pQ<PLTE  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~]}IDAT8On0P6b0  8Hv]7YrRJ.Pb,(nz.nFv#h:TR؏9q+.X@G9{VGeLP}Naܠmvݠ0|c>; ڡ 篯gӭX~{0eq.M"c%@+]R/5/ 7mMogIJ)b%"_TØQB Ѫ&')K R~'JݽIENDB`tipp10-2.1.0/release/help/en/img/h_key_red.png000066400000000000000000000005241274324046000210170ustar00rootroot00000000000000PNG  IHDR(( H_sRGBgAMA a cHRMz&u0`:pQ<`PLTE便眜ݓч͂{{◗fqfIDAT8O @Ey1dw6l= >F8T';)6RQ(Rd{>Ox@]!w{]p=N0AxL%5mIENDB`tipp10-2.1.0/release/help/en/img/h_key_yellow.png000066400000000000000000000005241274324046000215600ustar00rootroot00000000000000PNG  IHDR(( H_sRGBgAMA a cHRMz&u0`:pQ<`PLTE݌׆|pҾlʶdҀ_fIDAT8O @Ey1dw6l= >F8T';)6RQ(Rd{>Ox@]!w[]p=N0AxK5qIENDB`tipp10-2.1.0/release/help/en/img/h_lesson_own.png000066400000000000000000001350321274324046000215660ustar00rootroot00000000000000PNG  IHDRZρtEXtSoftwareAdobe ImageReadyqe<IDATx|u/پI,DU%q)%//y/}e;.*V{I Huw]4ePFZؙs?s._z?ͱFG> ~C7Mϳ ]M.Ugo^_/Zwd!jUdY!nVS&޴ |Qil?t{?w;EťWnql9~f-GnR,tþW^(W#hJl190Eo2EmKk8}Niu ʭ; -ڸEfuyf(`lc'8/z #TB7\f.~ k<~/7 n"N|V;$w]8k/& q!(sbFa>H#h 3%D,72@ЈNOd\4' Ck[`C1z"(5Db|5+(.qΉ+δ,hF(QM ah4<o0)7"(w3I5LV|OM9#4@,E!.7stuNJ403I%Q)vDz^V ..bm5J dpxWʻ S[Hi(S1-%N 9Q)+eFĠQ]gBa/*#J#UPA{hlgk7 n浸Lql($'t-N(lzDG.]oI)("Se#h0zG1DQpT*McNXu!'89FTz\[][楝ZS03_291.DyH4ZAA."IF(8%轼H$ȉdt&Z/k]vٚᆊN`^V(#Q3J$BTBڑá |jұkR) qkuv.8eq511CA;s$i~:FoTS TIFfA"&0c݋IN)d=TbRޭ1'flk[0J7qJ\)B7ﭔE@̦H ]iB V&+icRn%5ס7<* DyVäI%N"Rf^HEYT9 n]:f!24E";-3åX]naorQH$z#9"T!j*ATic 1J%%a̩wWf$g%f/EAG[N>7ta鰞\n 9خ&Z,8~s_6VA:*Ša*!^?KLE#S):>#BQqcQ))׸Y¼0ˌ+/I*F.VUrw}ZPtbyE VF'S3 S!Fx|~cr^Ko^?wUq! 'PI?cq1B-6*K.1G|߀nA~o[:nUP<%֖" G&UH= %nkGϱnY9tq-[Fi8czb𛉄#B:Mx^aEᕔtipK|]*" !|+D ztDfp7Dy.ELJ_ђcJc{xD-O r.ef9:\沺!1a2YGK@ם  Sd) )759A^NC3#E$%T+Pz"x%#Q^ǐH5-4H+F#^`Kb,HD洢S\E/3JJ#dd8ڎAQ^.R)#TBS%B$<@nP>PuN"QY'Un9 1rb%ϫ〸MnvavI ;ݰݸFJwyfn8gGl7>7Q]e;lIXՕ(J%M `HGS0 ji|C!Uq-s9KssbVIA W}>Af%wd:Cd>AP!ľ>h)ܻP5E(>)l.NXsTz񳾐9\Lکmz+5FS@b@ +mE t#4 0Q}6Q[yjDqZ˜ٵR3S14ps#Ef _2~i%3ɪ^Qb ֪=&*Է9&)T42uQeeYxNKlsVQ'Ts%8T3 q:TϨ\iwÂL?}1:qAE|-i8gǵ)W+sXlğq;͏qܤS!tn+,=i~y,֛"`>BjB˙Ysa,۰9IxcI.6'GÐ_£uϢcKױz8.wN<*Fȭ]@/.tcF x.Ad743w`-x`$8Сr7*ʰ _5 7R@?tZEߠ {6a՚R^pn#=FHR&@CJ^9>tn@s0dV{0^ucVTaFjQ9Rz Ò'K)iG{CO5xeTtTĊUNS\>-/@@ CIwVξ6Jux#8LGYzzp^v Vgmg?z>&"VmفGIʍmWpU:SϳK/39dDž`*7]6HcI(wJI 5 N?nEPz'q*o 5>Hu"Z_,O=I^N_ `mU!z ܔ4h!FCH ܫ&ӊS'OkBDeaQla30bPZBHH!')V=Q-=@b֮] /!1=;߅3(AAvQ vHZW5p|G|*r+PI[ 'ߨPoě/$)2擰jF8 ݨ.yV-:."1ɜ rET(k"BA{'%(-+A2:0HUגBMjBIM%d&r?0ՌǛCD]NILFF^13lFVD]$j)yy)NJzE-M:daۖ:L\lSDfn pdb=w oĀ}c0+MMK>d͛S<E JpX K 3-WZTLA\:dۍp#Dt`6pr͗!b%kwm!A"Dz^]~2<|X5 1v !x226ꁹ9901:Ñr6Jz׬mGic'Y1؈ɖ Bto>^s$9vn-LLT.+-#:XUP5tI!FVB+)_nB|> &fm-nbIŗ(nUFFF`~kuJ"IVtt+'xpNXVVo8[T3tKc!H90- `n*?Du 4']O6"= PݜY2<轌WwI-GЩL]JSp0fZ3FO(Ajsydؓ<ڸ`Ka51 ==O?՗?Ӵd ށ:( Dùkn9B1 LӉJ_w$Da5x=n';n^hf;-^`pD-j zH>)_SKn%֬ۈ/iRD`̍D?|ի[C?/`*._:i4Mq{t뗛p2"b.QnKJ,\ lFl^G2MӀwdjph!jb^]$M@x==> ,*X+rŌў6BkV#飠-h=9ԃ; ̞,Y{Fܮ>3փ}0 {vĀWbKII8u;[r&q`~9f$`bYM6232s\ߏ?Cݰu#D_-wVQ7Q]NcBEy"<!7ہAXlp: qGzLyxF0ch? mJ.uWpʞ7QUQ7܍aBk*pFE _R0+fS)JqfIC=,lmLѮwH W1' z#ʽ8OFTg?z&"x#&4>KP7EJ{Y[~(]DrZ&YH7? Oq\AO>oO Qן~ m=-)Gkr2JlUL=46h,ޖ:D8ձt%AHЏa8vw""iT㱔I)])i܁}%] ҆!,}ZǞg{Ɉ ȪǔҴ.a4qVb5!.wli5 J!@X4-W GeA:쐝Sl+T*np T^rnɸ Ƨ4qo e5emnHGNv&̘ 6]hUe)Qx}L$2RpKHwXqY8 JQdݿ / 2bC!+ hr9E]5};26d;בc?@uV._@41 B)<ͿFo1|28 a$55]TakQIY0˓h 0;=(.COC;RJ7"j2X77"yE{6/pao zG&O_}8;#U/cxb,m{@0[0G2i V i#Q-Q=Z `XM1ހ}-DE*i,8wEom_:`r3x6~HDfu6zd"#57I&=F]&p^GF\d? fŹ#{Fg3LYHz`((C6L2q^g߆/ž(ov-{S%9&pJ)#N>l0WXƎ?RHLHNjiXs{gi 0=щȖ4轰xf ~fWm}P[Wh7Nm' wl4ޏ3o_@xN*x)kB>IyylhgW&E65r)KF Ѕ=enwd\5[Xi>m6;Q:;t9B՚Lu"=ňT[Nu{`hpעid#ϩǸˇu[)Z L70#NL+G'S](`Dg`qW|d%zieX|HLZQEuX^]Ku0荰Z ,re| 8S\4<j&!a" ƔB&Z/򞝨-HGBbFa8ԭnqPz fْv?&FRR^",CcvTqgi8:x"ʣF3yhOS)HX<b[ϣ usQXQ3il8[F D c:ɀX_fCHJ57#d%q_](jv|+9Ew>qﭺg2/N/ 1ꀜt߉k z#4BCƓfC : @#ɨfGi"j≮'Qb@Q'P O +CH3eZQ-H_LVi{!]]fÂ%퓾,|Dh*̮aj!C)kѬM&SC*e꘡ lOIaU(Gcu:37^5QCeߧy1V_݆+ݐK9Z 06釅>rPFkZ^`^wUKš`$QCD1:c/6ITax2NF} B Z,S&(1+ VZS 2a$" 27QekkёFDQq*sе*bVൃ'FFvA6zۯ4(.f'( 621 Ř<"ײ(WCb[4qDg^a ͯB7'㉧ߣkǨ\JdP4?)?.uݰ s+^86eμu_pk ΀PL6( 8zQ7&$QQ8=d.GeccS݄$:Fe}{~6ݻhK0+nYtŕep0{*ɇ$b_,al޾-|:$"(i|FԏiPEdGd"gMEʸtP&)9 o )Cg_soꕫ;pmԇLRʑ&գotgw)L7]w,2aLXQ+/ .c%?!/Qp`Ą_O1_2Q-™N [a7Gp5-:][ąHjVTobfҮ3Q7M0{ \20Fǰbm).+ O!i"Ay> ~ͻZ4abs7+|xرm-DV+2"}SH!Zb#+q]%:|:y`N0`֝Hj3/@N~c?P6u;{4<JhPRRddڅFMhlެ8JqyUKhV'{QqW",žYVJT$ހ$RB_#-~h2*Zi+> tjV.rsjy$g#I@_Ħ.^mGٳ q0Kn' ~?Duixab8Gdu6 GqU1K6,`G*چdI+{ZhZiILEEezN2r SYEpaO$сrg#E5XSSkQuvn]5N19>0G;ez$=tle 1?U5vS 23M>dx-l ܏~tC|724YiVθii75(2(UY>u^8wq@K ǜ&J<:!1Lu5VaLug q'E&4"'Xd3)\ בSQS`˖xBՖ]عo;}N!a ayb'ޅLĬ(!?/_Gc*w"bt˜[2sm^^WGr*fe Lh:N4gf_Zz=/Y=LÏ|?GjHRKY@/pجLpEcRSUX# cSH# )#Ѱs60&$G]U&G=.F7Ms)/$k#ǮilݹmWnCw+e)+dJ$T ~*;d'/hƹ,x VҜ! pwoہ4{~cl~\;B&#R\Yy4',ě]~dE*ntu#hi`Uf1cQ[t !phB~I%/Szl_WCʫ1`l;%@0U|=⌧op6Bj lP9NzJTw) &!7#VG6{<z)n--#x- Cg?77p8$ Q`ϛpOO"\7+Ͱc^4E[# SݝcH$L{*aE۠3&}p\i995⍿vUtQUP8$-> ֬uλ'p֣YlsVHwܪ ŭ.V0s>!J 8Wů9 $L[1MQo.^8ɦsZ*]#иوc zk$.q{% :Z\bɼ";r˥'喎E@@ uc]t%Nv ݂H=eɫ1'Z"!ARxVjsX7q2dj`}>4,^M ՙX/VSW3Y&̢I 6>7Q ɖy6V=Vȃpp`hxE.WFo7Ʊ3Mڱe4Ao~Й,8Lp ^+ K x]Yľe)XV{x,&s`ɘBT@ 1A&@Ҹjs,k\Uh #bKBy`%f4뾂^=qOυx;wL-]#P$$#Qox,tK of_GZ*X ]Qq(0=EV_fîFCp*3;RK:‘6mn |)$|yyUm9$G&[߆A%h"sEk_|Wq4g1lY-eb3Rl@==| "dJn8s }O2B>t$(i52۪JV(v{w/c ҥ)V'#g6ܻCS`;bܵ`Tc 0.~WwUbϫP~6//RD^˷Bحf;.$➗#O[Q|5͘FpQ\؄Xfi/A ",+,z!8B8|e9,3=po jR 94gfP-r- RkV08/^nU(tUo'qPUA4,ň2YnrԌo#OG#زx Ó((*!'/ fS,+sfHJBJVg6&>y\?Zl][IKPBD/^D"~"9 1 U[ eU+q!agېDAڕ됚Ċr̞a֠6͈)8rutCp";#+ ,+,"sh@Qv2Ǽ(Dzw^U:5AjET3%xιl^LPJ+hh<, YHq.)j X}B=- I,&bu!iZG8U/JK`ڣVPWӉWL<r46 Ȳk$#왴DMSOF0PRwrC@ey2]I&2# EyjHhJ.n0(4M˟{揶ȣME ^-+GzZQ'BKZ>>n$0+;mi`D"Q'h& tlhb+AkxZΎ㵬OiC+lcʴSi()(Z42aZֻTKѰ.vZx2G": vʅ[f y8`c]ϝC^Y%1@[_D_ X,Ϝ!w{h'c9,]caƕ.X)T4 a\huux'?=__xg/PϞg$Tlq.K<#c{qv= zr&qӅd?҅@9|x/!DĔic y;^ t;^$Lq ֙ذc'V4?d[wl taS!"Rg)ali`t#Pۄc"_`;ٜ&ʲU1saz ȨDR*lQi25ANǡ;pSUy +~Sl࢚ *i-MHD1S/ s3+V;-(?Սn^%oC$hCxC}<#=jB<ӗPrD:v={xI%+i{{Nvb}*^kGoɦv]mD}$֮Fssߋ5UyM@@8 }Fo@7ۋ \8H˃o.A¹vl^'jbaSo| 5J4Lz8؉5wmC/ׯΝD"AO HZ2;tJ >&Y-LZKDk9 2^# !wGŁ9#]-:[c.~#͇WykceŀeV:މt$)18.#ڇ(\  UAAݭk"* t``$Mtkm sP.T뿌n_e29W%jIv6W/`SVPM-FLFPB3$]ҭmBؒjBjq"l鵰*_'39+łvզOHBF90]#ߩ׏|Bh )L\+{B'aêݖr qIL_ܵ '¾fnmNZbi@*]'<Ii$-)uOZ1pQ-,+%~f8\‰iDd{i(oCct XB|qx]"FQDLFTftIb،TNÏbpVd}t5ޕ>$MC!L[-(v1)X[cxTE~撰&+] >og=ܺs?:FΰwXEU[Vڹ)7{y/Nrov{cvJ&{3${ACJrdKG~{ַgO[}a~9f͉w\ͤn\ b^CC um9G)yn?I>{f'ﱮ\D̈́Q3E2K-6?&QJ)~(Ơ3I!7p(D#Jhs,UD !Ex)5Ky^F Vq8{xZ,phD1nUs|"OO-@8Ù,r~Yw걋^: n{|r&s -NqJ@xb}Ȥh >$e("+R {/9)A|v >cVJFc5r1;[)ZDlN2R3L`Ւ(j(]RLcqq2(̶q:uW gdOAz oq AyI!_u8<$2d_8G&q kjSgMEL\?ɶq/ hw8иg(/cFD)(aKkEDp0L+6]ĵ,x;c#Q2*Sfx׬֕E~״\.YɁjO*{}b"O:!KKLWDưrJB~0Jyjٚo5I5'')@y!:l]V(H3 )^"YV ) "D-w1asnJ4T!R)֊~0(դPXMEއRRG#'jy$d˖,|l84,D'y;4h6ڔbb8KԐzsL_L^D"x"SMR. B~bs^WK E(ӆzQ~Ϡz*7&|`07Y9(1ߐQb4Bꐠ$⢒֯JdRfV12ƥvYpR/-/D?㤈OSg(mM{Ճ:d۽8c"SIs11XY <(X F* "IB ڟd|b7K/uZX2jcS(c+Rf "rqYuF&{4kWTqFDY)/E1r. sے8^dΩEt>V;Y2щZIqߓ,{!SK7p]wnfZ dJGZ^jZ;~S.WH䛳N~=H\b>8=њ¢ 8Ov}5YXFI%'+8Myͣ$bm{ QSg:y;yel\壇[-KT.af%d;2V©-W11:"vQ"4o5|#ŀxhbQ2A0fgn+o^_d:%ՙHgs81IBl},6SP?)aɑ>^}j^(ol'4>kb&KGvrB(L ߆grId{Р r <-b S7SZjAEъ:yM4E.oEy|^|~7d=3s"r_Qu*?\ljd013C|FJЈ LsqR j!Rg"W &{[}LS 4 3IfU|{9)0=6n-w7Zɫ]=G|J-FFN-Dڪucg2 i#[DBF>ģ5 RRU)&Rh;L- HA,\Q(]™7wo_RCƯ^op6-ʠ5N6dmC;?r*ᭋݘ3 =ΕeP3[{XyKmbVJO/^w$vԏ_Y# 1I%76ȕV1XŏXeXQ31]8kgβ`}ɉBabHI8jx/Ry+ - v0KVCDN^^,R(Oc ue$oaH m^S.Ť$;5SA7,.eʣ!x;ًi;MRaf~݇FCzZ?^~ɔ8pdlAZ 83I)a`zߖMoɰނ?0˴{R8cfBqdfg6ذYd{OgZGR="4\/Sۿ/9zڌ>5)[r.K̳ėLm 8KKs#{zX]NsŬ۶zrΥjͧX/Li"8}%.v(~r-@)N7+T;!SPSL}i>9zW~O&P8:-61~pu2\+ 2,/W(+OݫZje^Na#~cYyg, "JHT*gjT^Fk)Ff'}E\o7{Ά5i .lQbHf7-w=9n4r/;^V4Ҙ.U{ܗJHc(eΨ'j"PR7nV(̬BrGB@> XI3GpG1sX|861\onVvƑTH:W ƓLFf!ٱIʖ/%75HiDVIqu9٩Ug21b%?taG狙(1%U_'X9U.]PNuM1),\^w&ńBDwR}(Ҡ.~A=?tJ]AZ1Tfģ乄cINaa4`|y|0v G)By |CLX4Oa-VBJ#y<8Ҥ'i 'W7w ժ_S!92nHI%cp/}09:ָx%۶U7*1EEQ2>[Dz(w⌰_z2,uy, fz\+n5 Iz^we M~,")Sܳ)JkpbJm)XNThFE־$r/amwl eU JE"mw ܽPP!JRS#&lL;L9- [-"ddyh}{߯P1?{{N~p&AyC%6 [\`$1C!##c ϻbIV2u i䛏S2Qo gU+umrsk(J0ӚGbt2c<;q;zӯi2q/Y"/蟸NaIJS|DJgEjndR-nĻ{ \btvwRd=&voFo).j 'cyazZ.³{U$h ;]玏?8q'_صqoP!>My:XCcOI~#mM9v.ҠY - 8Iu3MQV^ݷo莧91N|^\!Z.qЍM;9޾{_gZl$45뿿g7( >hrXnq=:ēy]\c-Mǎі|\윤,a2sD+^kczN3v'#jkϊdDUedžIz|m횇:=ˇypHUsfȅnݽ7;p׵<3d9%. h-MKm'OtJEvOA _|F65Qb5Wa '#[uy@D ' ZjZzR2شX%p&i!Cd.q$NpU"#+lQK>u HJLNc:lq.bJL:lEaIӤ>j<ώ^V,2n{5.Rx"`TX) 4gA1y8 zڮϐ0sOTSOӣb>zx9~=%C1"MsfYy-ur嫪GyswOiM8q aNY__gO}N8wKR[؂GQfMoJS±-ݬش <1$2w[IzU}IL %Ϣa5i <ʂI6;_NoQh{t{|s_L#kLM>I|(R#B{is؇)'fUo۞37#lTdprd_ǏS,g HK7AxkXP]խJD²*k*Iu:H/)35AEY^% +)ȌLI̍^c2Bz[| t%05؎?eJ^z<4rDKqe 9aYDk (-H%0>@K()oS|~k?v ;udf ϒ[[KVF[dz2X(* '5$94^i%%+8,oI2(Iz qxl )~S:bb 5Tb f9h*zy+7Zն.YI;ϲdshQCh"QoJ3Ca>TvHҘG6ZF'.8W*~y4ysdą?9j4N'm#p4Y'%5\Y^KlbI;ޕ>e^F/W\%/9ko[DU!!1z:&w΍%P^KgrD'pĴ|-3n|=qw$Fd,E35汅֟ލDų~kaR+/[?ϒHizM٫w-jQͱ3Ǹpzׯ\)R3k%.# )k՜Hbr2}\x[jQ?Qᔈހ9ƌIڹc>*j7 Ou(>zT|5:d{O66\mN~5Jlw'·ƭeX &2rINKƦ^0mmE ٺnWϜfKHT=?Z,QԚVEm>WKxPF > ៣1#$O呢s@-uK|rFϊesiUo'$7薕.Akp;Q '-D_rΣVWrrKKRis֕Qq=M qՋlݝ%~!SVMgR!k# ~Oq_ Cɕss0*Kg`l|IngϜԪ5guibbMze%dInQd`50OG6qh~JC QL_n,|ؔb󵲚GE(_N>WFy3L^Q$Vc;w!ʁW^J's)+a'~\8&.]: I> /rvwOe*o"nI++r2*֐]Xb^m%5y>A7L|:OJb ݗYf}3lOA뢻}7`ѭ'[9fł?[ngq3ӻ'}}CjJo^b޿!xA cD>2cx>&,68xT7Wr$♆>O᯾=-=}/6wos=*! ks$r3]Eo>Yq~9VkgWnoן*N 1=xp ? _"~} iAFg Zmx{+tM3.s:E7:hzU&=)J"kfD|̹Xfff=;x&}8DgbIځ!֎.Ďâi8Ii8D%2W 9al숾艱7:2$άSX?c'${dM(Rdx g7ODə)bbgfr Fea1|()g4I^>ݍZ {Yq8q|^̶$#oW:k< JW'_D$', JJ#W薻 "i #8{U$8: JJV ͍ ߉HEݩQQh $&%J@D[\v")>I+BB!ƞH#Yܻb9i"hڻƑKj_kFQr7DFeyޠ NlWzْDrH&]^&ZQw"Pq9pXG-NQy{L~\qrXaս{F Iv<\0RFU6T'k\SB20y^О=Nv!_'%q'&.v;(vsY@6`?^PMJp>]t˩Ҳjjjrq5"}* :V3.UW2YPG#V3֯bАkf:`'Uaӌ 7v67ɯcc-yFZ5tTkh[GSK'6=@w8-Zk>˻S'x,Wfģ58w-օLԷXv%.xLd@rNsc^Oyb&>@IuD>1C"{^"!#6lkޠa +8 Wm#^㦧n^BH^ݱ,~r*޺mcb[شOgs}𬟊Ip]c9VU6^nJC0^S[K_8\$&g֦s\v57?ގbEz4xtaN%1l- jB$ٴFQ+޺?1lO;H+a2~3> /sQQH&h͎桭{¢|k)ɉ%5/{Mh HO'Vgx|*뗲4S蛜Soa$'b!K,%3tz%x [FNK,id$G].b=\kC+Z*($59XN;̐ˇI $s$+$r.`ѲZ,! 8|JPɾvLi8f,{QGjWFE-u7_qncشa9: ]Cs꛼m'a&f1M`sfΓobZ~V5{WFGi8&LxO5/*\^Rslazܤ$H~zIHq?NJz>;I.;f0/ &"U[o'|FY1 ΄Yp8Ӱ٬f&:u}D2J*6S@5Ku)ڙPC$H"r}8#ݦZR2#fIYb4-~UTLgf!p`HBHIyQQ[q&)bT&iш2c^yyEKRgP)YRKPit:%wWZ .NkB 2鱄3d"?@zz|:9׬ .M)`DƶV|FksRpR-Q= fV!TDa̫ՠRuI:A/-[% 91$FgV}2fI{?{ܧTqDN8E\1hz{ݞj8F>er$nQL+KDg0fgrڐRi^]Ӥ4$c;Woh=w<2}2/ـf_'KtD<[ZJþ}\kCAVrZc˘8ǰ&;an:JVy ID9>9CSJ` ><%@͒t;H( ]^;5ڰRQ;^$Q tƅUPoo#O}E3c ~ 6_!VE XVSc{8cie@@rI.η`0C].+lD$ϱ%np?kK_[wb7f̤ s;p԰da"G$&\7_a$R]aSQt%y98NŹ14cH \wtsS[[NxIY| =v>bE %Z5T,XPK~K2[sIFJJHӪiO4q7*~#]X2q-=?拗I.̦ /e:r34_jRIӅKX32v8{$ι´L ))g\hL~8!3;髽'{Z}uqe򈗩ABxEJYTZ +"a39~sg8RrY1ׯS'j8q^CuA:D5iܻifGшT3|0ayX2v8jWb-DNRҳq Q~ Q8ΥM:p/nk1^[}$U-d\z[1%e5 rhXh!=`I Affpw"26$=5Yu<$QUKDo$.,F%6wm%de-$"] Nk(.*d*SD=/)z _L2JS0pAAS*GCGNvU$'^EoQ\ߝvIU~",$7j#IB3]&{:|DPl2J_4I0 \wgd%T"075Zns>[Նu8}^jg]nFǺXKa˩@/j@L"F֭,͗^0{IL]'͎0&zQ迌KPkUjSR-pQ\"=iiȪL݆fnc| OCf\+n99MӾ9Ks$uo7L:P[w~+yhAF-sv_Š|>IБFEO|V)PV^R=Ly.<-YbrKHv*^C_@Oڍ%)#+J 8c/|%6,p۱%ڸ㎵LTep9|6n^Oga m|25j*E(‚Nχ.5,T>H̉KC]vZM/5-CHd꟔;V[%WHe|c5(<B #guoyZԢ?DIԢid~eZ~>'cQگ$$i"&ZE-jiujZnөF]+D7kyuZ٨,>)cԇ{ZH~:toU25Ju$UkF!jnznzKP1(eh$hhU:i%[dX?y1$Ǒ# zp~bWLdN>BѤݸԠ|_Zm8ڼwƅp_uj ǯ;F|b6깎Gk ] K5V</p7PZB,.V-Ljk 1ĥyvi ҙtϑȢh~'%L( F8䌇 cS9N؂h,ɏG"ódE- O +#3L?=cCdՑ`x' v$F}n]UL(20!LV(.gqנʹqEpWcMZc+qi&y9}?^~_oYv040Da:O#$ևXUVǾ;T&5e4: 6s^G(Yd)>Qr,&(o}N'٠c2x(J>^F|TkjAQF5y q:\6nYVAgIZ&cظY̢6V@Z"{X^aU|*IimKRWȦD=WA~6ln &>qy%F5YSE}9rC4irР;n'j/ 2F]pXhw=(;N yim$=͑W&irqz=4^iVp2;4]ȴ=CF8:phE=יv@gvyB ڍ`t3|篿ΣWz-Ƽ t#\oކ|Ao4.j?Ns{?nyY~ KW04GW5~?r\;"D?; /?ϛ/M㙙ZAq'I/#0ѥgJJlu-qsd[gٸ|N.9/ifa5zۿ_?Ǟhٶm+i83 )Hdj)tc2#2Xr;KG|n-op)K3cJ^_їhB]̝[c)IԐP#yHe$]B_Wh sGOSd36ݶxcŸ(JE)? X1D䒀I0Qx^;R,%$#lOz]3 )HwD<^՞%KR2Hzɘ,`́5"QZ܃{nNEfauljJY|~냲5,=gPZXIo\(eáA?f'j/Q{OV-SbPK43̅cHu't #B@JNn ;75B̬߰4BҡD3HIF'@R>MX:]F!-WDz!=-IcJ?T3r@P9_ѮKEh81R3҅#z#NOD2Ћ&AZ}/YX89Slim!)dqqzo5LIQ }î0VS/| Ob>M'1Vv{Ȩc?i=1te_Z>.O=ߦc'=OH{(q۶uL xVVM 'ӧwQTDMB!Vֈ4tՋ1.[tի+IZϥCZ%vF6ߺkxmoӖɢ%UЃwZ'[6NVJ;S"X:9ɆMϠ,;"Fe.8݉=YZ;Eehϸ--\ fsN Z={^b'){ z3 ,fp%xy7"M>b՚%:&Ɣ*j.`Y7QT^vZK*wIZ\n? \;&~F XLBkqw|z YŬ]Rʨ7d%6RI)δlCҖcԛpvƻ[uіIzt*BAI?WL5_GFF(f;2FK(O/29RFQwa&1ޥV)*)1 *2 G4 %%nU*5jDq= d ,nGn7CBjwtZbpoKi#AkQS/ZqM̚RshNdJ:oU$)\UumXMK<"c֜Z+ԨM/﷢2K:F z?3S8fTrAUqNC @өAT썌 5-yM<ʾALzM&g9GE9͙Ugj.LR78pM>z%/i#)B9JIewI6D)SjIg 4)9v(vD=p)j,^IIQ5~"<!昙f+?z:ZdϱkC֓ A^}y's!A"Q=3<6?z\l=o `6RnR Y ʹۇk%h{pfj^nq} qM3+֡8[*.j' bP7y@Q{^9h8lՋ'9݆-' '0kI彴Y<ˉ΋əq߲kO'DC"0nI!7IFYDi:F:(]G9o s&/7-N4ML6RGq8TjJ[e#L8ʼw Y/r?uiz^yT$MGpi,E+x;Y4,i0GȖǪ"z'Xa5c=T%yd$9.x_ZU Z%=,Wj" #QPgX:{ GZtydR5bUƿ5YEͿ+#R e7P9_h4]nxbY|#t6։GD<{,{6IFu;.>yE}\ٜb^!pQw6=މa~y\ f~?ujtID(G8IDB 9 4sg< ?I>eu8=ͽO| 92p _}d+=WNq6?x\9:?hvczvRQ5}i/j\ܣ;{ΐXT/gZG/>̷48ک2qY;F9x5K;OP\Saj7xKA_<5F8hcp: H.GO-ܿ pՐ$p9ܵW#<ʳlI<4<@\:۸F}v#\Z=ڶk$U:,Z{"˷myeC> Ĕ})f畐W$7ذYR-\=wSmitQmWstEMbbe2~-]۰&9yWkXDf$_k_r\$_y&=2}ƙ8زHrr %r-QV6nF3Ɍ( MH=p!өg3Cܳ}%Eh3w(ZYd?YT2!7;3tOHr2{d#}T jǼE)(廐:?;5ǥI- WJ v7#rVa&m/=$8 ZskDjp8_MReKAQ,HDS`jb\lI9ER; zM"KY4"؇D`e[D-(7 ,Q})4Sztw~q#oGBK|&eJVtxuROHaZc#{}_dz*+gﻣ<rU*r-g9'l춱74ٙ=;ٳ{;;ti1&cpll9[e[9T9z{*# @݃^}}~F')eOA"`"XƄ9RrdVDVTk Ƃ&rXЏ&HE1!"VlvLbEYs$}$7-)"$KzYJQt6O pDS9.Y#DFSHdt]n?h+!Q:GK% $|Rֺ8|"z%"‹Ͼ>O2ҸwyQ9#l$|a4#B8^ف 2˱e]56`r mcR]JM ݅e1|j{1ӆ=MルmVُiׇO<oe {Ob#Eǰe`a) tLw4!bm85Y9ioX`~ cf/(E(A@*K4KI|;b\l``DM 3[@웂N:,PFil/v.ȃVASJLh8-G?|<<35V2`Y cbl{<=N5c'ȂSpѫ/1oB,*_cmPEFeaYJVoFUy?MF*Q`B^| k;ʝGvb vH4scXdDqqkDh,& R D,\]9^k,`B-!Lb}:"T/Z,0~h #Ӆœ\{bע(J^=ŋ{NBBwUrϥ `gDF9XY(*a\zx>@}Y_~MY%n4K-f))Q 8y$U 44KZ\!eTQbӋvq|";SqVJNp0qVnfG%&1p$ tjHhL7Y5(KPF% = $SL(ʌKs'XH(𜈳 4Mu{\% b.KXLi|wZz&BHb1D\hQXh?FlWؽk?|q)+pIx#bto2{89( Ok (Y='sBx3>9:b1;{zPttwN2)k*MΗC#~槟|m T2ٴr8c)*2?耮,+kP(!:ҀM?s/wBEYOT 1sj1 sXIlXT mޒJl["bMX<=p3^fG?1&k\XThv,"$6a{˶`rEV"/'űad=ūWC.n1Q5gT6k%POAQxQl8}SAq#?xp9&F' P~,W5[9ԋ?a5іH@ڤLiHn2܍^l=ٳaj8FYY.⯩f!w!+/Zg. jOGfAbu8u50ȷrx;a=s ̘]2 -G3!e̱# ™ib B|B 6 CXf9ܼׄ|V9l"ET":akjő@.U™e [l4Kf)C0gh9<{\Z(dxCN, >H2{ b1~0Z*{cb)b1H Ao0  `FDJ~M0|4XHBEHy2>FXȇ(k9H"e7rO)hG SFUΎ= HF)q$Ggv,j?f)*J~ʈ0R0RElII7Y-$SJMZA$C)c1tZ +%`dH"k[Tu+r"tz_B9pj4h;FLVU۞ZFXJ2Br$`%D144 ;"|. H "0gQ?. bxN5 :b~/Sb+߿V%Y`a _X LkO.,UDŽVs>*z^IqMV-ocTd=m FIG J>(0OjHnJGXҐ}#>L^GnOb0 X?`݃Dc3~iGrjЃ?p;\;։9KWΗPؽ|~AT SQt^j}hvvQ9Ntxw<|excȴj|y+!݊`mGQTO/oHS'l/YD`7j1qS ؍?꺼xįOWp $2GIa.^] 6γ5;UnAQ7 ̄~EsXVY~炍~B- WGVzť(͆$hׯCnT CM}z%c|{7b &;_~ q)Fۛ1.ĆxY8Vp%pw ,ѬH?-{EW̎ ÁSD; |0[?Aw];~. @F}-;Q$cf? )ԥS}* mX|6D/wA.D #9ޞq/_]1ц%5X|!j֢)=wd &='.ibsID;pxb#B|" vd3Џ .]u7% ĐWd M%‚eD\'ʋΆY#A0{0TDh+T@Bf@-f"c=vd=FaV&y9PGp~MoǼ<20 Z,ţgs0>% ILh鈕A!W Z;Ǜfs5ĤY\0feC*$h`&,dX4]edeqfa̬7?dTi5x%ň|D0>TbMLx b:50-% m& ).@KH5AD-7^|r8!"nt%c9#׋йE9")L:-b &&=0XBSh2A.3?5(d2zV{PKX T"ϥI@g,P\KǠM-xˉ SPNR!RsTXe|?RB`351q$YysՒ Nz |/, jL@ُDLnfscIRT47d:W'zK ;3|ALFֺ]0vs碱f)%ffdRR-wEҕOE[GTHwh[B8qUBfY'h=EX@0DdZNKQ qpqY}hhAŜr8r,E"# :Շ~2rV=5lfq sZ!UؕO^ z(QX%hoWPa,+1Fq-KWɜRm2_l d~C A-00Y^D`BYu3]ZHs>f0~̳-esJJYʕW-&cjdިHØ','F{{ #B%3JX|ȋ dحpN`b <"fM ‘IdX HŴ)< Q{6Rmhܐo f7ܿPh"3u/7߇\O[U%5@FZ#w?K 1O9d̗Itܴ*k<{R'I*QFI@\X XD)kE6DcϬ"ڇJTZ@WѣbthљLoh&G64éIvL2 YDB,$>&;H '{؋%/baZ4"ZYs䱬SEX^ぇg +H)[.taØT1w éY7 "hJ;=T/,)'JI̊)[uIIHnh8ckLdM@BO]OC~st[RGa!&&0k~)d|,&nlƧu QPDKKXxKYXp$>n,ʓT4''#3/LK Km,z Wo4'[cM7r#|:1ԥ}DlZÞp:{ [}J[rrs~;}YeĖ2u^EvVhm a4ad2GE(e u0>GGKĦ\ JQ"2AP L%ѕTZ*EӀ#Ra՚Mh=݄f;%uIF(Qk0b !T%ѣ(g1gr BLmlCQ8x5k x-pV,]^6<3'0aʛ~Eyk'M~*Ib:cM^{sVùo#1~; 2UǁN6e0яQ~ FI^->0my6q18\*c8=Wc|=k֭Çh9d!d/ZbbfTmz\pXsW ,l{e5ik֪h܊c+ɣ8{6> ]"A4_NO;@;@p-xQ\$h{ay%^!wٺcGljFԀht\ݝm>n ߘcмoAL$vWT >>OZ'؎+QcK~,=VG1ƈ-+P>,_%m56_z q1%F]M8RQ< W+Xp91[V@ucQ>:x B0rU"BkDpٳ]A4׋ daS x­j;Wkarga^M%,-eq eg()A>f#uwHAȕb4| 'Y47 rd㠖s8dӢl m<\"Ӡĩ%Teˡ'RAq^ eb"c1 lߢ\s #y`~ jt ,_2 6֍1pQ/`A񴆻Ch:wϪ\e>f+Z9<1%6eXm p:$ޓa~+ jzބDdžlCZ;GbH3w5́Ȝ MՖt۸o[ʪt[@ p#NI|o(N1$*#|MPTXūi4DX`4XTVPljR`lď0àQ3d(EaA3Y!d$Ec-EDvS|i&ژRF Vϑ+XHT4ɪLnS"h|"W(+Y<^w[nj9YXohj1j95*5ݮL4ZY,^`_"e=uM%^,lG+kQ (%r-,seXع[ _H ^IIyD2թqS*pZa$_%Y|,>"U<} tj4oq' ?~r:ULU`昴2luK+9FW}FDԍ۬"֜s,/u_ܴꙓc{O{tjSsY78&=&- 1WF2+BxG=+&8ωK7t 1c7iJ#"D%)Dv$%!Mv%1Ҽ&Rs}2o_<|>F fg"#?E4P %JIZɉt\ȹHhS ģ,UFFlblb4F lF[!_32jpi@H0jfXGAEF*T*50>+8; ihy a47T/2T!7F}QpQ3}chC{{/tV;mT-Axj-mЙMHcCCs&:[18bNBLwj:x.ȩLq;/!*WbF% x#t! Ž :.b",>k BVHUZ6+@' \.yqj3vuw~*T`4\r__~!xJ%xz9\&/ϼIM }Lu9}O!deףt3,Dز sҿs=C?bkTI#x׿K,{x sh=As }(Rm#),^Nz LB4ҽ Xh& Ǎ{{G ǁ{͘WjBg8$rˎfցR/^Yl#{qqBzG1nQ|o?}d%`(-&ٰf24I^2= !{n aGPdC[͖M[.6{>4bvv[6DU('@GCC2fC /ă[$C ޵6)Q3kҥ}HG \<{#?| ΏҲB֙i# "ߢ;*A9Ml$f#fumn,"Ef~-;5&ƪUaCC*p 8-<]`aiYOjʞݩ Fylli8 A4%D(a'Ϧ5U ;݅7e40ω:hQ9+Rދ3u ȝvER2I2͘Eؼm#`Z%g`6iYFzܣ&e&g 4DPS~\0@/nBELK_FF4D\%?QBL.NI–5*ڔ`M',w+] )fgɨ/4bڜFİdT&V2I!G@XĔO<q61bibp8IT(Ig'J1MQR("Mc"MtӘ TʈHmS9 ɿG΍(^F^#Y@HHpg׍/5}>?{fLy%"e)DXpl#&W><{4fi{[yVVQRbz|+]9f>%@7[X הa*+pSCHܽ>&''_}š()W׳^|Kܻ17JHй8 .0Bip8n :VZ7=YF_ K?<< 6)fZFGGY}}=#겲nh9s)f\pC]jQY|iEc7Bg*D5A3@ڸbptnOS~~>E9.!UE=#>O$/S9->@X9O\T0j5>|/gK %?>uÕ BR72R~]6`-Ei72Y\tK-Ѯ8aVҨUCAӰW;uh7yg&=?R#A{s>y7,F4j`jav#[/BkτC*xۡJa1Ho8>wbMpc`S~8p*EJg]{qq3zCuxs!ʅ0 lq0%D몌Am΀Z*=9`p7R910ՋG8$196P<Jl0L*}zR yk&Rs9&0Vg.4"~ M˜[ 2?.ĢObE?c4MSuchDRHĒ9pw/~eKW!U%N~׿{p;թupVpHL7$!т)GG{"Ayi.ᱧgx?-;49U)`ap3Y nNxhft܋=Ρ`jZ%8se6Ռa nE|\o1 g3 r@AII>19d.4p`^Ub tvF&ui}5O&5bx띗`*Ev#~[S "i1NJ}Ȫ^WP΢ZxG|eJKX>$_PG3rDU8Yk Y[N\ʟYtaZ.X0aVX9YԆ\tq-J'gDp"4ր}0>ŌRN!fiKXj񒥬H5p(PJfUsWͺf0fzƟxƲW|Dc3{'.ߊ0egSM5,i8*dc%Og" p2\p9}qbEo!)'3ە9{<:X#8.4Ő[ ? /Bπ9}.ѤFcW˭<ǥwk6cWTMCShݚo* fݧ64^/'Iߛ#%Դd4TVswsntQ宅Qѹp419¥}{t􋼛7ܨƻjj/:p\p_Х63|I' ѕ*]k-=KSr)tIBJaJz#Gzǝ DG,MsZ'Xa_$|C.) <#^F b2$SesI"1>3YG<wQW]Kz—q< p½ ~tFF% OI४ hŢ^Qp_LܟuJ"qWzSM;RtĻ567>(;RHcC{'.3'i4q槜.wr7?NYv35e)/cΤIENDB`tipp10-2.1.0/release/help/en/img/h_lesson_own_menu.png000066400000000000000000000313641274324046000226150ustar00rootroot00000000000000PNG  IHDRjͨtEXtSoftwareAdobe ImageReadyqe<2IDATx]|۾=+! q!C"RT JP( 5[Kh{" 1s%(%PJ_~2;;=;3YfA0n(,&dfKd MrnXvaDQQdz@Z%N<5CW*=n6[D"\rt:@1ޞ/<޾wke #,,ЬXȂ3 _dIl6chJ&3=J, `UjwW;Fy dr\Կ N`0uaG >jO/XE]]D,zo#GNd GR8qZP.-EX,VUeXwtr0QLg,w kmk4Vb!+r3l6^m4>rĿg rfC*QXL&EUh#W(&1mꤚZV`k M}ݹ;:w+jf箃lQ^Iњ` ZV_S(}\l& ϘrL"8] UFcׇ~ 7[.ef]ܷg[IIY1stع_$zC3g|RSO z??o6SG4|ٴo4)rHܓ}ѽO6-No_D7׼<\ncr E¦ t:]hHpB|tff||}’=b Wg'FlٺFV7qXS=6ٶ}=r(XwfCG`@B\;/0Ռ?1[d`WW+r|/XOF;434ޞ:xE[x<^s"4B9c2hRA^]]]Mz(qT*! d4~UܣjՐCP]׋"%Y&3~ݝ^3acrͼMJL Ln} 8}?)GSClYD(2Y˙1㹀v~\>^iDB!%Q8@{3),􋥥1p[?ZloP*U֟@PRWl/7K!/F46eüiGGmZ1,W17G/TEAAM~Ghek\q~zl֛]jz$fCN]aPіUAY@!%hryc綮zJԵHX*pGRO^>|xvv8%K(,,`R͋{WZ_XTk/}NY7^u՚1ڶAꃧnδ?[ʋ&W3=1 pUo*ԕk%NN'Ŕ(sv;'O}o^H zp!k~@qQ/S4%04TǤ>>bc!=ݓLAzw,Z. g_ccӻѶ!.[XJ^0 :=Qs*C(T tm#3/msllp¼'O78 ^^&%7^I.+=fdiiyϞ]fNhѢI];M޵MϹԹOrsu*HttMVȞ6I<&J27y~u.N* 󯖮]`Z#{zh[kK\ ) F9t;Os'7 4 96 NCQJp> 62d+MHcXiY ;h`迍ј&k`lRf)x%CÂ:1Aic 4@n8B2cCX_SҤp9,+2lݤG AlQգr |@1-tzfX3;[,.!bu }E٭?O 9C3`1t..N yE#B~j&C^[7 w&B q p %hg>^ U[3@f{ý<%eMM"/om}y`Ė"ҷ'0qyySQ0%_~.-=| :[翜c羌TI9dk~0D̬܂'6~i>!W ;EFQs4@;cLVZEZ(oj%&sw0FqZ5j+/OnhhJ|څWLD"t cpP=ӕ94LlWoF:;K9r _nnV __o!ЁB[oxH``|<%os!#Y]ffOdxHEEuIIYTd8oS@ 8fRp;5%]'j_7(*;;%&lj[Qyɒ+j:76ԉʸ K>bKFF#7NۄՋae5 3SR""B65pA1ٜοfޢ7ƍYɠ?S*\,1| uy zP(j,ۨ*L EBd'',VBb^Xn.iYpieK7FM${FEx|(G~y:ZmuhNV5 I; 6u9\!ˌ+W -?D]ENЯkvITBn} Lg'ӂwٳ &țY>|mNG$˷X#JH.Ab,{?,4~g'zF3=zaϟ),,.e" e}. BAR0+8dS"l/A^b"eMFZM$D Qі윶b 3Vor萾Ǎ?<28B>۶^Ck4&o<Sʀ.._(3Ǝg<~AѣĘLDnjoH2nH@2UxR1Z3̆ph `&Axyxt"KK(f;RYXMMYs>ЛUղ>{ARD.Pr #01NK _oRo\@OF_Tr8\nVÆ<X-˻Z.*.17+4XO2a)44t޽P}<.زR |mw :(;'/ ݡG_RRwBav~/_i+JX[TTRF{odvбQ)(,N=eҸ#'\-8ѣNiW0mYl??_ !DX)pK-Ue&ŨӅRܹӶk:ƝOˀCYl{~~=_ ;~2mn߲u'<݊ꜜq)t:ˠCǻ%%~|}~~G:|\(uV8ԭ_uAFD"ed P(@YP`|MK)˛mr(T |F$xCTwyxѳ/P`j[ߨW̖۟.jCu+൳fGG'oooCGNFS%?F z8q}< yN''C\ok9bz=PqZ,,R#KKyyw•ӃI$bԣ' D"BxIWTT9৽tʯ JDگ^oL=">zTm]PȗPOB!X/Vg,lXZTBW.է=N5D!4BoR8k˗Ce9s~ <0+E"m>HKWW xYM`ݻXQC[﹐q A]_ժN.=)ZA#GN&%u۱sǎ1'O<4>MϽ<|BC&3t Ȇ/g9S"#C_F{b0;{iAAɩgg&o63i限`p(&|\Ɔ5_6 5!p/p{r\gQ-L-3c@onIZeMf C3g 8'@._T*5*))??Lq={tC˅DzKΛ$~?~…zɰ RP-kd C11F# 1N:@ &&^c =R<==pƑ|D HH`"pv3^f5v =T ~}ҟ~چ={$_\XVVێ} O9x-;<<\`ػTҋ)23.28=՚Mcvw~5;;7?2|Z&DCct\o6qssϿ\!ǀꂻaO;yepa,2[#}||-~2jWR%y+t-7[UK%Z3b$*-[pCffD"  I*;Q=EBz:<ޠA\*9K&d >Z |S_Wߣ{WiVL2et7Y ڵ3}ҤI|MmmAJT4TQlllJJ /-f?WbxpS\8rǶ5s0rk۬M7 =w=XbqM5K:8Qed\v:u'|L:h \$:GήSNCN;{O^ uV53+3+۳_I@1Ṙ~h '[1 5t%!C555ڵf˚onMKKK զH\XX}'N؞˻9폛?1lVUUN੢"rtU3g6nܘ矓C \]]75f1$ I K+KGrS|O#j&`W' ~۱wT";*AfKDB2s.4C@8^% JMӓ,.ύ\]AN^.ϧO2H3H.s@wmի۷o̦Vv @C]t 7Ѐ j+777** SKmӦMѨ?^`pV(͛={6>u gPs7x{{7 xԩSn4qpե fcm B >q8?/k6].o<} J3yWG b訰7  ytZ=`(?.`JnT*le)蟜f]/UAӧOr.\ѣǺuJvI4Yhٳ'HQ]+k׮}w?YyiΞ=糲@aW@ipvwxKW{%x|S ش JK+v>8ѫ~I'NMKπׯoɓS 1&-t\[pa6i )#cc",b' o 1noj ܪY`/m ? =r.Wެ111iiiPQCxuv1C@z Tܱcǃx_~OO_|q߾}f͚9s&t^z >|Ϟ=B b?sw veŅǐeru'j%=:GYJ5ay>p%R ˡIEtbaa7¦Nyousr.-XX,\p.I3Oc"h5,eZ9ߤw<\uC0hzcǎh+lСCq> @lذ0t:$ Db`&tO?} &h~<G@z`% K ߨp˖-P3K#z_UYо]Nvnc%D~ *ǼjǸW7Wz)|̜ؑq#?lEfŸ(8hIi˶GFâCDg\~ݻHϜ1rʮ=\}<џ&*:@:ٔv!S,z Mh5Gpwq!~E!7QF00ƍUHX.]`/znyN ;wʸ8;`BLǀ?f[yH믿[&Nw^? &ả0iN@;tV^4)@ #9okt^GMpfQ3=M Hns8\z:m[i6vKJyy.ݤ pG_KԨ6+1<=ݍ괖IໜU z}B\5M&,";i&7b\\ s#KoF$0@KA- l}VL{vʳsJWp&/d~N=X$KG^~9橝TopH;u7m 9٪e ژf'?>QWsw9TVV[;z$L/%Hfw52r+8/jsBPjQ()ѳKplp,zM' Ξ*#CcN:TUU(K_}i?ZMVKJʘNn^>*]kk?\!륥 $k7^R@ϗ.-hj "RURRJ7,>yuu !ڄ gN.T*nHU*ΟLjݻw}w6n՚l6<&2>++7)8_E[tw f3A{{>'陸u.s>7oa ՊB:xM!ULťpx&7r Ǹ !77s|r6sӷOif\Q(74hQ!'ٳ$~ T._ʬս )͊Cs(e/ I^賋/5;E&$Xv9해>V 2 rĩ#^zyggȈPwwں !-/K$ FyQ$jܭ\Щ;̝7S&}qqs/oΜVW_9dHC9t>o*!ְS_yySg*];gϚC`֛3ȵR2W$<5ⱁBaʎu7mysT;92M5/9)Jm4>1=! 7*!T Qk,Z^ XpL&J-J` Ӹ'D"ViE 4JeZ X/e4} L+zWϮ^x0J.v׆uT!У I[k%j3,v0===+#=Va X'lAXLh6|4PGѤoʾIL'B=G|{߂bg/.]pl{S$ w 5t=)mHEȈi&2||99LCC-}}Qy$=C&ܰCdвc:wH$<l2FA9@f#כ+eEUb{ #WWsΕ+jReU|?gUU_.`X]8~ ھ@`~yANBZTrN>{ N~bn>ƙR߁d{w ͌씤Ҳց}rT>kΝޞQ@;?5sqEE%`ىgW+괴R%Y/d`tݾv|oXU%suu L66ȡml\Rs}GEEbsLJ>s&$J;WEn1^XZZ^WW/l *,^2p\)j*nXh>K:Օ36MII$ yıÇ4غmwB᧭ o?̄ 9`'ǔc ?za^-ş,zcAA'\r)?:!7I"oA58=(HjjjVk4pHa mg4VS*,:@lr[/|7<<Ժ,E([( K((,kܭFQ'Mz=A&HTU*EUk 8|V [ %f rrAeT"w\Ne|Mۣ۠"ղuU.SV^5,48$$a7{$mg4IڡGr>҇1X%{mBpssK 691Hm+&XW -bFʓ _B;7vMqmNzwk(<%ß,xYkçlͤm Dpm'M%:4$&*=Yz-EEBccӫ3z% *=Od'q@D w*O?o/nǩgEB|z. Ԛ9ba r 1ਨ={tMqkYYYY 5.u`bP==#nϔI@D] ݾ|z0fc#'Əi!`s3g+]΅t9ZӧWH,ڹk?h?yX(LpNؾn8cƌ))2q&j-uo[엯ps 99ypCܰlź陫l\r7WgO>fe|>wBYm}3_{"tKڳUߐ{Jk}/gXtyyձk)/f{r<,V6T.Y,0( !1HHg7թfsO9;9%6QYILk5T;ƎO !^zNÏ[5jmrP KxMUu qtۆr&J,8wBvYj0Lj358M,uKt)^PWn3K(wx;(a$,fzf/P bz!AO>5900NJ"ӧTVT PrwLL$\Y nQQI@;ȈP<χCbf1ӧNR7՘hqݙtЀs)+_,Y0C,TJe")-}gtкIc=tTT9"`xzyБ j2'Jצc2l7x7==-56hnZn4}Ip\{/P6446HDoy VhR;A12OE.unevgZYes? ,f3_ tvqOժ2 7o oH?28(@ײ% O`ȟl[W_G;XמVMe츮Ki!c۬\1|@IrE9AOK?@xmPc#G\8sla:%=fI}cj&EH!Ņɼ5Z_[O0 DlI7@[464AL6Bl.>Er]o;-[6؆"Y j#訰E_r9U @પj\py x󶥟NU(A\zr<"g9oo;Ǎ{<66":2|O=t"0=!>wGG;;rF6Ԃn9;;܂F3Ԭ5h8\آkZCClX"zf@|dYvq;Ė -%*ԖBrV1𳢢 :PP?8 Fst0ѻyFG(y vW> [(_ݰ]AbIENDB`tipp10-2.1.0/release/help/en/img/h_lesson_tabs.png000066400000000000000000000064241274324046000217160ustar00rootroot00000000000000PNG  IHDRtEXtSoftwareAdobe ImageReadyqe< IDATxZ pe{IfB}b8!"H ⮠r.X"kA+*HD&!$ af2{NLt{{",y<:( /ǣBLiJ t>C#uL`@[[[{Nnҝ[E~"0nn+*.qwwsS쌽, ++oFEE_x )1L889ۭjyMc~ڵ.%ZX,v%0Vj3R4$$߇ppCO~f*J~8gn_y+$ȇEܝ4L/6Ι!&}YYH;WM ~tĊɤ-^cyX/Ơi:P&Kd2IFN)"B2'`XR(<`~_g$"B*;O!,VjeR1 0vṡ Ñ;؇ i׎N?ݪ{_,rD7"ep\l׎1b/͗#H2^LD;1i nJLDʃLhVcg\ɕJlVhwn!ꏑ5ᡤpzS,z*!cT, >͖Aւu;mK 'm j+b(7pK-? e 9M HbLŶJ}(,a`MvP'o=:kwToظM1>CF$1V8V-ֻKcWf*g6(kaNW3^oJ?JPd2^^]_M?8fKxSOxZ˫FsH{4iaUá'֮{T֞7p[dD8qrilZ i/eW)P ,v MN O2xjk}ťN㧕JT*%(Lm GRe(_1r8'r3[>کVyU] }H9I / K⟥P9b[|n8`Ҳgv#B22[oSñt Ѓp1E}wbGe(nZW$Ph^θCQA@>,vI |X!M ^ԸYSc3oO~_]Vܘ{~}̹~5bnIѓj;s2Pu_*+*M F\@ #'aμ5km7Ÿp;wlJh C${a1[bђyx\5{ $EI6Sa3NlS?/g3{-~01&o{esgtZ-m͏ۈtl2ɑv6.G5*D$ڋ)bkj#OYrQ)v}Quގ^ާMwL~5opҸqc:1V#jP'<ˬ{rnʤ ={:1qDH$:7mm7dsN…$9fO`A>00z5m r,H(Ve?Ń;6%%y1'O9L I["k^~~Z|/ mj=?ܸj[\0++|Y._߰~El]}5aÒM ҦZCHH |ukK[fW\,TD,H29\F:Qz5 ,zc[2nhrx{Đ3<oWHUς rh{?$JK\9wδE"rD*XX _.PE8B7`E"rkdaWfDUݫFP(NQERB8#^ *,^dg5Rr C©FG]y?UW3'NjĬkXt%Hr[,qdUt]5@8ZwJl 9g֭;U wBIT0v Z4!!~FL9nlv-mFFuvloPԚ]F`WB}YHjNJ:#m7GJh4e]<\?r1oEF:XBm6$,ѨKKY) y0zH8zgAMA7tEXtSoftwareAdobe ImageReadyqe<bIDATx]@T֞{e٥w콤齘R^Kc)FhbMWDQޗgfvEh?ސdۙSΜ2sl^d]~.?%P_VvV,DA kdr( $N [-O˚bBƩ#F&TWUWlv2t"Ql4 յNj5e IǙqb$FFFXSYY_Y^\!ۗ=2/JJ=e ԅp>fb7Zc' pMArr'CgJZĸlSjP j-Vl ιO 2d={FkȐ8/4*CM.@j9 ]# CHTv ֣G^@mhssO̦޽Y?}!h/Hr c4Y6IooPY>p] drXk4;O(QQŹ ۢ H`aB.j%}N\TT^QZXH:ACTJAy2\ၿjARdrZOO}!j^j F[߱el۱c#/d$)5P-ʇ?C<=uJ@ { _aBV#o5;zz{[*3xzB|tU>^^6Bm=*%PVZt+wV ydc:Jzt@JĿzzh5q P_Z' j4uU`k]k$1Z|ayYA_YqujJ&cRAe7yه3z{>~/ 65+AJU0:2BCɝX2oV;Rqqq}{<[lہ[!klmژ3?[\x˭wBС-7U;# 00?daq~RRNuO_`b9b,/5*SL]GA6˵ pT))[ 3R{uEӦ>g6Yb(V\69%u֍S}ڶ_5d K9~g=y⫯Lދ$O=y]𡾦o7,4,1^qq H?FOO]ۊƿu5UZ'[f̣;6ovzucGYc}݀A)AQ={e;w6F~_3'֭*/)  ~[u;[LZQjR&/+)YRsA3f 7xyǰ 0{&VWV?u_~f2m |~I@P=a@32XfMSaAX+BG3#zd]w+OKv{m[6$%$$W?AxfvHƩ7vǍS'΋r ;j|۷oq響 b*<%DɀQT- zʗ^x-*&pM b<#c80bz6ՕO?|fQ1ꪪԡCGO7x" DEǔ-޾y=ѣǗ 6+J_T~^cm B+,,:Mn4Ӯ63+3q;Hv'eP+ qvȐClxYG+U*ARzEF+ٙabxz/ :z7%JbeH~**J(>y@XF L70/44\P@'C2a>~ zEE=[I : HOv>>>jxB ?_$ q0Ol|=Eb,Ol1%GxJ%60O>#F޽c˭u*dVvfvN4n6k640:2XmV5CU(#DɊ(+Lj~ "F<ءssz;` dnN&dZg tW_ 6wW\}4m C6,fbRp{."6 bN3b6GTv 1$$g!C']w͍CRSy #F ZQHhpдa#F8ȑ#jELA(R JRۇz7ߐn۬vt`'ࣙ6!(lmܐS&cP6ұ#!A!Q=x; Eơ^@61810S jkN<3/+F>-J 'v'@m LL_h^ Ъ*+axb3z: LJ2Հ74uLD`H ĠW^q‚}v 9U T>nq&LᆛlȐK.:tX\lߡC~]A!AP@[{6+ojLb=<"Ps` )-/Kr/,Yzŧgп\)a )SIJ <[T#8-uhPPtvAHƑ&MZ`)KH S* <WVVA5BÃ1b$LeК=٫Gt5k׿_CcO5U~ށw}GEExV'!(4d'O~0 IZWx{LڴifkBIKKV[S2|N%Z-&o?~0xH*1&*dԴ!u@R:ꆆ L q$#cС5)Rsr:tE=#>@ZQUU?_tL΍6rí3OƎ7ь3iiJJhO?lΉâ׭_RS{?U V -f[|\(KW "̞e,>9|,tONg=xGT4FQ b^wqO͸:;(f (PtEEeTk6.XMDd 4  GCTRFbaoĖԑĮdgY C@kWPVx $)UWg j"(lV0]+d[,6BJ~0@ͨ7i4rQW["KJj"T+fD*V顁 u}YU<,Z-o.YlƝw)t4.Al#TRdll뵍F+`4J~_Lj|j[o%S07j=ME;uFъ ,nLjPA€.l=/}߾S4()uWs%Q:65Zs2"/~p\ټjU +Бp /ރjyھuwzffYޫ*+ަyaN\1uy P"H2Ө-6hNsyAp{|ɠ@Qpg/>  -zK؀g YS_ˀWZ s x`x)T,oq_%'˦\5=Hܖ$==5$VJDzTcA(G*2 dD#}XV*QFPGZQ2(u '6|u 8PǑWx`. gq!7Ir!IoJ U8K? H^}uK^kEβQp*EP\A Y%C5x*Мgae֬?R_oԋE,`&?3HOL:&S~b)giHŴr̟bƌ6jm+ks,!O}Xl#`M %4$fH2΍9|n4=s:s#D OJjc60G3`;^@x.i=Cu ,\KBB|P+۩B+t1oz BI{IbNFj6 Z0[@m' Oi4K\~ZܔdjxH<v*&Q>A}.Q^~tߺHlpٷl)kě/S_i(*;kB L䘄?ob> !O` % `+1\+T~jň%kDnț/Q*Q>8K#m9qb'2ٕOȂ%3Zd A d25[CQ#PX5KvUTVK `z91uz{5<]&؂֪F^"{톭ii:&}2B'O[,Ą5M7Ap 톃 =C7ևk/SṲ@Vr;BfXrss釼N1;;PU" 9B}ˆLC{wmDƵ:IN%4'$_Q\LOWӧGHWb9ᗒ?FAѣ]ӧOC{3YYz<'NZ_);@.!t~|(.*=s>sn#C20fDWvh2٨h?b3zX#|Xx 33'?+Ėx8w}>9s>;n(u6l߾ ŋs̝9me~{'ֿ ֯_+3so/TZ&!vɵ׼gگ?qoyM[ۻO.[ytɒ%4s.;FVd5#+Dݺe'˩A[DhG㧏?3ss ;s/{fTZ¬,[3bd&}}ۯـm*R:x𠗗g8n9˗gz3|ѢEg =OAXl5H^^>}zϝӔJaƌ'>jf3P$H 4p=rT*𧪪jڰ VSPȡo~u{xaqNj:9ϐCKYe2MO?ӧf)"|;x?4ʣGc TTns? FS l6VL0 N:AaQiXXZol9%  Puuo|rrMxqO*'O1bں:G1 IP*SҌƆācL  s{xxVUWAjhe\{+W\qLz-:S9nܸO> iu׌ݻ\qŕfeĈǎe~@@.L,أGK/ *RtسuPr􃅅0% }>O6 蛐tqBlWGr}*++4BۻHXxk筯}B68%'rJ9_oY^VV4P#/+O~Sa;wnINN줱A7Tܹ`',ð0$ =^'2Ar_t:>!!Gpeš{j!%pb:O@y1 oېw*,1 q&KF6ePs U狊@o`eC"}I[[ťe'|f>1tJV؜[ƏHjٌ]8BɎ䂱6.+scً ĖbG֚!yQ%19"H 9貛5r%ROG ʈ\988ӡuJD5}AI ىQ|BP; q)*AZAȅH)Xyq3&s:R"[F:JcڲՁ]g&f>~qtrnG%kgéJnzB %kHS7"ĵ*:wb!P@K^ qypCsl\m!TC"\3*xnx>vm")"u b~"AmrJo>Eh|)bc+적  J@@Sdr:t".ҵ\!BvA:AdGtzEWNF V@bIoyB}}]´:9EE(#oZKtZ݂.U!`aC[ȎCTb3 l&A_qRĉFv]Ζ4cXpMPctሆ7C)BEA\/r:{s N&J{hjʲ~Kߵ%/;}KdY9-K:7GiH1<DEB:N( s $3)1g$F &UVX>O?OEH):uliYr[CmuZ4nrPZ#&R]m!VrQ-Do3uJٚٽ׋EXOT{ikH˒qn3#JJΔ&D0`'镽@RxV 秌&1 Ņ$"TN˒[Ejjj }ϪF׻Vh+**<<0 $LKJ3wqQ 4&!((f)2%%eZJMW7\2^uFY=ϻKBcȩ\"* K|A-NlunBhVވ2Nqô@Mc^z7P -]|Qx*ś@f);;Łe:xa0B w{r`CC}FFƶmi9YYٹ4j| _wWꫝ;wؐy!"72]Pڑ _/Ѩ I[t7޸y3gڵ{ܸqJKKH##={*ׯ_޽ bbzo۶#F?]SSSVVV&ZMAAn$ A 7n!44j={|y/bmmݏ?.6mPѣz<8uQ˗/_V@aÆR>tɓ-((nhĉbC$Έoi"cupR֯<[ +0 "aKrVsi Jft:ZJѨ.]֣G/>s|i r_  _ct ~5fyyǎ5k/Z~1)++%hOXx⢢o]x5kd ƯZ9 P{w5jڵk`.߿&;nEmvEZGZ:]yvq8yvB|Ӆ%묄$x \+t"]H%AoӲd.PFtʔ)e/ 7d46%$$ 6lGnXRSSgF]]@@^AAA~^;s + e n)::3;w#.ED4iaȐh]RD.JMMa, &{='N c枆9`FMM5} S^M*]>]Π!Ibr!N3=\,qS:tvu(B/IX$L@(q$`MRtѣDr9\=hĉ,Y:A䕕WUUlvr|s&% 4_]D|zzJ/7ܹsÇUqϜ)ZG:\fk$ ҄?~PnGp|m~~Q[P 6ACBA0` h@%?Y&88 SG жk/">B)N x qӧ @hHUE˪*z* IVd=#=@j(ɐ(YIs&:1ENfy`ZuzZuPF\\!c0x+008?? xOdd$"gʔ@wTC8S\1dHjll\``2֭[]}' CBB 4pL*ֿbmmS"""f̘O?z0hPرc(CBBڒ˂p7egOLw޽W^y%PvBB߀ɓ Mꪫ8~&ĸzv_Am#,u>oƲ ,ŸiF':DKLNNNa(TV-f ~~}Pe~¶}6iS^z.o8Lbt\VjwyիW_st^ Am^;EN6c=~W#s{!Hʕ+'O x ]ڤ5!ݴ!J4"v=9')aQVN36t=&8-[$5xy i`X#P Eĵ {L27w?!_4!}A=)!eLL[o4]Pt;8$`JPbbsQ]}TB{9ЕvZP5/z?FڊĶ}Kt9>R&T*CCCA͜9s…DDb}P]@KDW ER*b#t|ip8wltdިA鯭\NԖG:H4$!ֺAz xx}uy}ܣ-6ZEE*ꄋˡ%TuCi:,/ 6Gzw!m- i}r&(7nX]]_P`46b6I-pJ, tr\?A;gtqz`RU(:0$n+۵F*ǥVӸ­\FjQj2El3RHzz5u߿GC)RrtQrwq@DZgݒD\TrN{ӕ6)hkΞ=P)9*::y*OT{ o)% ugHV+h q,v"v #<̅FD2ݎvs;"ԏ76Vss)%Dj3:dm"p--W .SН_W~>EɲV\FAA7 =)u(ٲ:7oȦܗH| [鼡C41B1N9IJľ\FA4]<Zڨ}/t5ԡzNo{>Ҁ] z-Vv! EB'֎/!ljȥEXHG\FYDv t|ԴZt$9@PHv2"0-cHGҜHMH, j=yҴ 7Djt$Mw | EںoMvBhses.^GLZy(ɐp=r4#!rZ#bz\CPt:],:ɗ8 #gnH'vly[|W{4 {H$XV@ Mi8"_~db1r/h.)qFz>]DH"JDFt Nz;nawBq x6thڙ3|=̝ipPpZ0_?mhh0 Q8`398.zE_ |֭]_[W[WWu=zT^=sHUuuu[~}uAAݻ$pA\~鐐+hOLp]wvwυ!lg“P[[r@#Q#9s[݃z(oܹ۷o/#s4(%44D2P+xli6y_Κ֭[fXTk׮?{,ի#vl߾{~S3f8~D("Y2:؂F\|3F@D ~@C m»$5 (lO-Z1ꛕ|Q; D[A)8ÓVH3pu.byit~ގը33qug\aXӌGݲAGy u'nv+J݃qfrp{Ag YhN,99nc>CfKm]D@rzF;bz(I`,TC5Dw62K-xD{p< fACɱPTg:}=Ɯ7 -sDObcxΣ AR FXXN`Pprq[_Er:4n*:TUUo;_qDFrOj3#^0mD1tGcGB390y8?odqot!+lSNÇM aab3],D8"jr4D2Bt? 9cJ+:JLd(oP_]ea&$I3Os7%/7SC t%(WIv:/:WU4<JJ+Y@WciGpf䫢݆{B$ vPXF"N8$ =F."\g#d49x; uAGP4LiG0cNaB.(\RFtj+C%f-˱3@6!)!ƌG=Kjw>v=i7Լ;6/m!sB3޻A2ΌәCR8y"2{aA7V(\aӐ pӗUHg3^^d 5ȪA$$!0C@lSHh fI@]Ĉ]J " 뎡E;(oa' EXЀ{R6P#C7 v`Cѡ I #ĻQIRB!@k#K0E:!gFr`7[nh4f%Oll\ISHjիx~0)A&窫krJ B.AhꔂM}߿h5#$S1c֑!⃏)<7u}Ic @9H|i 7pi=)WBjklVɓ']i-|7o^\\IəXzccqb!pł7aD> /??W^6 ՙD嬵OPE6j37 c6-tf4 +$@אip tt: CY+8kk])wx!S+ʴ\TH .,6?H"g>$;pB$عXBs$Gܥ 9}7@r/2eʔ%Kt#Gh6l\qq~XӻiiC }98 !pq:/k_|샇tB(m|ˎ~m"D  TшJtB573\3wHd/$\bIOQrF?]A"v ?ZGxjQvGqM3ٺ<m]$iL7XKb@b`3꼓/.aO |Ӎ/Z֯JZ)6_o⋵kN6<%%y̘1v錡,:=! lqpt5ALj  {WGH÷޾gm=FBU^-+v3g⏟6|ի@*(JA(Qɐ=8.AZA a:`1`k%xN bTqB])f\^(n)r,0 5"ud^cDe_~9jr˭J[oMǎUgBQ4E#DdK۔0fh2,Og-c-&934)0Xr$[#xlGw]T3i͓Ry{1A^bBA Jai@$5/Dn@=BVZIdFL}:ZhWxP⹄N;4>"DN"AGKby(g;0)13[ .#.D0"1x*&:5 (l~kkc/%m$7/kkX>{)o&?w{ȿ五 (mDҵ\ @t iJ|i,/^y#k:+=\^Cl[1Ʌ[im0@t"c3ƏGsjcxZ8`,q -ݏpm#,Ed  ]՝eD08LI){/8$TJ=wiAz׋@ϏU ;*,1[A}.{!ICȿ-rtur쥐%ƬQy òi~?N)f(06oK&L<\Z m"JX'}=07Qɡ\C)2 :(I bMmAK&!,o^[1oY;vΧc07!.ĸ%x.!zI.u^E\݇e7Ie膏!24+ "g=#|._)Fλ761퍢\_q+>;˲cpgKH16<~B:DGG79rjлwÇFu| z033f_@\_t骪} `+** СC&)&&&((ȕ~I(?11=/$X,y uFy O{A.TW \jz؀ɸ;wرrMwJHH>U( F}ΜO'M丷ǙnC8e26k氁^;7 ^zOnOJJJCϟ?f̘G}nOK˗/n^"5kŋW\i6?C\~A>@Rgo[wuPE󁦗.]:|pH?;8qD=Zq3fٳ'eBW*os ͖-[JKKg ; 7|sӦMГP+(j f͚vo5[|)fOg[D)J4 9Gtllc_Rr<Ҡ/^ϞATpEĥ1KK2=n 2nHE0==W_:t(o`w5j _|*n:rSH!$$D/[l֭ =. Ҋ+`$ė,Yh޽6l ={~`3#sDR +//0?8TH߹sa… P-W^y*4_~→{iL?p O?͜9sڵ@ea`>}X,pP( a`{]!H {M֯_??H Ϗ<ȵ^ ~N/IT u%C eC/#{XZ J/["kvPJ93#$$?y*00 hԮ0?nCYH8Ēi\<0a`QyO?4" 7@Α`(Dsk`3'@ɟ9/ *(9T7P P|XX 7' r?'ɓ|1Ps=z44= ㏁ReO]^o/4gvkXJsx)| ,iմ| yǯ_f jժ{jc;?pȝs]R5ZszB`H5E@Aiӧ`$ J.:&)nܽ.!.js"sѢs4utBC5z$qA{0Ayj eVVְaî*HG$~ C 83a|fʔ)/pbP``L[v/p8@[? 鎃Dt=I3P #<^c%>:.Ñ_yedmV]]7>&tiT(}בK*K5BgIšӌiD4  x.@=~@wi)Ye Mi3wP FVR=2!zL |@X4jFH@Ph5x*p;ABŀ222@% sVFd:3~Rmg$.4o<$.@?Ph>9Pq\ӌ\st R&'1 8Tsl {ԩPcOA3{P9Fs݉H0m9&S9+u (iB `8`HaD$ (ػ Ⱦ1/B!I(,0$( z_a|007Gs(~r'G զ 즛n@:ܠqB2Pg`0ǦN B`::Ð!Cva !nb&3Xbj@́.&C[@Cix:7 _ כu0tʊ|卉'^\q6-J5ZGL(}9 B$S#-B :]Sq57 j+@uʪ(J8-/?rdORe-%o5VKY*0aC;K8贍\D}m#yO8 %tw:ڽmn1dJݱFgwY?1`e`'JhΗJ#EmSxYUb>'AhqzוuX@ku^nn"׍42W{\LڔemjnicIIJ2IPB_3޸ o$2ZuJHr81M[EHrֻ4CrC1cW(~fz6@:%!Gi l7"< {R݌vӞ‡0H"/J^’ry3TGKtH #4vV`Yy~c _2v+51mz Vrۡ4 ]JW_bLEj=oBC3=}S\ω nȹ.#݁? =kk %NcHTn9.vt< BddoQwЂ;x)a4~xRi*7+8X'\8"a+]ZNSרgH.=`! ׋rG:7W!Rw]GF=BK^F62_AHJ֏ZyrQt4" ADrư&!d g1flo2dSLqV+R;G=,G'Wqȿf4AJ1^G9[#ߖ>#hnA7i^E !:D:"8Uhk_FSryNzt0D\Y7=2(E.g!ֳ$$X`G#~w3Ê)Ϭ>8䈴p{׈*E4Za[/OFDG /499Qx Љ*I=,®IWPp8=vܷ ĢY|Egv-iBBi Yγߩwgv@^DEI^R$}}7 ~}vvvvdffbfB7lCFߎ~AjFJV%F[~R g[_N4 Զp9s)PCA81ig͑ДDR`E"ND"q{΂qjQ:>V+%|D@8n'6ntyd !ޫCnp1/t4[rh9)isQ>NdHv⢕9KкSs׊mᄻh^w֪eFGQvs7m(aAuTw~#PۆQ&PP$Zq. }/GJFj#nC -3qum~z-jǒDN* Yȑ s֢UG4ZjRo]JnH b ^Tc%.JCk jA t.!Bp4fs_+ъix߅;ոY(-Yʉ<HQص}^Y2"D&(2v;fhwAJ7cY@> >hbE t҃:tol?%u12 (M!lKEIrh#.@~}xsԻ2z^/y¨`ف2 PʴdDI{=eՉ~-?D pwL 'p_tG wco-$B$[%nFյt'ņ:t Qu thYdk$5~-H0Q)u?|ғ$׃T46mQcSQhaNG[R;*)@>(w.i Jn||$Y IϸzO42QOdz_-ӊ6F%|:<Ӯ:%6xu|n_d~-# ,U*'*or'۸Jk:f BH+ߐYP7h(!\nF#mᷙ( m7j7r7R<,䟂6BI S#uvl 4YhQ|qՍk9q]3VwUSsҵWɪUB4]Uy}8jןxЀkĮω`[V y3Xi愛m1ɗYh5^X٬6vLLAHH%FA@6Ւܡ׎UF4Y]xr$;PvT__Ұ"ޔ7 YD0˙"D  ~_K*֬2A&oрX1,# &t2%IK?pz/D,Z9^Stc24,p{:vk0DS 2A\4 ,q$p8ݻeq=sȾ݄Yx'Z6@Jhݐ}lD> o Z +.~ݻ2ZI~b gզn$\EpCG JZ(n7Rz ]HSpR0j.م} !a[|h3ИdOXgYs'UdD$>C^IXTTխ45(k<Ցp 3q]&>u{$WО>YK%BREm #>:CW`hTIz/`2%sЋMVH"-`z~!{Iˆ osJ85_Ҍ/FْmD(z:3Lb:҉|+PAQxO=c=˲L>YGM\.YRRR p’̋!I;|̨jϟ}z JUg-1` l)/s^_~X df㶴Gu8I&Z{?DΝ2, hi׮]mmmMM;}UСʡX۴is.ws8فz'N7pmdM톴 6fYWSSB"3 ;Ml˖-;vlm#!,ъŋ>tG=p3};e˖z_T?zhvv6#GTUl6SNNBrCOWYY ်闕WOp ~޼{~+$PG?5kր=SvNky fHLL _nM<)Cl#!Q09񯴳i-Z"^v_믿qc?ҋ/ۙmmJ~׆ ;:={Y}]}W̜9+##=!!KOO{Kw3΄>1cRڴkz> ?o$_' I)嗗]vjݼysZZچ @K.y衇V^ ?2tPq.е˗/rW̙3JW^[.] KndO> Ν;VXX8hР /<;ugOO=ׯ?g{Jm:u)dx6N㏷mve]wݯ+VٳW_]'x=G-(_~ᄏ Sڤ]ۘ}eQ 4:H9={6C/ȑ#;N:?ArO,p O?tEEE޽݇JUg̙by晃B7@cA;>?n ?wމT76 0d^BЋ'yu4&4M{}6I,?ХKo{?cRbey6B^!8x>9N8%}Q:!"Y!`Ã+_%h !ASq&h)6xGYY}n 755-7=(P$B-#;Be@]u؉? hmv1~HļPQ^yh(A/ЏD%h2xzUh &nh6zhhԨQaH:|p8۷/T&|ZZ h:wzXByBA"PDi>(hG^/$;@@?'d>,f j2qPjQ=* O*IEG2b8fL(}vp*tTW}]v4,f3}Ngq;.oYcM?W5A q'O>3NmOM8Vl~M3%" &LMYMdKcܐL}gCF@V橗Ah1tt⺐<2=@8ؤSL!˄d"y굥,=sϧ.3Q[#hD25 L:;vINJd(`2\$鴴k XѮm& EBxhu/1xBx)H?D SO&ƤAB:Ll`\D$<|gD!BP0E&*`0[)Q1p=R`)f-5f"n,#2b!LnT?itZ֏@:MMJjFB5cSbNh\}j6HT1J4PʶZl |ZdݣXh!nY$2WPyj]؈K-&4%&|BuQie"Y,UdNn4Nv"5~2z<J J(IO<]FO b#2<R[g[Ѷ8H%pƻ1a,xfP[!(,? lۺbhʛ9E ,Ҿ},U tF;5$6BImۊ>cH:z5:t~۹s,uG>|@͜jR~[7Ft|ɜ_ B/6mٵ*%$*ԫ+ߥaY,b TG :.&AnefV@Li%Fؕhhbٳg;Suֹsڏy<7m=KO3]cQlYTTncHHH̼ˠ/e~۫woPӦMۧi@ƛ$B:|;K/>}k׬ٳMN}K.Gz뭴ԯvn555;zիzO ͛?lX׎;IIyJJ;uy!##(i+3kgggr-PqA;vH;@'%%͙3gӦM a%rk9l $ZyJ:b|I>$>UJJJ6lPTtUUU?<̌~T /xS/9thOgK.5kMOO1s!C^zEP|.,,|WYYf5uuhEź~{Ǔ۴i3cƌ^={/|?oӧOy$/~@6֮]裏r5cA}g |O?4-- 4M+--Z+PsJX2ڧdkt"=-І vu9:|sl jL޽@6jԤI+ϿJh1KtN"cnj]먝p.\ݧ޽{> .puHO`.-҅Jv җjرgqFJJJmm-dNݻW^~4utgF8N=:C&71xB U=jAcAS巵kO?ʪ*B1Kj`QQbbNPu¯>fr~+W?oHA7Kk0Gk֬矇zbz͚ŇB,KzV^?~|EEwJ>= ك*tNZN3jJ}&G-ԢfLTdbpxA/Blܸq@[׮i`\PHY9هi߱cuu5h&HvժU<%Уn{gA}Ç`1?41{w޵kC y駟rrr  衂Fegeee]:I)-С(rh/^ pd _O|#pE;euBg[.Ugǜ]sss,լ$F"r7MC8D%% -頖Žc= 19^b螓0Ǖ`?/SJH9'p3ѸmcGHsg A"ZB&8Z5l\wwTf $Ey<"z'|Oy3L62+Jfb2ǀ@eeJU'pLR*U"`17;<chDžXEqGaY2##ran4.Xt5 c,;d6¼ r < }LLϪ#,2K^Uܮst6%z4Ѫumqڱ {۷MߖPoH-Sr|Yaj+%ApS\"$J셐#3%wKI%,޵kLj/>q}v9[{:[ӧO&DI#򋯿@aUuW_}5{l}3$`BH,2ܿp0nvEN-Ng_!]v@ezJJ|޴/O<>yQrm75Plۿ=׿@ё#% [YUȤ#G},o2P}3̙w_|aΜO3z<Ƶ?iÄp|;X3>㄄WWWoڴ jϢE=\.ݺu-[u;?Ӷmۂ.ܼy3hM/x@&%%*$ .v رc?+8rHPtlߡNC!7dU,֛|pϗeUwVBWwԁ HjMDɲiFUQ{14_jy^xAo֭Q~8zh] jNr?ǩ#Nm>C|xN&~WD:"BKည_~ھ}]w5x`:RSS/ nxPmv^vvI@q y饗t͚5  Թo*!C@CKJJ jd@>iݱAƻ9'{ǞxmVnw=\WAw۶~̞=ePy,] O ᨽyᴴÆ]v믻'o]t-,t 0O"^o*72qěob@ 7ȭ?:BS޹sgБa4ӻwoJ4"AAfffr 3bо00{l6UP}ݻwC7ĝJBm\apʛ$e֤Z'_,0D,O`˲[}9cx ABX0F @xҥ0QD;hF6arCX.p-Ml闍ztJݺu+ A o(˷~ޓ &@$##&w^}t<;u Za.|y\>ؿ.ץK޿|z ={a7$4hѣGE*'eܶ}7h=jÂ7ؘ3C+wuN/1ݼyu! σ{!F\n>%32zL8R"kJR.ڰgV-غ@%,4AP)r3ZKncAyDM*e7PCw+ӈH6IIg$`&$@FNDI: !X-Lp`:~eiqlƒ )baFrvfG^g *sЯAh&eZIT2onDnfOVAqM`lDX0/0q8fSm0-VП$DɨEY}2t ?/7pļj 5m L1`b,H4ipnBd3&ܤ>:,He^YN'&ޠ[IyG/clx6n҈F16vC5XXP`B)N 2_cC$҉WTVU󗂦uEm!Ffeb" =AIzZĄh4XMS>ϱaM]!1gD@dYvޣjJuCT>|A_Xdb"j8TcZǀ>=2#YXw 5#D,$"xP#DhyiӇ-HJШzuhRGSDpqvm'nݲff=@\af *1;G!?M#>;,bDgΘqy[6QIߐhXmz͖ _ݐfXl9Ϟ`OHw yIw-MfGG 40G}@|Y$к\_z)3#λLHH8|3nIIy晧*-JHLxSS>ݺ'&$uq >++kժU+W?~ܫ 7^x<555;ԬX.!^02 DʔV'-pBr3SS9_D#6$dvdeglvK/_y bJp[vv~[S]өS>SG;Pi>lٲ}ݼǬY+ґ#.u={\}>O3t.+i $hQzz=f:m,-+9r rܸg}(^oAS5lؐ}z..''Y=qGjNS9e=9̐F3է4b~J} ~~O0-5j@[ȲiiTi$11N־]iP_MtM'?a4KNVǎ˼@.bZZRՙ|SDdGRb£K:M՘*nX ?~IWvVD˯SjlD`;'5! :;3ϬQ;~uAD$i=Z<|ЪM:Mㆳ  qednNy &Z ?E`cO@ OkV" <7@ϋ0ggLcCD$QZ%z1OxAxDd#>Yo.,X pxD@˙ B@G{^Z+y"!\*#Q\_]e5"< M7ӧ4y{6ivV'>bIjڕZW>tj]CfjlR邍ݬ#Tm[׾߮{BL-iVۮ];s-?^Y/<>bBG tbۡz-?5կA)S}0Wg]m@$7nϧ%QZA`\^zQ^E>JZzZB`빖l#j'J#&*6d+U)_T~|^M $AE⁍]`Ch^K0# ֐~xtwr˭wkjYt3.#Š!NFNSpu}EM9_؂ =W_y6}g#4@o|\{{|so>-N6Fμ ^D,"|2{ﭪ (o}nN 0{|GwjƬ1 2quṙie_!<y=$&yAZM[i*XU E't^' ٴqϫ<WS} MPd^9y#\=$Q#QXjoL:yErњu6$ͼY' Ԑ 9fjٮp!)E&Z*.n\nT탔!7z*$y½*VC!jP)?i$y=-k* /| Wrɲv|?o' r Zt :u7lLAGF[с{#d%-0B)F"4:6?+3^SO}͜s @3t{oEg}ކ |3|p5޸ZEQmfɲP%iU ThQApvuxqcN¼>xObbbvv~[lXVo~ݩyΘg|W|NQ)\|2/?3 6Kof)):HϷܹkny]toT|;"IV(I%-|YCwr zH\ 7hVß~E߾5kǍvOi¿_Xx`565=ʫ<я?|!,y-PЬPh P˸]#wDDWX`ý[v\o뎔VUVTLZvM--Mwo(:bi5%%4wο>Go㞤^ߢ_gݻgɣFO(|ӛuA[t><#%;PwyvOV~mͼys)(GpyLV׸Li޾hQGm>G߳o>aGΜI}' f* u8^Tvq ޻"-.)UI]x`?.ܴim[WZŗ&&'Ϟ=cʵ7t(={vw4錳jjkyY$˥^%w][nԩ3n.x=z.//?TtcsUUU-3 .ݾc%?;恊e=i$%Qw?Vl#ܫ+V(KI?7;;>CU,>T Oknm]C &wE۶mBzwѳW5ky?>}iZxjkjUUsݥe^GJp1 dnUDh ,65M >.!3CǛn Y,vB;H,_ˀ/tn߲eӆ E*+!/|`];:PtAM 7|ҷ1S}D1|@twvq Κ޽7^7)1Z1c&7g6jܔ)7-Yn!ڝyzΝ_aдd{ؾ}͚UHM/Dc{a#%%SǶMM=:wuCVAu)yy0j2(Rɵҷvl%g#}TZU~ AM Jyz8G0]aSR^9VD $>z鬐H>RÕ0Fz*\6(V`S<3ǝ9n8}jSy_VBjh,H>Q Y[]tRd:@UZyMYw>ك:B8>#uwȡ#w Y 4Ou'$/4} FUNKi 4FC扜^NMEQcNr?T "7) ty<̠=ᎹD0wg3v Sԃ^LsYW@ӉH Gs3ۦ&C Ie5յ"Mp-637ex%e]g&'Ǵ)7o5eXP!ܯY1eJ;]4N,އ*kYalDQ߬幦TGIJ7 %&[Pwz Odi` Oȟ8;v> M.(QhGy[j<('  =222.b! (֦*y]E#䇴GpD'BzB wWz`Nz >N'b`D6Ks?ޙaEa28̱$D"(*A%8ݞ&ybbͅ{[,T2hG#FVRGrc71}EƎGMtb 2Q K'"A jB#ӎXICt{%:j:yjMP %Sr #KSDhnMp $o& 9sYaC "DwM! m"wCD<6v蓆\?Q#i%-na{HSND#M[DݛWMOP $'<@w{t fp"$[1 @Rn,l&"#6Z&Z4!LRwq˪H~2$0e,6Qu:a28\FJHYD"( IH(!VthPl“J$j%cQj !;AOHAFk$ADDQ6DDOj3,Y痩 =%\gJE GS>İ+kH=1U/39BDKP\2SL&u"MA>[D_o׌0OW=:DT5f_W*5"94P"4 -*1ĜƨQ׾9}2FB&%-.:#0Zu$ j ҉^+w} XH"%N$*2!1ʐΊ,0AD !$L&62ꔐM`OBIeĘ`ZugD'BtSq2r,h1Wg%) xIyz"(.LňLPQÈ_G?bDD3w'~Ĕ$ܡ̸0!A@44DPd)#D*cHLj>`d.d _;)e-e 9DJ'urb%BD"AaUߍt&+1FCߙhb,bJlQݵh) 6Mxt AdAHШueƉ7 }f5fg3ܦ'RR7ߙylGո@JAĂIcdX\ IYMBp,Ap=JC7l}n&Z3b"6#ן;au=5LFQF!IYA2'6A ]װ&- etpZ!|K[P'~gDtAP\2 #q$$ jZ|-(C1G$x BeF}!/F| cm#NHID8D A2qE&8&=] uZ{4tE>*H 2ZT hd&Z KpXʸ ePdb!![g辄ذ_ L}UE b 2AH 1!OsV%0"ju)IS4HH5Dkau4׆E(D=+L ƪ!2$F͈Z a~% 86##Hf#EuϦvgmAKţHnW8Է[/9x˗K.۾H.5N/.VܽWf&,g]:ROJ H=^%-My5-DgL6U.Xv\WA~:$&˯AףPt/! ғ7ȿwYe'Ȳ|N:>L(c` $=.cjߏGVcy6m%EK;Y. bLGQJ@C?;p |o:_js>/!u+~[~1Gɂ:t׺fɧ۰ [SVVYQcIY/{RPjbW%~1 …W\|ժeeU.]?Pn$HHc} S F%-q@H~Eh-LMIJe~ɘ:ME `\ ?+WTdytn4,P;rO 10~&L÷Ҳrutmfx==!_ص{*x-[szW\RxC7v?om>W_}~h`gZ p.S*n+/5m~gVJJgy_tɋ2O>jڋ:w;s^z~=bw/bƫ6͟4ޛ:"N-(VM GUz|^OUԪʪ ڹ/>[R4&|?pk.:gX7mzO{<ĄdhEUdUUnSy}/̶~[]2 g}Rb5Sn=Tx`)LJL5YR . E,6p|w8ÆwܶdN37àC׬Z ? >oYmE>`0$6| 22ꪫ2K>z-!eK,$Mɚo(_ *}1|ǎtz≇.rIc}Ν5#ƤT U _Fמuy[Sg)=bZy?}>ppʔ+s?e_zՋ~/;p_eKڷσN3Y9\z՛oۺUu:=9ګo&sb?Ap׼޴nszZ~=9{y0)9O=Xj1ge x?A WyU5Dd.6Ϳɩn"ٿ>狏  i o>c7ѱcu(2E @ODX;.̜:C9 S}>_nvXr螹I, )Yf 'oM(JGʷUA}7$l7a0~A%.QHZ]Lp.F+'c>s 5ztgCMBKt:oΚyW]~sIJr;j0 n2˃(>'ՠG5 ͐n(>%! }r=;D$ M9MJrUU-[uoɲ펪ZX)Eu޽SCm20X-.9)o]9#;dzhq.64s^ ě.t7WYz,zV1`ꢰunZ"6,]j^7fBԈ gZ[ҋC#nh%9Y( [B)z! 8Wv&nSBb'26X3_Znlr ^%C+^Yy!g6&M`9b+p&gVh)`iFXDA# Tb(1$ 64FcL:2'k7RV" 'O48=)ϥ6О(g 0 F(/LXq|1A9}n.=.rc' plP8Y[ݚ$ޛm^^}|tM+JjU|^O``_yQ?%WzLo64Ñ[A456w-\4o8 ]CP@*  _eᡰIÞѕnW2T@k=VFAsyrۭba"e*gVJ \YJ6ZTDp9[P&UtUA>B $qiiH63;?dX?$>(Iߛρx @(Y9;wYYc(GKJ Q$IԜ}>Q0ɷʄY] є.q)$!"Q N_Ld͋DE4+j>xEDiv[f_ Ga GJxé!ƚE[Z mKu+afc̙CrÒtp_~F=4%280{pڪ1.6uI&,jB=#{Z2h纏  Es&)O>]V)OCC=b~~QXxQSYݢuq.Uڽ[șW2'ۮXGHH`Dcqa\?[$xV0bڱƷ.p*~W{(s8qbbf`PLrqIDx ٛ2ǝ= drƃ  Aܮ.onrP; ]0IМ0a:7 ?D,R8c>33-?,p>7Ȱg D?` sxxF7IzZ:)beb(V b 7o=784Fǹ.`ZH@ e?DeT`ZԠL}" \:n ^PKq G[{AȊy/߳ ’2IB\ ,U5׬vw4ҽ "a|]4 W^W%JL Ё$8 D: gI0ϝ T/)QRk p7t-~Ԭn\Tf0TTPxͰ $$ (2iLYJh^ <>N"ăB(h/irt-tfPS[tJL*؃IgBͪI$&ȪzAb5jYᑐ)#-GZ" L4 I P 1"0b"huD #ûFxI>-xo˓O>~x6 9Vp-$0lH8ʺf(Wăk_P"nc|͆]C j47n-glK ^HJcL5gK ܸq7&5[/].TӂfL'>,>ap цN LbM٭Q?OFIjgUu !@B2;r=>E4&)l.R(? c k4\ڶ}+JdשFBdODlO0n!@e%clϧJ($z܀iA7L΢ *uK֊5LsD7tIXaӗ^ä'i~"lKc,1RA tBϨ As@0/!\:9/31)tQN;USU Mp2nO;.DMPHtwtKဝB!D?Ȝ6e{ĤȒ}7]?I"q{_@Z^ ; T+ ZRH#HI[a't06ܯy+7>&’,H 'b$Tj4'E$IJD8rc(@Ί&S$>SfGD&q&DIl2&2ʺAQ .NbbLؽN5SaD{ 8rh=VVt=_*.&Dh8+U, P8hb*vv?~q''.JW"r?Ibl`8JOϰ~N1LǙwD딆PF~Є<҅BGU!K+ x"(u7Q@u]?]ΈFONc*r:ΰ8Ģ;sL9H4o nAL0.(<8w-c P*,@ g WT[RjaraY@L<-rDg~E }.]{"΁?t_q Q0&a^-8K`?6'kC*Tv1?ΑHQ~?=5'qt~O\*PJSC6OUb$> rFiPq\&&xj/qQOB.za3ӣn tg&.ʸd51GnܹnP|NH'cڲ5&;bkmk8| r gw7.N %-_Iܸd]_h6ɦ݇)m6Sz>P#2(\4 u9a(~V~̱FO2nUqF2AMP0 ; fЃs濸lI+R ȧydxH(*̯᙭i%kc_]zHWRՌilb& ͧOGOdgIq*utјl #' טGQGb(z 2Ƞ?n'v?.QŐ 23J,n] >] $+! /ff^dMXv<(B$rA eDrvCn!--m6&櫫  sp=!b6!lhv(\``@"Ph ]." 4Vkԗ@^|9o(B$DM9\,A[69bUF{6JmT&s>I~o9c D'Gc*&Ɲ\cccTBG1}^d6Hv>ng:{&p( }w*t낎yIƖƋzIa P"lD(&!xc0'   2tLF= (<EEML%l Ppa ](w$ eIEPͼI Uf "HB WVAZ^9yőCReAvjL$>s(1<{S8)7L~;zQPRL$v݃!]' |4A 16y_jlI!IT8"2Q{U4bJ /?gՖn c2kf+8|.ɆVTέUj^tB&R)TA }9B 2Թ"F6o] >ɱ11::{NN:_D&6 xTVb9AW7sb^JE~$ʼ+~>8l Oiqq w`dX8qAOk3d{Jl B1pvvuu}B.pC]e `0#+J` #& F爂Lj8+QkƋO=a2?}MlB~Q/{_p¼ յm< M@:HSbftct ӦIE"+۰b(vlCem5[[ѡ^a Ҋ aWocgcҹ@O-Xn}~g"9M40Gs<}Xx!Lzmf3_~r\*yv+ZΜƫm[QU Zo7C:,[{5ZNaYfdϿϡ4Ӯ26f[,CAq05puKס7~؝iƼEpZX("#-8 /8r(a7;ݨ+CgK+xwgv\ݭeY&vPV6ipXF`Ʉ=H$%Y[ڰ`ZX|xVu*?@k*DF`ͭFwSyu˰@픢A2-R{}AHvtۉQ͙&0 YR w0);,`0ՇĖ^EmU1ڎlj3EfQ5Vq}C}pQIdb^Y6#8yg݅W~ rSb:>w`ZaTV8pu6̹p}>Ɛ< bvLL I0{:ֶ,Ȉv}[v [_Ƶ\lA0Ev3c*DYM5ہLrcr|")JЈs.7rK06^}믻 7^xwX6|LE (^90B^8g1LrbTmLΩD3SBxPTU {ioaj83([Byۃ-`sT:O/2)hXs> AkHc1 }(2r YN޵ \!w?Z[PTK kj>vtYyd[Yy̩_EL3I'ۧ'tHWk gډ  l Q<˜g ~YE+na;'[Pv+BδI0y9pY0:2隃0ա$Ohd'ژ2}6wj GVs17L2h0"!0qLRIY&:ބ9xT_EM~Πg4Lӱ93위R-6NߦQl,ffҔET#<bɬPhhSg*Qb>gRi6j@C)k^^޸ ͅe iȤ ;K&8`[Ow"}9(,E`}JvhG}$fZ1 $8\ Nu  IH=l~ ^!𢯻=(b>H!BE A9HG5E3p$ϩjXGFFPVV>' Uuy;/s׌i rZH===L ĉdP4<x=\ UYɸ&IXZ.Yy4_H5]u1FNWA%ԓSv sXTT4}&+1n/v's&|@9xFݬV6T"I ;H(>&'/eH/syD) {5 Z /6/֟DU'\"*0F]P"ِ[+ƅ1P,mF ܅Ae\@ v,OSޙ=r; ;%ʗ|~l 'rk񝚶DQ҈N>=m hI4P AMtCyESJd#5jP#77f )I+%V,n%{U'cZ p<`4-$v5FoD|E>xQs#1NS.SՓ0&x[ ~īp"H!3˜7i}=ܨ~W^z-#o 9+9gq?V+ cׇ;HZy粟!Z@br \\>RCH0ȠiI D#xqt~}e%V¡رݷqbK8t]݃hn?ƾ7X:7;/>•nGܦft6G^M-ƷimL gAqq*zd}q!BTQ.N}6S%ܺ`Vsi 31vGOvnGx}n?&AQt#j{^ 5|}6Xn1?4xiUĄDJ(;qE DM f:M?FiVЎwI~t_+FƖl\寁k|5șs݊E LF =.wxV>l= >+X3n3>bn,N6\؉vmG^rTq}Eym7pn|t>g2?:x;GQ+4]9SM(\* &BiFK #`Ǩs92I@b 6MGv"Q#PX8y@Ggw\4M(Yi߿JDMpTLRZbl#͌}(] ](^ۇ~\}58VzfA7歺eQH#];0L+[J2yۀs0\Z}FtZ8!jŘTbJי|2},UxWck0"g>gzX L_Lg"5 C} >.[]Xj=3 db}QH8ՠeXP7vK. WlŠ?_w-6 gZ0[:yY01c0_Ǟ6Đ1Τc<j-;*4;ӈ2P*A D' Le)`VW%ѓ9s J0fיpW]2oϤc J(Y`19v,^GDc7ݼ{vⅸ:hDYi9 K`tm=E={Ām 51FI5 ݄m6vep`>GAn>L~:'^|uTZ9^8"0֣nQ v}BF6υ# Yy*%/I5RtʚMRxm .Z0^{mNXǒSUX>rnU̝3gB]Q蘑\3u }}}X|Ud裏TkEo&VwA-5.^!VWFCYϩ⬤/Xf*fEEI-PѡF«WƗ؈ϫ%eXSӛ5u+kEaȔB-J(Q]ƍU+0]ϩ;G/{5%5RDt|ZumbmP?>7ԣ$^vGMks6ĤdCLP}ۙ^}o ֛7CT$3i ^]w݄z)BF/R- YPF+F^E+$C* lzFb| f%Hx@;r8Kޮ~"Aǖlc>ۢKϙDB LMb25Tz&иto׈"FGnu .WlM- oOH\xcE,?ۄI@/~;F?ሙCnB8%1Dgz~Is\:X^ggQAlQZKݴSQu[U{ԤDN*-H ̠40 @P47$Q丩'YOv9sLCТE%ÕWwD1OV\5zW̞b s ь)S2r.)lĨdARĪ~DsȨnhzTݰ"]{0HI^zPʤG:~ 4ts9^Ӥ~+Ã/P7z);t;7(~3"N;nEI`I86Ɠy` Dv۟{ ?8^y}kx _ Lt|-tލHF1NA/5ph#Ja"9Ԕ 1>j n}9U3AO|S OQ|ဆu@-/O;~\A;bpp7%uJ-pK.YT[[RebrN%%c -b J |>Ζ0s1=/BAA-|c0ȠON!&6 $Z SnP[BuX-={:eB;fwq0YހRB&눏e^tlD~3q# QN6v0s!tx꛱.=75$aFю BiOL-'Ed6\#[ŰPչۛzRHB$$kn$Oq8-E#$`jnUZmg_c#l9#sPD^i MBPlc?e$nc5Wo̔@(IU!so__^@wvrN\{ǽ0)k)=ҒˠfjaarVk֬`ڸH!? jW 'աhM|EW[d/|fAQcMj@ )2[Nj.V[r"ixHy.mXjZV- $A&%jQ)k=a%i-b͛77 ;hot]vT2Q]TQeH=Q, 3X)bRlAMSɗ%)dItEd@Fm)r^oj{^CRk>/Idjc;H:#Ǥ,|̣xE_\`~ 'ȏ 8uǿ@Ch&Lo~_܆%U!n#Q?š>H~AW8^zkH2c@Sq̛W֣1 iQ~qVvl˭ gz] RC܊R螣ܞHMAmc.Tq! x_t! %Ya˴suȱPnI0 .ÿ(y: |SKLQ1׾.l-7?.9wE_\Ԃ]}rjcB39 o4XɆԠp8r^1 J (Ɯf{3eP#CdPmh3uJv,\IsrŘDN`PJ"cKidGz׈eH>()ǰ4 chر㼱 iiijכXҥ.A*c)eH|S?ցːہ^#~å'*- tM.Z(@^^z]2TUUhʔ-dːzct lm!d ό #*Q2P^=Bx=5FOՇTȨ'ed0@(Gȇvx47aóSȘ/ZW ap`=Oc^#! ``X`6aZU~΄fTy?!xְs,(p%xyp+1<D Aġ_? w$ُ{No_W3?zǸOo:!~g׷1bd; PЏS"!{ lGػ{;դהn0۬hׯI &3OA: bXy ^ŹvJXpb҅x(,>uL9D3®}4Y1;EgEg ACmL48UfTvo=O@Rb+gsW~e=eOmt59 Jtr@Pwe&%73]&LdA Ordv[vvvNZk2HJ= ߑ*dL p@K>H謓ѣG'e&A$%)MɈH`?dig`=[otEo>dee%-|KKKS O7-HaP溡a7nf6j^C'-fA.)wFZSS%Fz])44wė_&tctC0 Qݤ%?݃ACɇӍ0I $MS%~#}?"VY6^^qF0 0N5܍,)%sTb ^^|-plx{g?K @xrvo='RObP-wrej&]=;A(mww&AWڌ PU]5UTL[.tN;Ocf6{,,dy9__Sb*#W^gC Hp"' xԌnw$̹X1{]-~Djz=T)Џ~{X+!Ӓa/k64ԅ1_r/[Qچ(Nk ICη7p(]S{x Dx췏3 Hd@Ȫ ׉ΡΑ9 OA^Cgj0xm;.s(JK#lΫ^B;/0x#b!Yh1+Vp,nia2Axzҙ1]^֏N6W,[`iǖ{K],ALŝ~9U p-w>Z*1!8J߈gz._F}wew%QmH= ZvLsvk# >C1=y,' 23ĉz*)ɯK2է2 ;?e{ erO7\Ӱ_Ϫ-I@XLHee|RDAˠu}Z@Tꫯ>5ːәA]+???IET"U1rrr LQ,Lκ He x$A8ma2ȑ \15z|,C|#|׫ :ZJޢwu7#h腫ᄏ1H~( ᄊ۴y{h:}ƈe bQ<tp2&`+a籶3V/w;5)#6W&G[oao='aY0@ B)agˈe,h6iA7$e" ol6iVvwށu+I05ɔKCo}x{x;,6,|ONi(-\8 s JPmŇ{68,I*la{=>ԯ\#ZG)1.2HZv nK)H,h[ܑ x Hhj;֮<=Am8lFv ~w֟Eu9So6y _ja+u '[ ѴiKa5YG)3}ʻe`nz[] Pvm=(_ lS'ؒU}1v`\Z^IFX+L 2+@yGF* 5Zcp0& Z9 Ŧ/@9S:6\{K7UaH lCA11'A2~G|̂ /P߭[$ )],UL bvdclc 2YB '\sr0b 23? ,(_XatttS@*Rː12P,nPZeՆK0(B p8Ԕ!5{*vmH $c h hSg|90Lؓqtcl66lpkݫF2P^H% PW1EHbPD{Ov:̜vÌ!*,g 2Ƞ WEEΝ;AJ# 7R%}@Ftc#:{U< zz{ J #;WQsxo<"س=I t5g`$8O&~CMnl{w?O__&מ0Y\?=˜$ LAԮXB[tBbYgW/8v f?v!= `}^ N:|608,KePs*ralCWACaᐄP0 O%&*-~0br2ځ>$8{: 3e Ô57n\ X+.} !|o_ G5(/\C.cf9̌٥7D7.pɉ|خIiD{Vs?LZQ`lTd3$$T=4ly/c&! e!,6+l-\K^ 2z5j18SF3Jx5 ;`G--1R\^ySX:!`՗,[-Ɛysz.[F͂ ,΄P`R0 >C`2d1 ۶m `PV^rM2MbR">RhlR府1cẜ˓m)m0Ann^O6@EEE)u]4 o*ǀ\%]$I&iChQ,]tO ޳g[^(j6+R Ԇd7c@}R J>M$6 *G;?m }0~H ZOGya|= ;[^@$}HIV#~lyH:vp]xm.',\TvBΛ/ݱiV\-ӿ֊z|Wwk;kW˟6ud_nk[^[hI >)&=x8ԙரgr&,^gNcȓ Eu]az<8uFۛsM'r n.W1(p+7xpݍ_? 0,!'AJ I@_IH8?ݐMf)Y[- } P0G? S`[x8J]w(FB/́'{ưpAVx{,Z0O۰f +}xūBc.CѢmW4S.(5gl# vqlG+=Lγ%_DPuIME J87r5~% zQVQK#}+R…xGcEPNnEӎ݄c$!Dtphuh:,cTVt"-):'XP=w^*ghÜyj=߂'5Ӝ6ǃ$f; )';K}WThA2%S:(sthe >4#@ \Ws# >#@i:e˖IEfBRbt7T2P_cR Dd6Krl8FM 7D]Evœ.~Z4T0DM՝XjSuuuJ]i,jjjRː1 S2#)QQKt?I[u9~6*@ꑆB$%y 9zTN2!D`X˃[dAxTjVf 2% KJ!J1">:ڂ{qlwVxgQ1M4GK+'Fxqz˪[7bE/~+0ՀǞ݆ Wm@nlO@X:4A"$ޣ:5?:nقC8r;8OE&=ʓO~- @V=#sfhb"Pc=Mt lvn,"樵#!*s6Ѧny' &2b/X˖-S_`…nv,E]'Ls(*D w`WbVQx@]A&Hm PQ\"uEf%AӶ'!kkZP;LV^uUw(۞;Z MrWT)S}}6] IJFIBvY-~㮔QD,W{vl} ܜYWdۅ# "$ EEAj<ݍeѰ#>tٯ妪 x3ښd?\4pH`N{oLktCT̀@e"j)"TN IXu]{sbdł/|@E㸤e@ebuA jG`|]A4s\]|-)g"M 9L5; wv-t4k< @Bz9ǵ)Jls ±d g;d$ɨ&™)DKB!0 gH;#/7",QI#!#WV]WAя!&0RxU!^B0 .x<lݺu@;án̬rB/u$op]0G218[3M_uU@@FE׫ENكTUe"&꫓1hv.Cb9NXTu%k XKh4^zIJlܸQEerW&TZnݤ eHC֦4MmH1 nV׎?x租8heCRCpKA4w]w}jtO85TטpXR踍Rh'+`p)販n|53I=Tb"橎hqݰ-$G*%  "??_52{ OMD5A48Ka,cga7^[ɰ!PWH90G.+XX6hіo<}\6;Ǿ7\ݺNuS/{u HY@1d2)  U)8И+'SlٳRn~'+"EN)H"A)H"A)H26In鲑W3A|"k ŎXok%XG28?}ĵyE:ʚ!|,2&/§z g`BѶygEשT&Dy+nڵ%tsBwn{u$95?q-)) 1hG =|鷡š%ͯRZӫp|.Oa/|Nq\; k p3]0vnz>u0>s}|J)`~nv ow~'`4_ wZaWJ*g-ynN$` 0vs7l(=m0Z7`B֭?=q?u2)R>~ ( ;B+>h'<@Pۡ7;ܩpCo 8La*Oymdprê{FŃZq-Mˁ.+PNB;snlk^v~/au-GyE#IT{'!\f%_Oe_(̃ X3N~Z{PtQkg)_! D2$k~-=F"` f3$#άUPUATYس31(WXDdÙ>ւz1s pcAu6Af0xL+a8 }Dk6ͤۧ"pY/Bl2$Q=sշUTW uFzz.'Ҡv}$CW#27zX8"&ABzBvzrj%' -dTvl=չ)H,Qtn>q.Ƈ #CpY&Ʈo(3T.fC%DCP\c uThm  }}`%MzFj?BN5˿ w<2T7&N`vrhgOB?K4h]p`:]KKi u ڬwh։X @?s9f)ՑW ^Gm\j?FFe~B%BVN%1 SZ$>À'N ;1uhiiAWW00.\a#p7fD嫈F}}:)_ ?H4 6[-Fv9B_<{T&Dt qM8K \?T,H&:SXkWnYk{a$"y܌ʯANnP I477W$ۨV*`|wȻcL!N|N}}&ݳg FюDV2݂XKxjѱokgwq\8SJh>DewB0v)bAoov7[}v6/)^Kb=%pQ8h7Þ jw'1 E83@:ғܛEc!tӿC4[䠤NבԬYd5'^FFx6BeNBIM~UpLGtU* #? $Lz.CЅG~*pHC"6?Cesp|CB|2j]m}vQY1gl. ?~ŁeF`:n.%&HOiX6%ċl$pul.C#4L1T1;Ym2 C3AX~܉X5F@J&Jp.@۞C.C_܄0W(Z' ͩe)Y+؈ "G܎yV|g.Vŧ7F]u6O tHf %70܊~~Cl7K٭PϾ+Q[  TƻRK*V!d:X!E#k:Kb^M% X0} =)MpStuƯ[#kwxHgPub&K"cPy`=J1_!E{_u]K` GtMǥKBe9HJ6fgB}^w43]FCj7osuǡINP߫;P' mWoQhWß1^}fP*wRׯř((w7r|2.YQ+\}[?R Ke%ST$6~+@` 1Q)1q?wg\Gʻ]+o[>/mgXaIENDB`tipp10-2.1.0/release/help/en/img/h_results_comparison.png000066400000000000000000001206151274324046000233340ustar00rootroot00000000000000PNG  IHDR LtEXtSoftwareAdobe ImageReadyqe</IDATxy'{r3ȉ`DdYdK'y׻{>oַwkILJ A 20 &arα{U3H GK {U5j _6Ne"pԯ"/咅,[3?J3^6T)6gez%gڑ˭h?ZEoŃnqKs˕i+b.g ..2nr9/{8#%U ύjkkxF#_IeY%oVmTrk&2-9HI_J.բ3c#/Fvo4*g,+1Bs~'J2|~ϩ (eVUe~6N"2aR,_9HSt .fVE7.0eB9svqؕS9#HNON=S}s<ܟ3A \v-4&ۘE"S#Z _'6!Ӝא.$_ ^@ڡ%]:(P3hyYLK3H+1/|@o5؜?Cd9+`þP]fHTVVB%~K\= ϥmS{5-)AFYH5DjyN !;fp,'uRɔhqZTZ2L^|ϛ.INH`Rz,H%*kz葇ժKU"wxDN$A\ :頞I$=*9MaIEDjj|:xRf}zxdTkw'-HrZ? b6+\?é` '%UbW>)#)*4+ɹ4DΑ(/\b%~uS?(,&KCVnfX]$L2KHFc^ͩwC4'X-ҫpD dL zD"T HiD0j}^BΎ >&(#R0L@G0FDKDqāز1!?f9 h8 )$m#t-iEb@(TI1-V}MC\eVOJ1g^*rUJؐPZܕNM e)I榃ڪ΄{B ;Ȏۋ*_|Y Ȫ@bAEX 2 #+t+gz3y$TEJL/ FɲOClok֥R)"=kV, 4xTqKEyj3pgS\䆇H_'ǣF>-H+!xܜw`Y=uKMqe D€1M@"S OXa*!yR GY{IMszg7mJ+DY) _Ps2níAo׫p\\R2ꚜ3y(/Z]^*#Y5 X$A $Y%hHzG?U=~eLlp j``(3̐yŰ djDY8n @BtP(qs4IR *ʟDs)Mq`h4m#"624T'BѠH$E2zG6h3yRkspᖕp"P2^N0T HXqk$i1Q#b0"|F=Wgwx:5o~;ٞ@ )0޳=Ƥ4:$SYmVh|vE.d89,rYWl2 ܂~'->-Dx%) KL5K%nk3K+3-(D(|4xUd~цhF`\X,~(IYW(uAKU`\$DYFc'de:) k5DaO9]C"ttx Zr5U9ǫe9=?N]-LUH@H?"@өS@XP@AFY^N&EԷ5ǭv=jčn -oj:]Z<EԬٲ.gˊ[D:b?rT 1rsT9? UU3@Y ,&+>=9sӗ#1(1颜T eS&8Y S@TD" S17ѶPШJ D,ũ90@`^+K֒I6"D2K4q vYCSi3rv'cVYRA EIwUaWE\*d6ܿo3 Du)Q,Du]V2`гgjuJ"R4G$9-ucM't2S"GZm/a+geCPr$.;b-ٕWCoZp-D qOE{n& ˅-̽L\vR3bG@>)TɫVEe&S -*sB9!D,j(_NK neʮ煝D*Xl߷ 9$vWiS BɄ)b\,@.tJ2Q@iUhbAf,R$et}O9#mfUy:ǰĒqXspi#lP yq %R@jA0nS c' ͤIUJXM&"ג\vbve)30#iA_y_O$(UAՏAYVG70aT/-%q/i?wPZe䌭v|Fls2`^^qbXMW{U0!ll,VLb0:\I LϢGӠr&wM,U?TOBNݍT/aL RAƙS Iܒ=rsM4x)O*-eeA5&6.ޮ܂QKyCCα[0rXW2]KpMOtGr92(\5 /\r\jz?˪svMe%3׭*Ejn*`,;+,K=h˫BDZ@}}^MYiqMcC1J}5-ܵ}r|/RLLbph(6sAhd$:|ɗy`4eY݂rE^ԓ//o' Qd9/aK,rƺ.奂|KiS R>o W|ɗk"!H|j<(\? WJ27L2*pc+ NpdOiެv1b˺aSIGiP]]'+rPQ+ t!~ h u(ir^t=4>j w#>ȭâNI.ڨtOmFҀzq/׾i#3dؽPKf/9L]air\2iEm"M%0i%3߽ٸyM'9K۱8 h4+գgkzv/A/X=.2|cp9)KJ(brԆp@JJJ|Nd:D2<;\!4d5,Hς%CBIU= ,z`"/) Hd6@tJz]+JO w;Tt:h;vxKC@C#=Qnz7EOtAIE FHEV=bRΖk&4TJf'%yQ v=˭c#4:H6grlL$6~" $th;((h.rx/kZXtT* Ww8Nx72*]XZwŴT{oi‰qV@2'(601/ځ>TA]<<|tw}]Dxf`).GF730JaH;\V3#bJz)zd6:(hQb I}'Vߵ Q6cB?lezgPPVyB:hnLذ6((p0}aey؁4Y?C/3o*}Ѩ/P]-()/Ta/Vt`ܺ;:a7>%EDעbZ؁#gж==fN^f'Zxaubכam7YفRIBn8 =q=30 T{^>kȘ~ժL]CP^_Pn9'Lc5a~6ମot ГVKho@xJ%\h+hY,zm-[p^7|~|FVCoֻE9']+%"a6 ?oG[S#jkndVW"Z" "tqsuE?FW~} ܽv@V23kKQPO8H ˼ |'qߗeA CNbfj#ݻ0!PӆmgB+جi&mp/aP޼ HհL<Ν\D8#_27_ދ2RopZZo;*Z:Q*pb,ª2vEEqz) s=Z뭄=XϿVbXvʭ@ޏ7C?W/L[_D$* x0+P"|+ 0N=Ҧ͸Ӂ_ QK{wz*ʐ?t2OO8{'R&7cN8+K0=6;1±XqN`).?տ"7UUx{ ;j0OB:l?_qZklFp̩D K@oov'DXJ{ń d)?>xU"kcAC!b5EXkl & Xd 6'f.#s\ww4|((bq`pfkuqYKWqkk!u0HD$8g+;J`#QE&rv/ΞZy ( ÀsAdtj#8֨,1758Q* D'p(;QԓY'm#xK*WΌ=2L:p:c\CQ!DL*N0AI(v}gP؄#wR?&mt0؜&ND(A}urVm_p-jZUF&,bDtk FaF8GqE4SzI&N9BPV\ w0:RDx \D5Ao".%paϾ{P3nc-4K*/1"U%DR"*aR AMaF=2?wC&ڢs諠' CFmK`R mbs a6a=i,"$Qc_8P722i|1Yش{%w?'ozȠP^Rر N6<S#9eGS\s̸F'1cؑ4+L.P=/"3PɌezL,ӅKl)(#Nmem`D tQ{2C,L\6˂ŚWش}?̰0Т\=C-tS4GIվAxR jUg "3il+P^b rAP9^E@9xU#+M Aj4'RgggY2;P``6/AF\@0Zkvmu@:#C9.Lrpt];JIE֣"!8~SN}1.5 t+LA.SInւΗQj׻t;wyJrj"sl?[RK Yklq 黜3l;6،9/1K|R%]-}X j >yȻK|ҡN{jx^-Jڜ@C 5n/rs%]N=Fwa. Wk7aX&%03w-و? g%_>6h1 @z}llu65$/8MK| fݻcl*ȗ|ɗROyLe&IcA` B<<.K|JE>sۧ`r^p͉- 2/): 3P-8ׄjL*Khbςs Iz\:1$7/>_~@i(QNwM=2дuzx7=oR@P* yiǐH0 ";"^.ק,U\ anTxWYuhhnk1&<:$b7|B\GD:i\L$ H? BXp}`px_[p6cM_AKJ2 Nh'<+ p~tAAe9'e"*x_ahG(CYE)DN @&  )> 0I M745F4f ɮ_Hk _ZRF4dO4iPYb1X|ɗ|P4vD$(ǟqG^ ]0AB,~sBERfr˕|UTQB9T̗|ɗ zZnlI|ɗ\Ƕ!,(VEfT$9j4&)(_/eO:f8Pr gfz9(ьU5 8UQp%Ѣ+4rz2W;]y>ژAdwnE\D¹_D9ˌ}֥9 Ji.$qI$_ђjOx=KE 9nX^BA\,i^:a D׳fR=ArȒ|f&DZqz3td$`zr4 jٟ``a㩡c`"#yV KC3QXF-]рM9f)2+D^CBwf+4 ?M0 kiXg꠹ ^ ;ξ3PB&Z2fc!L0mԠVBߛ|)99Ȯ}Z1A+BЏA!Xfw[qlhp'G1˗La$"DCFpO–so KM'1KaYu/ۋn[ޑ9<ėa`t\Yl?U8YT <܎c~iLbd6fTb@x;q /_^x}?AL1u}'p jgqx`|؃uwsV!6FmĮYϠc@9h~HD::U>8ڇc=N+;/9/?Asg-&/GF;H&»Sh] 2<i-ڼ>LRCAA1b{wvU[< g .1:/pF7s`~mm ,qajy-|?t~Q،T [Bc41c9w4`)_ E8z6ݹ `CQ<^{>?ZUabx| %~,[_u,\p/?{' NFQY!?V݈c4+_،gKF`91318}'Fn%A;0:5xnl\ӎ΅/>|Nۇ'~u vݍly<ҟBK˫!9ŨHmC@Pŧ8j;)-Hpř9Tx<Еⱚ2{}hl7׃ç{GT|px>q?FOA-̞x}-lfhns?56?(wr 8c G<l^S}oO8(Yg]KUrjǞE`BaU S}x#Vac?`| ^ cf&ۂҺ.؊(t8yitބ"8?*I Rp NzG; Lp~=Z%@VA/qAԶnz'zzBr}h ~(0j1WZ-[\OXY'a0rb/(oBMmށ9ZU)_AqM 엸G!N .0{ :mS7 JL .1zm.6n\,1P ^ޏR;K3J/wAV=⃄(Nwnއ3 FeeveԈb^eN.+W&+RD0s>Ǘ P"iՑVh.![QR8Ķ;T [1]h^ԗD}[ pٍx~rf6W Ȥd2R؜5,%[ۙ~VT k!tjzpaڛ(oG,NPZQ +#=Xyh.cEDH^҄Yhزm#fa7JUԣ\$Iˆ¦NM-r*P^iƆ~xH:rXQDa&k%aquЋAo nƝ7Pl#pH/++pZh65"9чiv2wi1 cώWQynm+̈%hnngt saO3q?kQVU3icX{h,a _ J xL e._ӵD:7ЂYN"[0z|/Gdy Dذf%XԆ&UEG" J{t7#eCKTzԊ8q~[mBϡ]_V4TZ^nٺbLSO W~'qXh4ʛL)ٕs̄wqAl 4Ѽ:kKLHD-?ѵM *"H}RS=̬>ILR GԮ5O`2p!7CC(&Ӏ@0_\v]=a|ۿY"Otz=DDb8,?DӜLw%:p*U9a8Xҳ/>'aDՍT`ˁ/h?ZZJx^؀ 8HS/kǡ'q";K|2EI R.ΊTLbA׺[Prb٪UnBk]tB*u*FLP__BKGvv<9 t8 %֤@DѴ<Fiu;jKP`6QRMwR3]ތ(O /rwD2EI1hm58CksUϟ/=)ARc_Y*S}G,@}uZ;_}gˊ_*l]Dq~"G(vc#lTz|3A =S:(-v̨ (Dv? g& ſ_;.LNr <{(~]8ۡ M`<$=$x Ih¯'Wj|t(i6tjݷ@:(M+$qO2 (IgqCYXC(l8;~` s[hYg1I!)'HMЛhkShhAOaX+Qf`2E5CCv4&R(t7'*uxAā;ry>fRG{a|8C8p (/sT4ֶp@ȴ.ҪZLك$ͫ GOLxM8X߇ao`"6 gb6DoSC}ILL6'qU0}Ac,5+GC-G'yXšjzl3Z H3LTr8g m^lw7BMM @@>puO &1=}k9y)I~KO|=܊b+# 7 އ-_ƅS)VpW+1]툇g1p,T&/^؎OKRYq˽T-8W 14-_T/OravJexxQˆrB2)ƨx l\!@7crl<>5pp~76j(**i vl40PC+ٝ3ܩaNrʊخC4C&X( DQG0iSvtxq_%"(),3M$Lf)xWE a$ ggz9{NͿ_tJNJoԂԵe#6~@n Ej;["J@@F|L%EI?)tO]X2"Y?*"'^\)ڼV+q:9~BwDKDlƷ.[,O3ʍ Zw^0?wƁ>/bDE#0D?`DSu!kkɂhLp/;|#!|;CıSa/*u x=̒mSFILyXQ3c3iמ av%rLf$b7ʢY&̸=kjob tZJ'QAl=7~oEQ" "i> 8f2S MZLzhmnP2gxž2f`ko z]\2!4v{Cl?K`l:3f{4d ؕ5MhD"R|a ЀDj0`M`Vx{;QYߎJGO"RceuVcrp'J?8>kGm!x2Fc#>&K NurK1". b F9iӦ4T&D"pT"ep΂Br4c[QBTZTvϞFN69vށ#4673iPC M698t:p{E|bN1: SbgRЙQ0.95ۉvFl 3rl˓qͲL z=t3Ɨ GGGGn`5fR}_fa_r׀h8ʢ DQXX-4 B&3ɀ@:.ZfOFUFQ"9ܯ  38 4DDCԖg'L& ˃NOƑ^ʉ>dv2&3L爑7k|i`Œ^{#}P/)SII|FEca$0>ǚzDZi,[w ,.x4Ew!;0`td!Q\gX;Ӥ#šU>~ށ._p($9Fix= - txb)62Of\Ci 9Phׁ3`7]_z:;CyQ<_4> +qtj}!eDzJ'=* f"PQ\Н& J|,߈MP7 t` LMch/2#,YQRǞ]xmx Vjۖ/aX5#8ԽD߯ngNPƑN&PRU1._3};. H _y tGXy31z-X2P؂ª*[R?3;6PaXx{njrշOUCڻy EՒ!َVPS : g[ 홆{Pܰ9MPdH"̗k޽{Oկ>o='6A;WRi592YE'?>$[ӂCǏ5EYy{}F4WGGCS S!K#͜z,s(JDt >TDLE <ct6"]I } >؏`拘<'kdd>dۋq4v3{g;f|! yQ_l+/W%,DQz#sТ xzl8x 7lp 8$kx)k Ѻr=pg|bCq1hmOCBi #Gk۱8ҍP즲0żC`*(Bo9 >^z1\H$Ə~OxcNjۚлM{[B M?(m&cǎaǮШd𸽌D;#P"rQ`|z:AEE4d?ܱNbNE%XBq8$uHAazyz%R CS9}:=>?D[K&щ4g(N!VԔHed" z1$9}^'`'t"`?R6c-d%NE@$j|S%k԰ ?Qit1t={Rhӄ/z ͱ{<ф(K 9K$\*f""{)aݠs.YKt*1J@@t ~X7dcm]-գP]v5)NFF[>8]]]$B|]}mzKfchGbjnl ڇ $V"> 4 +Zjtj\LhpKh1+d`Eȕc7<ƈAߧ9t -7r>1t=Lr1Aar/X@DoW"E^^G:z 5ZWa  eHQ+h  Pi cH 5k[[#5(\A@{èe?RȃiYXXt@DlW\RKQte"ʪiKD:-tdЖLx-55Cjͅx[F ]I* wc~X* OXA$2%h? Ef Jr(TjS8v'=v BTyb6 Cw|bt^97<L i2N3C@+gEZne 6$:sӨ@?ƅ-!!;[aA[b3b[pƝ y"hJRs2کSBş<5jkVTAy(/Ljo`^RHS/my盲9?] 6ܶ)MX*Mx̓0@Smi~>5no)9{YГyxZMy9 d.xu"0;] o"Z㒲*L<(-,gqb: 23|TFgƚEU! Z\P! B2`;`&cjc5CaTV3;"NLv2&UdKqGvFȘZn;Jb/?i9.큒eķ1+ Pd}!WlO8tuw`GYT%o,UuvXdOe(ܺNQ㎯Zy!zGkav5ޕG}{ &sEqQW qڑc>v PXqlCGBMhkcn:w䤘G1败D%5ږj\.a>ˣ{,91'V'+1FrфM\{옔XPcA1^bΨ el2mAHr氤uh`_qeI+׎S♓񱉲 ӨYk,s:xrKYB%jIYm CT{a̶ū`*P#IdA!j!a/ 1ms8t(:H{a([ dŠFiLz!B8GC><2f(BqX S fB508B".0}5PÔ;4#"DIEq9sQ`Q4k'jɖ8۲vǎ߻'_,Y/l !NV7Q2RKO>E&.=&=~x,jnYf5y\qB" `N`zbQt׾3cѢ# xwީmv~{PJ-"=_'Aj,7bn&4#cqsPhpJF()Ȃ4~eaaގT5C=IZҏmUTFdr7iU= žkj@Jn-vy=%ШĴ"5|^ Zg`60991!j%lH+(@jha6؅>U9Nl!p}ϑpuxjȉ)o~&<]b Ll DP8dafw|YCg<-Vn]/QmiJRxS3EXj~B;^ D`s#@ f@%÷R`46C)q#曈@^--+OjX4P!;HzLL Qlm2ܼGc]ci881Y\?c,`EFOƌ755C&2FMd)Yi,h[LhB jMYy%Ipa"htF b~\;} h4M(\# }n 2"#8t!&(BS#Le`5h>6lQƧرRZzPtscIhzf~ 4ʼnz<܉cGAo4JΓc.,!x[a_ʾ!(9;Qi-‚ :NEPD0ƥK_ /ą˽i]@!ar"<FB|{y9α=ξ7#ػOM=Y)j6tuAb ޏ5F/o\lʀ3'CDMkĖGE 'V iG`=m9҉,UnbFq%fia:g/$% UOeXga[#EC!.Q\8w| &תp򝷈ゟl9@w)o@Q<Ćlh(B-X&c(wP{8t8t-<~l v19 R'.oa;   sD'pz\hE&ȴYLyLj<,6⥷ hmhJ,B |Μ,F:0#UGcCL,6ыaۯv+)w}~t-"S+Єȸ9"0&ֱjiko:D)+}a9To̜ Asmx% a+ K*ff'>S>OTNś,eQӥz FH'Zj ~^Pje^ENRڄuˡL`LK0"o?M;&%̛ E(BM-MK""!z/؊5Oj-.! rȂ63=_.QXPX2#08rvB-f;P"1-+R' (AL6]"EҡGjJRjuP%ek&BV Y`{I w*g֖B 3B"paPjIDP_lh$W#&b5 H)m & L"(BY>V(1DՂdHl\8NLN04eCVzPG)$4 y>J~+A8TR]h:fFaBƢm !)L@A751_l1EՉ5ulS~J>Q~(B^PP>Ү6j7fEW \&#t#`+ja}80,.r:u !+]tq!FFFbzmjWDMXoz =֝rdЬe77Zc z;ijޛ? ]Ib׵w QlN%Z$d1ogt=l >d&sW Eّ;2fq%3IBNzjkRRJЧ5jٿIkCjqOZaUNr9.o-NjϽchl8zl-0UCHKt4(6 L@S*80*Bz- x{O"]j Y:l #:jANQrt*4FSka3D!ʲ1:DjD iRވW taPM!רBF6 7h+^:x! =Noj %i;2^Ba$B-> zg`GGeKڪ6-UX_c(2Y&芳{n.`(q/^Pjh`QIoubW4Lap`Q$zPsB˜6a{}m靂^sogZLID*P|'. #YeRZG`ABԪxM)RʈͻwV9=iE0FyΪjG d̀H">gf5X7~ ܵo?|%Lz}KW=x-,kNdrPdK(i/5+\>"/=q- >u{?xcOv4 B}ׯSZj=ݹeN.88|Jߊ-PBZ@It]E%jI!ju^wMvv(­Dqet'L ݻ0ѕ]>PcY`r80~O}ĔL35o!^„e8l?Mf}UU }5٥ѥ3D7IZR ('B_)NalAo}+2Z3ُU9DNf.R`ʫa5Qj]qRTzr ErYb(LIjAC)4& *a5iF#DK?"^4ga <B1s:CP4wdpeFP \[!ayG52H>M#mrGPjD+4ԟ!<'i:v#ܺNE9Ыmc(Ʀe/Ag0QCGjo1"&!"~xP_05vcG͏ .fBY~f01c#;t8Pٷ~33 OxՃHјB-q5s1ZZ*/O4? Jlq."HO#}%jHS5V.q!6nH fCJ  &'_#`!gf.o1F"fT"])X jLOOBeH8X, Q)Bmhu.s Ƈ j3 -챝|~~RqS BMDYdWoƪl2%2P+08^P D_QJH"N,`E)B jAZUyʃ$B->!c/8,J.} y1IoOLj*"DQd޻ E hQHU `kRZJUvob%ȩE8P;?ZJ L@Ů}7&G=/s D|?< KVDPڏ(~!Y ǀ[{> (BM{kG"¤gbrQ)Jm+jaA%_#IZ%X P'ڢ˅AZrx|k F`Bmɑ!ԆXbVi9F-!,L&zZ?6c_P[Bͅ%j=+jCPkn.c"ԒG?}qlF%g9\B),VBQDْB /v\P$52ڍ_y=CO"Ծ]̔M(80œŌK*8;3Qe NSagH!f ES6ܶ[iQW^pGe\PoF-ѬD}Qd_P!R>%-G=S} QcFiESS9\܋-7kjkQ>MX{R \A#<*1Jv '92ZRTjHSNބ!dN{]3!d"D6sC^)2x! CP!JZ49v6tU+ ΃ E+.$GȺ}0߁LȃKsDk&KPW]_0UEq%O9^(J;:ע4QL"aZNO}h(ƮAQj2aoypc^/B-4}yrSgg筆P󡽵J,vtң=z?I MNNc;8EVY'oC dDŽA" fH8Xc\ 1pƸ.GqDB-ٮv;]IM!R) V;@Dl9 BtG4jn;vlc1.~k\A@Pjn t!jV~ &RB6)JM3($B퓵A>25;ԍcgZȄ%K[|}'a.ZBE'/Cՠ0ی‚!Ԥrο cQI; NG*tRk7GaI3,tYIL RꅏSB)cr68v$]N?c&1VŌ˰))*LNOc†DkAyFL@:|2qy"a.bH~Xx,gYd݁b SN*ˊ6Ev*r<;)ZǔrBc!sAx NWtΓY9/1(MQ6VtuUx~"՟$ 2Qrsփh|5ig(JMK|l@euϱch"dZRS9zDA%4i(\ mwuZ }Qb+r:lz0>K rtprf/~̰ɖl* +&FxG#r*:Qd) Wc}oZRm$!SVT$Xt'%-7ck}鞀"}G}c34Lm/ܐXW t)؋bdeB |W\:S*֑竔nQj(֘uN 8F0;H%@yl6 &Mub̤O |L N8;2l«b( /B豣ؽk7+&rJK!#Q൐d\J-o|Z($B퓵B"BQ-P!zgv2;0]FRk16{nK@"Rmt͚DOC|%L59NN~ ,ҳ|~Kj$jRhϞ;j,92Qj/ǭ@qqǣ2Z8e`q9g \#6nqZ4S]߹R؎Xb߹B*P[FǕIȄ-!BM*AiΣȈKp#߃ۍ4`͞}QMn&Pphh)F9DbiP_4z,2.ϣ,Sˣn|чfAFAlR#DRZ @$%fy@*81*"f{uzYM^<>3F8yUxǡL+,!-Uy ib]i.<NBà,Q/0ZcՍ yx8}9w`"*u|㶭qL{|w )r FK-"@'N9oƏލVRiEVi~ wT`IK#@/L0*lHG`@F*{؀?m" .&/|ܶ*5 腛<jRzBpek.ES5EjIͺ"E [ !nCFQ1j@#3}xC#k pZgC:lXZSD]{!n36Tfavd\y,困"vO9E|m$2UBq:¦BdpL;2!0#D6 7>!Oխ@17jJ+LZ{Q'4PF "Jek17oǝhP s{b-DcY aRp%BLc09368M)ĮDDY3_f]ZQUb|ll6*_# Tl|MP_ P@cGTˌrD_pb((('>.<}RnG2~a lp0눩 OYD#N.dK@#Ԇs]xwnŜc+jBAv!A)#l%MʅO @ u1, %at|J#eB5%D-Pj hYBMOݶ6:GEYŤ "ǯ fy?Jm|xhU7P&If{Ϸ\8B`0`w=(X^&ǒtg;ӈD#4 LF+,C 4>H)ӬGskk(H E|vg4 ?EЏƣBq2e+(5􁖆[}J @\œ YmdWڃ-6 0;SQe; 1GM\2$f"M#s>)Dsb'@]huR].Jn qY@ɴY Jaǽ6CU)ùHЍ'u}5;pGQR.Xq\c]I^shmm-۶AD.0,f 8x pCj'O'; P2Z.;q5LS8r9|>?Mf@$" ?jެ k01825 9eط} NHQF09¶ոxU8L d5xwPSzA12tAH1clle55hԲjp u-w2f60^ycq iEV6 &3Ο8 ̉zMQ ^%"KEMD&9}r1`+[2!0C5@Uz(.5ԣ s+2'O񳗈p=Ó0?Kt{PQt5īG vܹnb12ho3zƒ[:p0G,B>(EcOcY8m 3&A6<Nx Ela1F~ EYyZneBjZ1 FEy_bj;oߍnS[%& X'&ѧH, JMEv.hJ-F !!)$!DQjȐ.E(ȣhYGQj2 1 n%Pk{D"#痡()Dyc(U_]unܰ>;r H V=Ȋ fʇe \t Y #PbZ4W EXjt] 4[hէ  B..(gSY8Tʻ(7锁uvtbs4"ԮSgPĪ.S$eEF&XQ=>T芀ø{<7":cc1K">FEtP&ª Tji4)ؽk4 tJ0gs0Bђ۷oe۵@4ŀz'A0ms, P m!2Fg0Ooi iK?f6?5Cvt7"L"?c{6-x9P󒝓BC> Mv sL(-*LBM!G߹7qv{g:64:-g}x{O2Ŗ%ZQiFTq%1! -c5ΟB? F6^yטFhn ahQ]AMQZY9GGA IfTqRnj*P!\ &$c.5 BM/7dEQ#>T$j•[T cGΏï?ցJ$Fx@(CY[qޓy ǏJ[dgE?}҉:e"5? XP%Pj~U9F.? S&F 7o=jGǑS\<=PɕDQ 81i1Cx׿D,EQ^PKҤ`(ZX<#ԲJ [] Sxy[3J%4jV/L_$j[\C9ͧ`|>3|_1wTc}|Ae0f3{y'CP8^~?0-02CnwgOGLx|`^!"h"2Pjrtu` cy$)ixpvsr :ڊteMP+EvF)DN l=4+F# "y&֘u6=%FBh55pQ.R!''=K"Ԓ\ q]w1 (]_VQݻ!Ia##Բ G_t_#FX:jrC>RL">jFO;9AOߍ2Ӳ"mMPGUgE|apWް|v b :*AYy G{e̻傁J'$ Lmyߖ*ɖ8Bmɕ -X>oSL]%J$Zc9?ʊ cŀe}IH@€GI]==H#<8k%8-!b vBXjk,/] R àoW +A+,%ِ׶$BmZqfTߚjgΜa5]cb~2)믞GL3_Dk C1}CdQ  X TGPǑ -+o왣xA֏(XLfAD#-J.XChih1 nYC/O hbc>9Z2ǢkQ9Z&bq#2z$c :?0I?AY Xg}+uPu(R=qlw@Ǘjww,#< B7,ׂ h *׭Aӥ\Cg4Q ì#§Lϟzʄ'Pc|to;;}ST!ShBy0o BoR`f؈*|p8j:DBTc2"Bm;?#ԤD{-|04ZfmJۄ|}[ʫ!Ԃ^P#wǡTIaNK#!QZ )Ei=8r(u 3GɏO">.|ߏ?? /|O=';x f0J*`b}+\dg DVK6Kv;  tkblX,FlSpyPa賋a0 `p|!ff$QH#T`w#jX96P"ܽ>"l⭲gWpx cA6TB Ys6䯡lƬLj;6o^Be^A(jHNXml}v7vdVQv $ި9FoV '\n^N4Mj6'xP\R#]Py;P3RfQ!Hj"`cZ KjAfv&6NTy|BPy'Eֳ}Jv`#aG |%"B^~ 6E sc߂Q~[PQG$Bm&C}t:ԩxXȲ9pݧLn@%BBZY;R".pX_Wa>jYv,7mGZFV 6ʘpԗɒ VɗR1<FI /nP(B ŚʺPG}emܶsȺ FUI5%\>d AKcmD{-ظs It*PB ] N>d7A֭-pk;Z{+p'Fy MSشVA<>26ԀED#"(ǯzqǗ ϨB8и/ꫯJro"PZQ}䮁:#ҌH;P`GT]8CMHWE[t>5czb= 0B4E]pjP8y""Aft5e~ rSB B+x84lQdakM?6ThGcίIjk(B͊QVxFŴ )|qGaa=Ft4&F+*oۂ h&q:.Y5(Һ} jcl EtPvcS5s25_F"r-$ښ;R=NYaKZBi D΢mOr&HgȞ 7M_Gڒm&3: ;vecjiP[aNcON %KaJMC @f>PoKo/0=$M x<iyh؎5ER}((5 QP;zc9&v۶ MJ!D`!B"B-{2wEӡB=ZedT,S B$6ѤT=w|NZ"غ 3(Bg9L'#P3Ny1xx;:xOl7øGG4*U[ ()(CDƾXY,/Nj?HkoUҐz5n,^z5iGrF<(222Y3gK<٘tb_-4s6ţRLi\2?I]kt1_KSǰ|S+Ml7ܰS2 WMͫ.W Ij$nLQ!%9l74~T ֦q4!ܠ!K0IQPH՝ɖᒃ+5kl3ْ->v#e?R P242)->{-#q]O:G *ǒI dKϦ/Qz.&[}ͼX%[}[ҵlɖlIlɖlIlɖlIlɖlIlɖlIlɖl]_D N$ '2V {LG4A$N O%2> `TMsnO9P$ vφ"~gC>:3Ǿ; $rw (^  p*ZokIpa$6b%ۭ'b]ֳ{ ?@#\($mNWh&⯂z^E{cL@ICFxkp4DBONa~^Sp< K/E~H\6p~H#$K@Ȅg%gL $\k 8S%DHCD(x :'!;/3All }pb>^ 3>_"BvRQyBB "t5ExCz,B’H.Ha#8;lC4NS$G@@xvDpd3@x<7N k%weBp/ɎB g; $!,} } OB o!<34QB.DC " M94:,p]*nYu,x? <@'ќN.E<]?nI!)-l.!Zh } ?ko?c(@c%Y@ZuDشʹHD͗h Q]Ɨk^AF7"\\h_&HH0!&پ&lО?.& LH}<*)=dZzKmp' P-?#5HgNGzi> /`F| T]fmA; ~/ԏ 9WW>s-xb߻/ĴT}q$Yx_ 8N(u0m[ݑ/ߞjЩAzhZN,h!ȿK[*iB)_`MvFj LL=.BhK" 61_$* g h?ĭGxy;gc HH yWpd@r2ks!emL "܇p@#yh.Aմ!l,%E(>C€D4DV]׿C088%ڍ ڗ,"KRq+SUC['|Q3c^Otw#j&~-:Ne;`aLv=͜y{gD]AhQ3ah*b"( Xd!iD{_# !v dPF$!/ku#?{Uzc$۩rM4%!*PAO QB*$?JPHMۦI%ky8kkuv0W<{zwsm܁HHpDrdFx&TɎ`8%71zϟ<=䚣 ipp3pGG\;4]h4e Z%=*yCL]薑1Ft2ZhQF_#t6g!MPo eP;'h^FZω5_w >m_3!sLdm_A'@rH&b5gL9 Dؿd!^IMz?zBhn-_ -<}N`Qa|ou:0R/wGNG;KWcÊJC$,vɟp8ֵ邫 uHij."RN fd70V} fU;kw1F;p@\FaO2a-"[^`dʍ7u&و̥;$!ElɊQI2, b4|J{WT2$Ci-]2$HDɐ%?x@݇Me:&B.ڿCMvރ9VJ@-[ 0&󼻷ׇ7ßݎ '1t@]\>s5ø|Cs3_@*&`*^W~q7S$&Al@/hn'WQh]<0vh6!92Rj`V;'w$)4M Fwm{R+oGq-%Yٽ3[`#qGr4jIj=qJ1j»t@;?C>,hlC~'>8[R,!?2L,M \> ܎΃QPRw-b11B5SL@ ppkLjwe,b#?($%!q*Su|_{j l&"IzM i13<c؈B{ּW#01AV[B`y v/F Jk|KL3M\_Bx58q 1pKr[>0S2J A4$C,w8;ِI檯"`-j]|Ǝ2lHbI=D}R+iͩ'A򥴚;0dŘi0MPF LfY^8(Ө5ߐR)d`ǒJj2#?,@ؠ5| k`ŪF"i|1ɐ Oc}($w]*7Yilhv $i DD(Ci!n^!s~viL GH%ЋPoaVm:\@{$vG[vg-{ v [kn=~i."h c/j]yGFN]6ЗqRs!d8;_/FC%K}]HPB!{iDx3p]x ٍiĮ{LÅ9QK$5"pN '5έX\k3oBz=S-l9rw+DEutb1zb:u$eŽXgr$+s[8 5IEEEI홰/V}Z?O^2ELP]Ɩ ",¥GӇU;n"M=h䔊lhvOfvv 4l3;ǜ*liÎr3J@`F JgݟʼnRu48#V`F#$G2f f)6(08P;C>H2YY !W%l9žl8= ;o7{plM~8%9͉1xV8NP`-J -HW8)Ny ۺ؀r {4k׮EQ Nw9)v!͇TQg4{ ;=s)3K-yrRP?Izn]b+c~C_[ղ9cSv^\}&G_b%9Q H9r] xxV-b`;2>UqgVajSWS{rWQQ"2(bL2RX1ެ}H9K'̼y`zWwg`gIENDB`tipp10-2.1.0/release/help/en/img/h_results_fingers.png000066400000000000000000000625441274324046000226250ustar00rootroot00000000000000PNG  IHDR LtEXtSoftwareAdobe ImageReadyqe<eIDATxx]u.rz!zo *RHb5˶lپI>_/Nnnw;KuŎ"YuDIv шOeZ98`/ {p{Yk͚5JiUk?332˲H",P(&KN+t[d*CQթDub%)b"'9JD&}C⦉?؟br$>irv:u49gq%0eR*INjkrRѺ*m)il*zzz,OAMǶm8@Q=_$ JQU4˞"CuBo? >mwbFffmB[ƕJj_ETUq!YwIz"╴mЖz36b2kG|tTH̤uM+*.OĶ,H/9ٶkƯֱb]5aFS=<:]4=0-[>LVJ@IXqtp+_~}0##`_DSZaOSNϯ*\5M mC8 C&l~4 ao ?h(āE!$0`PI fvBI'0Vl  Ş4x}u9ALl¤A,&_EQ+OęI2X2i Jr+q~& |B bG@"IN^󙈕ĮMPhZRSV_1<2lh]]U4h'մ̛e@Gx" #1^؊͠/eo__  R5:) }q*41NJ୷hR7m4!$)iC)J(cC0 Sҋf=O8jԧm^NY=:/wvEWF 4-A7+#{A^0=kmg43" tO{ ?+PPe{ [AbroڧpPTKC /s?Q Sd}_znX+ѢZw̡>PR#@h;JAֲ7/\lvJ KLEU5"ԕ֌jw5{?O Cca=MW17DΏSQLq[ޙń) 3  )t Nbձp_9.ҮVT}olXŭ W#q BuKN%06[dS',Jo%'..[f3NVLbԢa 08?6Y <|શk7lD4b6d#fbKB{ |{'#K_l &LT1g2U\ϧ:C0F44J" ~G!זi BfD(8&1#=}xzywmx8@@T#J2֬ 8e" 3sHdABBӇ$3ZgI>0Ռ`(Xµ 'jNf ʄs7(+Ew ZpęG#KYPOrJv wTvJr=k 6F̌ ӛ=k, 1I Uأnd(Yz!!x c U5J[7T!6 E ,P#J[`zc2 LxiFF AU ! ƹFMTϝN̢ٞ s;F+s"5Y^|lS[vM߰v؁4?H2jml')ɬ rP~A;fƁ {D@0Y SCNfR33&/1UU5iR8KeJlmBؠٞg8&"Ѩ=+?o=4)\-f0xDB% =6toZ|%EXx%BSV]88r52Eb%P^EzR%HvNl,0rFnI2LY0EHyUuGHwz~ ðb2M|kcE#!;P6Yt+f'i|6&+vC %1(*-.Yp!JzfiQ+ 8urbi=i6~q;WI,_ 5Nbq<+j̫H_xu5"zW(DI!\I+'!* ˎ]@QOXyb%F(@ 1hZZ3;``,3'oPB*ɶT)4#BthǔUVD(XDһ+Dg$ c+ BNr,Nă9&\n݈W@a\"E- p a vA )Xp ɺ%;cF j0ދ*˕qm qEe8MH8y^E (<^^쇉EinYIneC{q_P8mH@8@1L Tǧ{REHEbPI2C6&Vd,ғk%g3Ufb YPIZ<&&E:שX$[tB+鑓*&XA5aʄP9͸>48.h*ұyUW אCI#G$kS"Y+hV=Ms&U%2L grasڭqY(3<8ЯW ø1-XRCZոIȑ<3dpnHI ͣ+׸0 ~ [ՓEL qWmXן` G WSÎ.uelwOĊO k+6 bb0qAP(H$2}@*Й .p@z%e& p\re~@b敨[40Ҧmx,`ڎx}>'4P(,7, %pKnz?xQy&b&_% SCO:?A"s#7E;).gtt&msۯ*}]ӜH=%b(:[ciX`=fJ.!8 $s\kˈRgzux#mOC Cj2p1y/Xtͭ((Fn(̼#M冣22hv\Kh'v?l-藃###C~ƏìFzi\O]n{8+ \73T\9BY5B{}FG Sбm|?C^\(K0z%mK<}|K?!^*FF?t YyhWcŜ׉\-/HF!RP3rc<(/Oa~\?]⽝͸b~?őp {5sqϺ y8Diu=^[) A^UϢDヘS/>۱n:EzyǞN̮!lރ'0XzGˆ?jD! Ȁ0߆hgcEÉ6 Ν [WE͂O~c qq*sQ`*B"&̴%?W(lo0  zzsPԖA> GGiYY>[8E%4: $STV.׌4N?at47Yid #LAmRub"2BRvnW-9rSTPW;y/j}}}rMЬc}^miYlqtYJӰ}G_\?00ENqt"=ՇQx>R6t($ L2DȎO#{ج8 j~!fվ>9 #PD̊JG!@~&Q(& s?M>O&?}5b +@EbbP]^짍Տx! :Ј"ioFZf>8{ͩ8r %U00hP@L&Lc|tzzg!S?$x4?z=xg~+O|+D K,P@q$Z5b 8m(*`SEWNlk܎{㘕G@4LyYPF{ ?=[bPzZ@Pu2dkc0!6y (s|5)++1Kkg{C]=U_[|;:֬̚w2 pgw t^rL@q2M2;5ilےy_T:C/)_B*>+4iHyuveO7=(.u'u`0bgls\2M\«6|;!Œ4 Z̖w5Sq;Sw5NBvlV Uv(r{94581SXJ q<<Ըp^g"w8Mb)U5gJ)SxQpZh j O p:yM~{vcnAaa$cF+pg=q,2>Qfj)Wʔ>t6)|}fvnlE?VMb>ް|bHL̜aׅŧ$N;b+O׳Ózyy!yVt^ 9I cf$Rڕ.W@&+ L,)EsNg A+}\p y8u*I^8;UuW_TOXpW\N Zd$fV7jW_!a2(IH]+-,%B%r=DjIP\\pŕ$Ď \g+GetH8ɹ+'Ĭg]T]F OVq'.Afvb qW9M[:Saϓ#UWeviC@ݍՕ/缕Q|?]Nl_vJOF$1+AU-/=l:<(vGǏhtǺ(8vmPICcCh>t##8r0F"4h0q`AD:|QgQ-45CXXǏC}2+[30BB0Dիg) ~OgoǮwwbp,fuIu(ä@SKMqmر؈wݽ7FXp6V~+~),6ט/|J=@a !UN 7ocGPP u([ttATKf^YOxDWi'fY B(ļ>(3Y c"ŞNcہCO;1dcvMM݆ 9nۏxy=|n`X81X>sUeɺ#0A훑KSC{seE2ᖻaՂ8ڴ=#jT#Af]Vy sWE8Zye~1Ԗda4x94{ 9?^?)(TO"mY> ]G6,VCPTVlj>_U?R DT_\U o7WOWO>򱨢5*πTPX s ˟Êxkش|cNXs X8UGzFfg#+J߅+Wǩ(1yO?Pqn%;=nRNENIV9] 2uiJ>2%Eѽ B84,͹kμ9LX.JUeBZ ISX]tB&jX\ ;Wz&>޳ʬŜ1mD͑pTCc\'&dnMݟ-~4Bf  KXq&bIxpq2JKKOJ͡ѱ憆s?+U]] _YI|mdFcK0ӮL'M:@Qld,?|sRg8yrٓi F42^LdU.WLJh02QzLAZ,cA0_pw&.ƺh|jUzf6,ـ+أ(:aLҀp Wb<7v貵;&\q =j"[%&+绲ZTnW\N}L 4g|Ԣr' YiM+9GPc9 rI5\qs" N\\q'&Ib\e+&3(eg]e]Ӝ}n M{{}2? \> ەan,e[c!c45"n5'Wb| ~?÷8Տ[6c(+ȕxS`t_+Zbp$ ww(h42:3-TG殮!MRA--t:>U 椹Q:nm;ބy1݊>& gg]=;5*50LSq78bQjXy'i!wկwݹ1]Ͽ xQ,KCUiڏe@7CȬX7߈HQxeBwl4 l&R%h ޾ai]^̜|!ۄqmwZa&TʫKυfҌ`5 H6N"pm"-S`Z FF%2T>s[k1#yPFBzlRQbKn9pҽ&LHʛpީ[VW#^Xmbэj"‰ fځMb89KZ~= sr9{dAH6d>I)LJD]0ƀ ,OCeS$lpYbE*w0)~ CIS$M(Ùb<#'7oF:X7*b seډ7B?jn(c}^vlXuy 6LJ*cla|ք([M'udfء!4Dr!E%N~NgjO>M;O{V5G #m>N$uRy\LAd\5$A"ޯW>p7Z߉W ;FP| ƺ0kr(13IŒx+cl(M"h~  pAA}з— sɇ`WM,aZ;4 D{¹1&?wwe[s5f|؂2<}jW#Dj.B&!N }-(^ c${!~L;-v(zZ1n1wM=5 #sD. v QcD}n.y?rHWWo Q=.J6 ̅B]Q xi\D&8'x}AZvpews;:ѿe(g;4xBPۏJV(Q2 Je 5=]v 9LlOEw`ȩD#DǠ,Ì!1tAW΀r Co;iy|RL~Ct\-j %B;.0$E M0qC*z[st=]9˰Qn߀P؂jGu`sVVދR$t=D= Ÿ_ȯx NxPVu_W_ [+V.?o l4lD3bvGN=/ 5];Yqf0_Ѐ/73$(GNNRr/ `f2N37)s dz+"-+ jj>J,' ?u?4_}hŸke:xBj3#ihDrx}^ 2`,ھ.LnPGz`"|݉,3]ּ{MyjFYUE v*M߇ts}OeЌ CaZf'1T9E߻ =(`+UыC{!RKy&xRPQ4 mNGIM%Z{px.(- S>@3hÞ}E(&f n6x2Wwi9Dʄ,1W$VuM2۠(' *LadddȄ(&$3uppe.q*r8uſ2)q8aZ3/`\<7Vdb4M8xplu!0p[aiv)YT 1yݷ/<*2FS4#7QËҲ1"c'UH^h ̚EmaQ]YA -<%;0*GdJ?2p>4BИc&ii3£Icn\E#J}HQ ^o#(zge-r*Ȩ4Txo.|QVv(Qg xjǛű~0˫| 6,I_5,T_ K_Q#@>e#㡨KW!'ӋɌUc}iYSO`Nr,P׿'C%Dto{$+kAcߙQ3c*b{}7鿁M1#uVEUa+`U~5r>׍'̜ W 4n셋 rCDSC&EE^oL@90'A/|@ts䒠^dE.C^옫Q1/r֦Wހn(|_ ⨾YeK7D J//\Ո>7:v,Ndg÷}kjD,n:X2"V},SfgbS_#\iީx@ބ%xiȫȭqEFx^.רev@g7{~Pϐ Hw qgSK9 "N{0kf5*o{^2Q'4WLc6803i*^v>; :K\2͛ }[9gBc؉PeĂdݐш&֜ۜ fIj?{G1}'wta6vsP[_u 3D)E3pP0kP2CMI@վd:r/4[R krW鴎sgv-X,üe+k-)9N r!c9S 4͈43(]v9\y883i8P; Nd}kϤH.͆f(gH6?'2\QFe CJzpRM+MW@W.s*P#B*iG^qtc%8||i8U8-W挸dYr+赅 [ < _1pYӱo x!8gCl C!Êq/5v]8/^5nK++h!8 F?3a}!#\Dݧܵ N6sFQ{툎 ʭ`C5ױϨB䇸|ŒIOH nMA1D` 5_"ưqvG5FZ4?D~_=QMu(|xhDm5=JA@`'+)Dxӈvv@ > )X_7 硲$K \"hַdH^j(0<܊-sN(̡ۗpM~˃A'+`62밤^g*HM`ɮ\xJu2[olF334y՟N\pji20Z"BENŝ5rWi783?og7Qҝ.?C| vLsuD,dW\ o=<Ҁ'%kp\I˶9wz'IDAy|6ovK&|jR # |CO"T^i{IO@ˠ'eNHShG._ c/wG![Qf^ėy]E]qe8)|O j\{JJA;q_DÜo3](vn/;C_;yָq}Y:eI:;u Ͻ3Jx_K}a$$F`L ~Mʵ)~#c~7}3(`x\xsNFUdg/8MNyͤwŕu^Ϯ^-3PWCƗ k%OgHH!,Xenח5$Ӂg>L7 e֤^i`{Fԗ05%iMcUɳ/4d΅]jo3 M]@pt$un,]$HyA/`-}7} %#=S&Mk?}I+W({6|M߇S š{'),Nc{?B޶=H&Y3 u?ĿAƻ[Tdcbئ?. rEœ]#yՈ>-إ  Y`[$#]J.&?tZF`E 0}Qhp 57"2/@d/bGf$t`&¸JAxT`KQ|dS#c qۗcMzo4:Gy^W{a./8Hf <"=чVooΙP: vMR(> NybT$ꑷ~NABg;Xȭ" vRJqIL~ L`!P.1FќY+>QȱtMfNK]Qc{SجB_v}18Rs rrr9^ 6W sV.μ+.Ku^'F^ WE?;5n -O9Ĭ*snHfAPqJs뜒N,?32 bc.~{h4pȲ:s ȐIwʯi4{i˫|?;w}555ØyLD__YwO-4h|KVf# zJd5rv]b 8eR{9GRgvĂ~w,3lWH\6)%̌f g'&O2rҬ9esrܧ{.Ø1Kc5g,0z{ẖpqegǏT@=9r$=مցM]u~B;:2{)M9Rh,\GVTvT 8]2`M HOnՙuRĘDA%bNyT+&\*+.+\C+\8 aZWQՐԔyrД}'W=MU'5;_Ϋ8NV"MglpTewm:k |_]Z:KħE񝚮4uJ/9)}*X3JmwJv?GYS׮W^ a _׶b4 hqgxtCC@xyEJB8}& bQ>|}~tIabgA>֩lywA>9(5M*"8r {R'=p>eko ]Ͽ0N`Ǯ}S~;C*'?=o?,#\߫V}N3r:m'ɫt:Z[o>{,> qiO왝ךz߄ 6wIk޿#.~=@ Bǰsa0oE#ۘ.8x;K {,KOn3nw6{2J 8p0WOvsN_P ji(e!+sٶwߋ? ,? ~=z nQx\<'PT_=mCIy9Zl}oXgFņ;+z{~ GOnڋ},5Xz56? c*lٴ0ni׏ L>p6dY|6/0bBX[׶IJ1w*tjBNI)vo^;ֹ )?=J*"}x[o@[hFNEvmߌ7?{b'7axV` ,LJ4'wM{q|4/!?BAЇ0Լ|s}O<*jP^TJ-0G#d#-`5ilD w(ƿ|c=qpTEuV}-c=}V)ں,p5s#}=XP_à[@ kh|US[lŽ-Xy= >v |XN4D^Yvo޲[l^1܉*sPTcǺ|5 :_?"V賸oe5BcbC.yY@R^P!Xomeh>xųHGIQr7UKa 0ӃN[ソS7 aGp#]4:(H.E]Wx#xgDM{m|>M`P&T`Ab/lۇl; @(rlzCtde` 8C v⭝(i@{fe*cYf6:Ow֮EX 3w߶zz1V`[042ٌhj) z{Wqd8_0ل z[e]UގcE35/ŵı=x@7P|E󰬾PI,+Ŋѵulxơ}\v f8@ؽm s_GA(E1E(Mx0l}EӃ^8.`DZ ]m`ï{_FčGqA #8kH妈g#ě˸^7 GP8cLc  "ZGOl-X*cጬ#fz=+sG[3qqqqqqđIlˮdX|jZfYsI8/Qr_N3i8*IJ^[ iT֕$.ęuO L)$7flvۺmL-ȶ+R| }I Vة ˝bًݳِ\yq$A9+PO; p+ fI}HV>9arb )J-#p&Bw`V +)c |zWaeT |whxR`eA)߅L> +>2]:E WP =Vn#/X$ay.qb֢3;H|P"?o s&'A/aM pIށ?spAJx3w /B9뤄Y9õe`%@ }PNV硜$&A> o 8kaA!kw*_JSM̅nvRpc MP}`&wML@|ifAU%0<9| I-hlzG01{&e!޸NQCiև!]:BLɀN1Y7̆)1jAc oQv*-wRI)%K@tB`G}_|.K[03˨{)b^cE;շTW3յ}tt#0V=BJ< zfuđ2,akw*)C$cQ(<>mZm_ X7ie/ #+dUwS %]FvLedfi'_:h 2_؏2W;9O݈pdMO #;Ltīv9Yq`ơHӭyNYA|ԯSњi/ZKMr{{`Asbs)8qjA⡙f(Giq*hI@D} j"r=Pv+6Q}\ jԯP&K fLw_}uTG^9ԁ=P۸pz{ ob.b5}sYh|>Ǵz +{VVVDHQN@e|Dכm|ZYf2 26?>!VA"M?@ 5^~ ‡232*nW0+@@nn.9+K\􃃃CL!N\6ڵ ,"-ryv`g^Z}p>St땁mdb+ffRJ\qv#[? /2?],aNokxV(|4`䯎)sN sfj#G!IMڦtQ|O>&h#@qVIx)3'UehilFJs-Aj&g0;/wGH'9m%h_$% 0cH839+! y  Ҍ>.frn @y5@x ˤ`pKT8XC `)%e.~@׌R)q7gGMa勣tAl Dq*s@NB S32}=ѣC]Y50ŭ܎$Ʉq֮ۛm.S4JucǁHNpfU'ڛJ낰LpbȆc֨ U0ɦfyMM&Q})$o ЛFi'k4D߫DQK&ǟ56=/H_0JʩUw¬]yM/ C̎&2+N']E{RgOdE Tdʜ&L1QX!3˯!gL5.]P {If3hXQ!tlY4ϞwS>l. xGAjmC]gRdSdng*^ޟȇY)S9L؀ߡY|.' @RǠ=C3_z[rV;pu((Q]2 i'^{아pg 2Q ]^01iG4!T#@B`uzH1ւWRTU ;P:N`Ŧȑ!3>B,7 uޅ[};peb11N51E9Ko ! o44ޔw꺴ǫ g!7艌z3\6KFEݘC3vic~\|D͊!MY0WT !9wB<,kw!azb"tўQb@*ꋙFI>08 ̩~wӡgU)p4,΄x9p[IIIʯ/ ӳIss~G?{y ƺh"3Kus59π!"W0|XML#B[985yM"jI۹:%5ۘgg1se,؇m@.0@i\5=|`vAq`o"!Jm)$̀+]LΎ23K0ulP`p~ $+}(Z^g),x5[\v{/wS1Bc xc-QRG{#Kڝ g8ȧΠ  j)dW8#7TE% .$Iu]7rđ[Ȥ~}&2:0xGsRJ>2>qlhHۥ6w-ĥͻL'龅u w$]z/OR+NӇXvMІb~S_,z~-2xdIX'K{b]0%oϤꤪrIf %)> YpE #b`yf kiwZzYҙcz> i#Y5݄{AioQ'ъb_fXENjm\|9T*ۘ "CVkbNKO5pc*2_'*_U j>pj 酚\2rz /#h`l&;1F˨C/[ÿzM瞷Z퍎ѡH{*-Fc(Q8Aݒ$&s%0zxyNbHpp 0Wur%OF(j:Wl#?fZ-f@cCS#`H;6?L&]]cOҏ0>6 >A'.++WAYEAbne0OR$Eg1v甆1$j;Rp䮻ʄ?pvE41f]$ WD<QJ1H,9t0yS*%F&[87Qq,XaQFP)Hd2"jx<rkÄ5# %cDD0--NK-D / `#.@"Ҷ*C@[!zXX&* Mf`zjVcԟl5?(-+8}pO:99-$vyvk܂bm("ҳ;}°j%*> $'fv9?ĐHaY_DW1GD=iy-] t98WrrOBL!i+2`Z-A$DBٗ|kc8G.YɮX85S3¢*C*> 3D~Ū=U]N}Ogk[X~Ye1LQĨQã8a*ڋ㪄| F0A"(@2\'UafS֞ _yZ)Zn\  E"/ 0 (PmԱ: 'ۭBC"[rC}}\8< BaU@s!Bpcs{nYiS[ۺDPS$$D`}^,\ޛAιK~ (xZ W0 q syD%:!@;G0|t<}KϨ^׌ ^9r8|VV{TFH( f 7lWĂK71`k72dC~Ɛ8Aƭ7Um^a[I _&PTswR[EerVtI`ɘ(':,^08hCw 4:V7 *_=(Iۙ_(uACUcXekmqnwIQƤ5"9=FEP\PAuN] &KXl ѣG͋Vu K~#FEPؖXa륂A )6BwYT 9< Ld[lHAv$ie"5p]v՘J!mq'J8 tV$4$wOg9i[(@dGԜAecT# a=׬pp;=lQŸT83q22ɂn~܄&PfNJ_("DelL wjqfr73;S'c]o n@M2oe4dôY_@KdP2 _9a戱~e?3֭*|5AD7l0ƍ-ͤ7zVH+( PёaUZjrNaA! ޜ\yzHf`h4hjn\O Ǩ F<+sK^(  zܢ(ocE3W\r 8}q"s\+%XׅKܸ=[A׹2Wfh Ⱦ2LLH=eP0L4Ĝ3Wn.ϕ[aM~fpA1$''ߑ^fsy 7CPqpw[4WV@;*r u!BnK&%%E 3):4Lkz`@ny #<@hoogmŸ}eu (!UUPxoM:` NWصTQC mnQ_1m6A?|F1)ݫU<)4Ĵ'9׷cB *-NeAG]o֗NbI;\dz IM?^%W͕{hU$%&1 6 utAd ш܌$)RRvs#{V?,uY_C/t:^\L% <8TBvGDH~,]@&D=mIj-zԭ&߫ՒCT h?(w aeJs)yH&:$D 3INR[QIE@0`GGGiF)lJh7LAO<J39J`DNf=Լ/V=ڎ0c$\$U>r2LLLdtp: IIu4A,T |nR$u0֐{1Q O|t4Kxl?ayI}^XlV2XL5 0S.u(-/Bokc2mEE߹rSD8QK SdDkk@ۿ-TieC@Țn C3Mz>GYqH x߽}]XTΦv\R kv!uhCyhphK5B ͂/ޔL$ٍRIA թص>$v棣48QghOEH i ߇d;"&QWZy4uwbA|3II;m# ac z{Z|65"13~0ۋy4aaO#}fBoa5Q'؀s -gݨW4 ϹP:E%&MȀ#y `ӫ}  Z:kNc*ħeC 9@aIZZmIilȊӠ{ Ydal3'@hČ8ZQA2kC˻hڷnGRn : aYR+RdeL* zz`Dە3؏E &/cؚd}v_Q)ƂdҶՍC'z vu L4Bӝ2xӪl-.A FH0L&5v-DYQ!rs,hnu"36cǏ3ls!+݉}Qg'+|'O!>;ql'v@45nBM* '&%eJ2¥&/+&mVOQS׊xG:l"!3P!&9Hϣ !=cZ=Ġ7Gw8M<Y ~wF\.6d,@0K$fE֭/bՓCWoݻ`"ሴy_q2piSAZ[H'(OBS}[^}z/|7kzP\@`%0=X"DK 4,o:L_vgvV +D-x28k2Mty񕍏 %0pz"Lʳy?3ʚeZS5O"Y%e(@FvP\^<H-CaA!-~0Jlm4bSyQFtby[KK`0 ,.CGGY a uQP |a!; 7a'Q=~7I9(+Ʉ5.K/AQy6%"0ԍaG mΰcLJowBV/@ӥJhH]H0Ma.7qf=ue0^ QP ُ!Ss,n_:V/) tb$cJ *ihRwi"~ )?!>޼cx^4fJH_JK yBK/:;FUAEԍ {V+@UC^~t7բc,D3Q -Є'u[yiDYB?ה˽7?hwk&-%pb,%҈h5*re^Cn2%h K͊ĩѧ ETWhTLTrpj$R}07uvtb Lo;ȴMMMV"{Q.XsOVա!Q3:R/YIH۹HL.#4ohP_ۈ"۾ C. nC3؜F. WDL)Vn`E!Y%Z-| DtA@?D ٳȚN$g!hH"I]#P[⑖gyPc)m<l;';H cb""pn߇|v??G%)>Rw1hB԰&6b,l@a #˄HuxMpv>=H$o 5HГYqb60QmhlF< ' ld$r~Nd,;0\WX<|p٫׭{޶&uzJ⼩½(tvv1pD( Qk4"Df;'hFVj "R!/є[$`D$r9F0 IG K PK=\ &O4Q0! 43M5qA4̌*0 {5rϴg26iPcR 5s#>W~|LQkDSލXc=܍|L`TpA-~̕/2 ^~aN>jWSuzYUHe+Wv'i'ym̕/y1".;|jք<Lȶ7?}a"\@N!/7bR} oҒl4;PjD}K秡ihωA>ֳ0hT2>* _%6l #1b̕/w >kb(ώl(Op\+/)Eg}-q|@Q~t*l5:]@]Z.w9R[ʠNt >؄ %+CHD!"NCoڵk?Δqum4vps0W܅zv:Q[ߍk#';:ф'mn_{C-0&'c A$KC𣭨l@jv8_7>ۯBLjFFHIIDOx+|5|YAoƐOz@b0v\.RPPhӈҦmQlԠe˸+87uDRpQn5Wʗp\G@aÄ&0 CwESQv?&,8SRUi\+"S@G, )ZxD9R.;n3o̕VPMx-?)ZRCd"]q'}7i2Ϛi3^/-ԛrJ6yW5E=:?}f{#M˽ޏ+m_~(Ʊ҈Vŝ3;O羙>N64 v~~>K~;E3 H7MGA ~ldֆ|+q?ڏ XcW#LbiϞ=ظq#mgkŢ4dFy;Nݻw3bjw^<3S4g>}mM{.\$1f>ʊAEd ˴Utęh5t>c:@', E_iԿFѬE,]<ıN7()gP&f$&n]aҩ'/}N$28(;}6{hM%smeYJ,;xg%_OISO6ܐ3g}(mԄ6! ӟ; LoQrCUR3 wynˊ:T392 ߹Y 3^RӴXK /w"+ @}>mA[%ЩV<(JOGqy1t|~&i_ kBA)4NIpA_QU^*i}藛 `gdg{*ёH;#QR&+a0P OciBǨ:H ?i2n ]$"JXY,f$ag6H'V"RgK7c&<4' )ڀTMhh^| 翉噤:aMIŤ'D4dfÝ~hgI'g1PSrgEn xO/ VDSQPzu}:

Rn7ƊJNDDۂՈݰC`qiCJj`et(\T< rˌ7gr-GCk~ZQ:ߌ^XFC<~1mۍauEތCa3lFWLYꨅlƶh?AAr{>ڇ$bUY&=s|Ѱ4hGaΓx$*N^= H5XGC)v'ZGLxBl;|!]:|K LFk+'p [Z)RM~|[qfݸjj#(Y6¸0uqXz ӷo4!k~++=8$ >* Ӏr(LjGf,$u8}zR'frbJ*2"x~&^\o #  MwbxPEFjzG2\Cs> Zg;bIeQfMnmr)xde&ˉT/7|ӦPRRVTA>z]ņxUΐUϟӯyyl[X d`νHKGQN*!DtvBbG;CQq9z;Oü231FǤٖD,[O0bĥ#<}|$%#=N5l^:.yڑK$(2SRIҐlDzEu{Ѐy'LD8/_D$" }8q<D-3Ђ6g>' jPRZx}U,Hj1,[eex?żK̠AMe%XxxG`xܭwE8 ZO;)1)ɰSȡACh#,E;߈6K5MZR".Ӳ(R=H!P )Ɩ'XcI9A2'zz(z@b5aB!ш Ϭg`7xJfr8<Be >,~[ɀXX(aP# <$"!pY]~ho]l~ Q__?4F̻E v'>w&&ҢaZy~]6A,N3qQ1gQ?;@D)  WwIV=vW4#zr~=`NFzR`/ݕL)[IJEǛliP0ySRRf(I,yTi}G yT%}BHC__BiG5qxiߑoTl{'O&GphBL( Po҂ӹJEWiD IR7$Aٸt3"4b|T7}WD9cʴ GQ`5ІSNDѡ8z^bj|7}BOc *$wI:~ >IvubϾEk{b7Ya#8q[{f?r~)z7i9m;GkÇ#Gw. 0gxbUR!s̨H݈þ_ꆠHZCՓ݇瑾v\n@[yfuw_;;\i@(j/=8qۤɪ$ǿ_s{7| P!T? ]->E9f2z\>T>sO NÈs G.p.4!.- g<"jP_ 5E]~O7;62j|,{sA}0KP{z}X\:FPu"p~AE*rqPAŋhhją*ǴBOk#N^* S2aMؾT./{$4xՓ1xU3Xá;7&1qgcΝ9N"6DW{0]X g0ً7}}o?|¿SI'?!J-l O:A ?O?\nlKN^VvToΊ֚%先l(z8N~QΆ"4^f!:lSF[B:/#))JX(GOȌt+ڇɤ Հ׺YFoFȤ\䖕5.h.e#(X0*J[VD,+cϰ#pO;:Ppg`lxY  mUMpuBK*FnuYY589?" "S#Km9FG`JcGs?' 0rm**u$@aijNFXVE`a~0ڐ%PZFBkuhCr\Ɖ[lK5M6D5R^dxȋ7(Qjtv^-X{?xW(Lfo⃚> zؗ/Ž-@hIf2w r%X!\ UGt0IoM5hhHdž'Es.2r`faԣH`ȤAa|p/cMxsxdD[:Ï?5NKzRMd%Xf h' Nl{,NѮ K-/BCUYfίQ`uq0~qĥg ުΞyvxp9x3* ٮGBj6̪ Yͪ/߃2d '~; x`:aR\TeyX0L#i:gbN#"R3K%#cuBcT: bЋK@ˈ,,ã(_U`jQu[{$ZD1 nyJu$vTV޿x x9-a"st噌֘~2w lLƃ d&s *= @$""e۱a"޾; T.ODjﭬmԖdOGWuwoH &/\o~37! |$Bpd.EX7FD Hjg@5Ə,=Ճ+?E}csŠ'x5".qZjV-%KB4"G= ō{tttZPRWF2UOh(zj_dQDXPKa´|Xb,J :r7 䛪?=ĤWv+ v;MXsjIӌC :3uSyu[SN)i'bT8ztr,\0!W^e H=wЕ0u}r;n$RֻC 9e&P89Ly@J{o"& 3*4GCUEz6\+Yc9UZj+QMHh1~93Zg5^i?=prMo=' l}&ұl=U}o 7qj;=3Wpv`ӯ6qPvR {m b"^mt;BOC跿 8(ߌ0[Czq|G/M}Lh,C}{Mt {F+nWۦߢ[{^c̦i,,Zܱn7e3Y)lv %a#tuZCMVX5!!m{%Z-UxMhsO\J~`.R3xxבmۂA.26NwH p01P'>'vEY ` 첮kUر(]®Gp[w'x\.9Gՠ NWI1 _ϧmCKhg=؇Fڱ OV}4kn֔|,+M/=-gΠ-8w,v=pRE"j5EȵX,Jc5˱g&FN/x~Ԣ }ZCИd=x]h\c8w4bŹg R ٰWXɵgΟþ0 q9l} FK)9H6parԟ;65b13y8C< ꙁ ha6Ӊ&n~z{Ms_[.ۀ>eq ؇W_Cɀ_# Åt?@CGS}[UB jB$c9 Q4p`.$,’y %w?Ϣ zqj+ ևaL,DA$ 2ԂQ'8nHpYj!s {0X,ti4g9䜣hkNGmdebwG7z8z* ?2o  #jH7T#"bvИ kWֿ\[eI$f2kZJ z.V6P?ㆧbhi <$BSp.CAD#Ũ)Wɽ8;mv l=oGע޹?nOm~#Df ;P :i/_0;UTǫ8F=Fӣ.]iGAv>V~뗖"%~'BTi<$zؐRPk't' xx`gg*MIˠoN%C'aNV#.ˎ#y"<(Kkho!D ?& # S#p1*rDҩʼns-i:ΐMm͠0GYM5ЍoCVj,_̧ k7=Ј; ѠKҕ+1\`~ ddc`5:u󇜬]d-0B؋@H8AIL'œ05"=<)Jd|8[y ^$4b`ƸF PVǕ\˵hko'`O*Ls,(Z ȪQ{z;XPZ(Iƥ[H̅)\`^lXIw<~MK+:Fz<84it.ٙ]͈Ojkʒx=ΞxM7FJVѡ^:  D!:>v cx 5-#5~G]ĊEEERjt䚚C-M QnmAӀ,=)L,7d'IE=dŴ@υ1p#!- qf=1'PCfN!v >) ߁3A4s c r0lC YuO^'`' hm1Bҍf#H#lҰ,*V1)+B ""pSPe@U0Jԛd;{ţ gyO2'#-qzوl777#d ;"sF$c;L:R1Št 4N%2q 呗>-u|&yѐm '>lM+/FK['3"=ygTOf'b7=fՆs][mI_ϧw)i3s} hO؇m -kH裾xYUh)>R,l(kzf!Jk@vn~sBxmzDoG"iS}= hb`0lƈK3kmé-GiNR\T"ĠOl'V9&̣kˏ 1E&yʼH"!`YR%  А}jJŒQPp}RElumN592ܗŞLpRֹX2W2#@յv1]VVXo 4CY ;݈et4K:Z( 4`).Jǽ0_h,ƌbf !.+e jxxq?&?2P9f\K_w#>>ՠϜi,tiA.Hhne6t)NPތ>2Lnnn4CTrQcKG[WPN<*u (Ssh1$g8̘@0i~8nJ`.a̕ p>?%uT :='Jm~ۇtwOh:;ώxoI=l=Zk˯ܕxׯ`﹫83ms㟢SŐ|o8hJk v;nkd~s#?o b[yl;Ʈï^)NbvbB }?x𳓓^CcfD?{W۱p!^V͢ Kʇpxxmp ;=$V7~wJkMoUW&wRktpW^ʼnZ~7xݝݺmo_ů6K*u'_-toݻsD=s]9E}0I;#9p8.%EI*9}K̆ȩx_ ~^ڸ'B(} P[6%7+4I32x{ӻX\!{qC͡Xa%GQp%_kBCC'RJ2%a㳏y BB*.8( ._Dؘ Xv>EXX8=}8xL(M0'alԋǞyqZsz;-Y}}-WqT pɶlJ(N9WxܛfN&9 lݴ ^>I[Z3/g E{gz<Rfҧ@$VC|(t12gnj;CP-.5bEM,wvBxa|>.:cבK*ؾ V~5c"2.Zx._PZ9X9mx=֛JAxyxs@O/p;flrV /'j^s>4߁_[>x !^GW$ ]@իɻ8t1zH99a F>SSaЈD"">^`ߎ4\DЃΈ55Z| K*[Ѩ6#nC(qA+q\FX t>.7C&}Eh*C{":IhPԅ8{ Ώr4ThEEX\9BVo.gvA:+ \׭LO]<8}۷c7#,?TBnj^ܧf5fsha9Ywf/ꆃ8w_;GoAOw+~'0`^v2} AJ" s^|'4z ެa)ڎjPyJtc(/_5KʱdSU0xdXunW`!M YEHMNmoeL4uc͊xxr硰`ϞKO~pp|;,鉨:s\É uH*Jl%,dp \Z{~ cز}= *,X LDƩsTY1q$X\Q,\{vPb]"'cAa)U`A~) `UlhM7ڍNX$;% *0\[$6S" K`^9#8~3T;8S [J*zK)YMUAR,B£& Ҫw u ]pCcy3/8 k: dE(4ߊ!khvO~I q0B/= s|7EÕjI #ə+-Ae˖cxp{?{q,mwDjUےr/:iNo'&&)Nز-Y.%YՒU!@uawپ3,E<<О9s̼~|LO]@usȬ,'! a92QS]3 v6.D~ b"A7U'/مNKZLIfaCe;dj14gtՠAUS?R;-SƎAS% 22=18՝LVvȇͤՅ>AObǎ醇eC7@塆RD< tfyy1`1`Xtq#Jb4v{ncKƭRJ3oWo8l8_lD'ͯ'#Ǔsezœt{ٌ% mAgrjxA7O$Eg;_9xy"w v20<.A [^X]TͰ$rW/x#x.BgG;Oe֑ASi=KuS~!f~PH$|iz'iQ*K""X8No_O ԝ`unh9}5y?`ص(kESipH \*A Cșd'Zmy<1(MxP Gpex߂CZ.&S*]`k+'VmGQC =`NjaizKϗw=,Atw;^Auu?DžI<^d$ݗsu:A^xzňe3"B~^*{~ *Eʻd]_/oQ)B]W-^yu'I(8*D>Dƪs~Ƌh{#s/ p Q[P8B~)q!h:wJNH+.oh?* 7yv&FM:RLLp蝗pb"|P!akڪPٮetB;N''Gh4~MSTȮhYPS{wkVe8vSH1<؃&'>x /u %xݰ Ɨ u$b|8/EL <6x¬ƙ#z+ލvn&t"eEtJBUT MC#3=]ƻ|^^3qЩ k'yV%MG{SUYx}J :u?{FJ kR DC{㛈[s+B j*: \).-8$VHCzj<ϝA7֣m{:! R),7 /!ÙˠFZjNU 32hTC'.5z+oY^CyއCl_d6jc>[U ͠)莊T@4C6@~CߙmMQVY ~+XPv 6urٴuE'a2Ij^!HJXKªe y}/$.rJ;qPprޏww zY.t%;a{09= k=H`,HG"@m{4D\/8!_ܹ%seVF?s6%4F &mi[NHpDSt93ZvQ6W5>[CfJ3K$,9?4x;er{Jc28XBwO+$X||iK"mxB,.ͮ&| {rߥ{4"Xx\q 3dg;Sr2WRg}'&g#fx>6YhCD%ߨ%?MA,Nor,N0A[ewS7%7o0{ϽM!<; ^&n0_ǂ$5Y$!IXZu͕ JN¹S.51LlK%҈KggzStgZ3kez+ -"MgkN;XCkG*.ǰsoRe|֛WG6'IY\Ѿ6Wrq6m1>IJ3+:?_ Q!̎( [6m R̩AgK5>ezs;m[|r3̜pa.2#mp4ǧ!bIy<$g;)dR0 gljf1b^9/2LlIx|ǡVh}b6#g. HY0۵Wfn g,6 i&xֳ ,v Lˤs4ea%J >]h%u6ΩL&Z̀]G~ǷEl#z˘ "Wae)nNޗPV0f6B7lia 7 p\A7\#C}5!>&}AO1tKh9[Sc調^ "Gsx"$k3}Thxo.xz+Umu&>>|\h:#F p#5Dd P=q=23 \7wGc2$ʻ\F#a`o^?Bmp~wEۍ}{v\Y3 q|Rs30X߇$(@vV2ή:P\D (,~s~F`,AOې`ˬChcf"C]\T6b[ gOaЂvAJ|мuB~xߣOVJf-e8wJͥx}An&ePk9vxmeSn &xڰo׻xP3N;;;hfݦŋx*pr-j\92{ ב@7kQx"rdἎlԓ}?hI;ràj"k|{M9~w!U#ÆSUJ^PG#@ ΞCX}8|TExdrn EHm-qv&h(8mТ_*@bo%[[7`γvt?:d؎m܎%BR#5.03")\AvF‡LEe5X Qh,/C`*xCmvke,8._tלǮN79qC΄w$+XfPt8"8}NjhA[4pG?kVN7"lFy;kӗ4sBpx0umA{ܲm3v)c%yzNT^ Gq7 9S)eD዇PW^p,c_v{`h4'^^2dZN|uuƶ+?Bc03Ch_܏Syz?Kqm둑 Ag<`'3kEPH*.G۪QENBT좉S}4, Fy~)+74DwYzc]5f ځa. 96܁Ͷ' ja۶hM%>J-YpKEa>1p֪5cM/Nqxh7G^Q%'R \6$m5`oa6NσP:Vd_DZ%J婡lxg2bssB/''eEn\~E.\$[u5NJ(5it0 ||'&ƥY,Ɉ]N ukĦc[ 0:*vΚu Kϣ[CMEUU@c~Og ;Zk@Oi?Bc|8wJk샂b'$:Ŷ&ز g DjD>F$BͿZ_FYϞ?E-91a0)<%IYòe(څHHeJtT9X@ͷf!79 E0q9$oDR -(: uAϻpnu.Ŋ i\hu]y/߈OP醬{pil1${f?k! G}zlv4Cks7J.|QS$*6Bf&3XT]L(,*E .AC$<-tec=bK PK<-/0߂Kb! @ r y 7BbkGyYVNHT^De#tx NA3y>>OgR)L8M y%Y!0HdscA54 \0OoGl2I&&C ex M'9hѥзwQZnx›+A8ʗG= l fABt(|H \ HY A1Sz| ˗3r:fӋd7/,*Տ2,Z 2+{Hb}>ܺrh޴Me*ϥt se1~1Liv;/DշG=\9]$8w܄uMZ 3%< l=t~4 Զ_!>E\J(i f@Mg_TBp2l߾}6UUU쀈@ReXt1t"m Sq6gɑr 0~Frӌ!Bu2-h 'TbRAK7M*COiGk[v4Xhufv;bp68N;s:RGMfŀ/@zOkc ,ֱDV汐'ފ:譤vGbHhMgzt#_7|LX~óQ_[ao3hs݆7Bk6Ѣu֙Vle9Z9ˎ/~CHbQYt};_p߉[;Y];z\*=> Ko}F?$7_w]{`pDtm?ONJـ‹ՈZmc~gί u}HI]ӅG\Q5*PR?̬d&fK&#MC] z](-O#wE*c}̒V;8B8xyySȯ5Ү*ziF@cg?΢G@Vj ;;\6RQ<2sd"pt³r牺x#d#Hh@UffR ]0dƆM1%W'=q kB0 )>zסsBBXv7$nU[GXB#ʱI NT`Ev"lE}\<C-G߀?<&7#,6?wҙlZR\/ FAM0g!GO'}˭>71قex/P'}~AXʰ;ZZؔ\tX݇;ۂnY `> HOW - Ś5|?*jC%qKr.#pB6؊ݻ`[a]v:۷@[Sn"䍧g,!2%uznaDF; )(OWF">ً'.ALs+2ɇEkĝ< :#g :*څdTA!)Y*k̈򙟍h Xj5jh]nF9!SϬ rurҢQC62GO pڱ| \dr%Z/90^Ԃ\e-7AhTVT?0]]D6T@04b0p5~GnؒM@?V]Nqxsޡ^2]EGBb &pqsA rwY a?tzA 28XԈ܁I.$w'}-|=iȇnH ><^z%%fR54!,2"Ԥu7nek $&rf'4tYAd(϶KƲ(j}^ c%;~s,?(s# uP#W%]a_"qtV^D?;lwوwBWK3l{@Sx{PwVfMNx!!RYMkPy :+b7dsXrmtfihhb㖍hȇΑ٭V|Ps#$C}x# Q_ 1P+: dtWu,"yۓyS`gfT¸1~TRn>R{.h4A _\e]E`Pr y ;j 7+TDY6F̫nѣO EU8v;x?+7xcX}`F/owukɠ/CP[vV޹Ȼ;b3ݧ#75mh`{?J4V5_;o} ~?ϩ섐5 e(I /"xQ1Tݸt@eXb%^2WݔoX\"# 5s.ൽwl,6('feh,Bɇp1S.; cˎ7:,*wtϢlJ"*w= It|/{arK~ ݄U9k*X4߈G} s2[72y4TUG ]Xʹ -Rea=w.mPi*ݯ'1}^Cp}ؙ˰>~@ߓiTTe6 ݆.egpچK AAA Ro//G8lO9'Yw4>L@@@M_BCCDEQ8g wR1XJfԡh@16"D|: *BD!"DB!BH"D A"!!B$"D BD!"DB!BH"D A"!!B$"D BD!"DB!BH"D A"!!B$"D BO-vj "xQ!!bL#-G"D`&@mB<8B!B ɘ BϮ p$#!BgeG"DQ"!-;">8ΡD B'H!BgV ȨRf oo"D,P2n|1xyyA`xxx*SD7j1{acyxxxUT"Dܤ*A":kB` a&35D5 BMNֲ~Q*@%J3$LlQA=5!~݄@I ((A$"B>?:~d3)z-Et|&B 1Q"!!B$"D BD!"憙.]!HF2I-*p6 ;A+YL#ꑒ}vv W2F pR2Lk$r f .䚑{qwe#ˬgunHŕe*6H 7!i˃-[5g-qK_>t2pUAdY!?,&V{0?{_ |!xAPGgCWϓs $@Z)3i !eoHF@HB~XW|Pi/C^'RVHK^=B Ð4}S\>ɾ͈L!Ad0B4ݐ;|j  UTz)VB!2ö+Bq Bo_H.B~vE\}!+=\u<`CHB~iE[OqCO#VR/ _ y*?XCMSAK\cEl&+>,B*dĔ:'! RЉ=Gght"Hmlz/&B ]?H~בA |paKFin=jg-^p}UDIdd [6OJC )o;$JGH٫y+8Oh)+M)]LE@n"aQ W)N Y HY餬Dm|<<?izB_fMA`6?!r]F=$ZF'>@~5mg68f N_D71[IG HtzűCsu>l ^F>|;1_A~gcLs,U<#PZ.1m_bFlkJc~:T<s ¹wbMA r̷[6NEV6j tg)kSP YnpCz2iM91 N{\ JfwR61Ȋ&Eѫ!m䀃4V:j=:IKa)+EUiDŽhng1ANkH19 HZBVNFgls||wrUS o"QVq-!20Lj3J/Ҏ'H?J J.qqql+i AS >S5)D}WS{0,Gl Du ıA' r u3Ϟ|7Dz:ȆfB QnDPӶk`5[h2 $2"-dkOc+c#3ò? "fP- Kt:2Yl*9JJIN===Xf͢)z߼<\ de \i$4Soti_-щ]/m5l"3ulѐ]+UY_`GH[W / AlPV*d|f. Q f& u>ڻKaȘHR!}; ;f@_Ik'1o0 FMӠ6RfBPU:KӟkJf_2 6P 3%tQRd{Pu()X.W@j1b(dŹi:BN0\`Zfw]edFײm:| 4@O=! LW$t A;GҘnM9jr :h:wU:LC % e(9|[rB&9 PpͭɻkFb/jj.;6CY-rA~W It%T^S%pU*+RCa1ۘ`3cXښ醫s#j2l!3MM:&VfNX6 ;@u"DlOlDn#xb2 뉙?dddʷ>j3S#Ű}D4"f*1+ԟ +X]l [S8b2M0䚟S 䱊&RG8v}$\v(zD]kwP ]=(¼H s۲c*{ʠnOJR|BLV&K[[./7 ~盍Cun w_ LRD =Cfn2ho'(!+=Ar"3̶f@FGt#uvC^& } 0[X-;"HTLDIa'l87B!2x |#;},D}rAI>k,7FɄيm1(X0L}4MX*er Aw@>2&@Lbb JB"FG= 3a.=8g%yRs:'Vݐ]gmka49ߵngH+!Aش!͆6h# W}Z&AS@L$*9m,0ɞo O;E*1RWq}{ŪLb#I;V|Ya`1 G[i8+M IqFm* ⩣rI!Sc2PǒUaXVv,62ZD2aYs A 1G LT5lYi[ Bƍb#& V~U; ĸ 7Ȫރ4jWة@WR&!W aH+d H4d\΃sƊ UdgjU")wػBԭÐ#fy k͎e{ؖ=L:Lr0-n7)dchxC#[j!!EaK tɍ/1^*j`i]2`aa&_UI_=4,KIIUM>:gRbljoÜACG‡%u>9SiH;d $M /P'x_KvIͶ=0؇+$%Ѹm@IJG.Q20{eY)0]C8nsA7#gkp ŒU} gy(9z2$hE?s{!,Ua%Ts]q*N3 oeۄ!bVǩlƫr"D| *PlD>p٦ v">c]&NP2TQ/L*Cgg8f! "$d̛ا@B 4Ynj]tԮNsK]>:O.%drv0ؿ/=kœrWyl%ډ3bCQ#7j=|A_ ^0 ݐ>r|nq Nxfm?z UDEd]vw$~s`knBX`',YЙ-pDZ66 0"ƚGIENDB`tipp10-2.1.0/release/help/en/img/h_results_progress.png000066400000000000000000000610241274324046000230240ustar00rootroot00000000000000PNG  IHDR LtEXtSoftwareAdobe ImageReadyqe<aIDATxt$y.U303 &If1h˒$'yxg{=ow[8ɖ,ZJ Qf$NAhѡ{ј=]uߟ˕TT{*+?p #4!cM'`}dq!$d c_ԯ1u:{4 Cq9'~ʰ#1<д_H|i:Ә>)Ϧ_!wcfn<_9}>35%M\WU1]z+E-XP `2x Diu# >cU-(/%?xj*Wӧa=9apxXF>8pMMM۱/o(#hU0,fѓJ_cq/c gzżѐ\BAD0{u7]` {ÀI`@A%L,a't 3tN7bka15 >ߥ@ea\XƘ/L[qwJwgi 4)=rs pHbṚ8\ݦ&&k77L0qoŞxkMplpp@yQo\WIѱQrORK|X([bq4]j^ҰhD_c $T>¯M#Rk加kdXq$v^yh4%0[zPKa ǃٮZ56iJlDLˈOq7H7  9IkU"k2bʥ)'{= MeUc-oKj#OIݖn2_5Egu#YsI5̜?ݤpoV&O+I+ź$r[0.ȡ4Vi-R kl:"4ѱ8QUDxR$ Hj^H~Jh<xh\X8LXSk_6b ǩ r.1.蜋 B~$GQզKb?Q؛fh!@1IP#B])CM/͟zN A0z$Iz/U@yK^1/PݓPT!> W8[\{=$1,=j OŔ0_<4ulakckv X3cc%|1Ga\8(P-9* =frS΃i mA3ngwmo.Ò L]<,`AsLeZBQ#Bt32׺E!ڳrZʶ\lpS `ah00xӱ  ZĦNY8o @BlϩFyPE5@Q|:5Ԧ%dSmkR7 f=Q2S#LDg潆# 3SYr+ܡѶ_lB&:y.։xu* b! SĠg$a*ך N̈h$̇Gyh>-'{=w22xm! qY,%醦$Yݶ pE2ؒ~>k2 0ܔ~_!R o%%PUsM9wZ,/i]0ׂL)G[gW8mh@r{]nOEFcǣ[& ɿcXwlC urܜϣ11lQΌ1 qVl3LA=ضb&Ⲭ{:s!XF x4Ũ;PhT2tC#)T ФQEbiV9|8H Ǽ(P UTw!EY܆m;BEcÃzT9 /lD8T9US(G4CSU1>CŊɘ:<4K _nد̀n;M4.qc"*on̚Yp+LIє8 :`9ZO 2UsDm5#BL-"YK$YK]3cSc'CԌM$DL;Q:ցJXSs{~ I$ Ee$uK MѩthoY i%cQ4K*Dt1D0w7V붭o=,?a9Mƕ$T1-`y6po7(|s.”`LT8n*DO0CM@< l'AoyiL;-D`r yOJk6" aCqp7`MQ,r<s10a, ;vKY^>6ԧkvBa*XnjHd x07M%`@!d$6X>O攖8͔s?5kbZVygerV4 f^Ä*;i?M{:m rKҸ[?'er&y:2W_op(wt&eqSj굲a$uVM9k9ͮ!+D錮/4=PC+BVMgcND,A_c:Ӫ^Z_f&mƔfUth+jhNȰPXW^]UUi%n/dRIZuAI斖\5d0zy#:7!8Q@z=ŘCm'ן(h94O)QѰpS9)G;ΡT>Vn7fTIPh*kZZm|c_zЍ0c+0Yr A$e@/n>=7 Rccc\}ߧ;nǾk"\n` &,ivvsN$] cQK.7}Z@! d<V 9%z$q8rffJ?sITUz} T>W2hoogs|`ǒeYvmqľi-#<h޽(l^9iI gg;΢SIeAGSov];sӮuA3 L=r_5$pe,zBx9C߸.??)X# ӹB'KW? Yh@r3L Qi-<V"&Fc7Zd̿銤 U'd ~tUn.!r%ta&t%\R1lρj݄x{)oځK+ɴYWMktL3ɮJEMTks=MJI"툨E*ȱ:csgdC$LQV1F@F㲝qqbbݿvt1tÝ@n^.}n ;[%T\gql{:0Qn͑!MAv٢Kxn?*d sG"'Z3F ˫Vpb'ՠ/%TrBbbCE3DެWa6’BxC{c N< !ne<*d7< F TxeW"Dž<,Ftvމ,&'1^b#Px/*w"&tx0tOYi E n^ V+DH48z+:uϽqWDk%Wp9+j`\F// +8Ee84mw'; ]P }n:ԯu?,Ra6ylmqd:FrZ,D[srM×^.Ga>%b|`@zGs,A'Gߺo)PRW0/D~Q!xy*dq86K%]߀&{Xآˍ'UXC +ꅥjmO>db 4SB[Jsفt |F5?3\j@MpG rl^Ӎt|ևh[mJ4Ő`!r3 yЍxJ].T`7 :v=B,2!݇!f122ˊ1q|tŽN-,Fm%g'W^{E8{/#Cx%,žK cdp6DFa5fadr@v܊,ޒ.MwYuS[ o 5}DRQ)>BW_Ue"Z\h U&qleup_߰ |x|cY5~I,XQ +L4Dx%<0J$1/focI8W?^}]U勱w[^.Ê 27k!ЫmBQ!d!04&LV9֟OtOB2npR: ?xcF&&PN\#@bl:nآ;z~3x5\E#(\c .dpAzRȡ2̑n"~uy*s97߉m۶!)Dї="|'`zrƗ2Ϟ{>ݴeݚç:7bqEXvT䢯H| uvNFcH. џُ҃`*\lD]}9 /[eؼi  L̋*lݱϕO@ FZBU7w!/ *VAi>Q'kˉ+=jR= lXE%J˭׿Mܰ ˰dI-ъamO_܏ (5CYi&rr3!QHmY]O+5mb* ^y)W.5 h>qa7Qbr3c @8n rT/^%5%R}CL#J;e#'}~ mDI̾#S'`=rh~ O1G4< {%G\XHeEx'"ZZ.Xn/] z%Zfa֭] *SiCkN1t N"';;/>M 1<ڂĘʡt͏APo;4)@$F<*ˋqM#= Źz9Hõ2Y-Cssw`\EBw r?mf(?J@^bb$:%˩&0'iRg(SP(pe;t]c}\!U昄#ܦXeD1a1 RFәy`+B]Mlټi|vuuu1Jϼ6-P*u(d*l갵|9G*s `xW~D FC,/g";z!r=nbl&w6bb!dnk,鐥C`Q%p4 L QdYej/R'c`@WƵALt\@3rfvF"YjADm #p-@ XF~)322浹@y ̓yRDVZd̨*ꖽU0rXԤfhIVnAcljlNGŞmӯcSH2Î<l1Byg&;CJIvJs]q<ݒ5k`Pi/_faO0((42Ѹz|fee!=#|e 5:mvMٌO_GQinX; B΢ @"h 4M.3`X9)P0C4}a߼ >8" эދGpWA5 5ęk PtVC9fCV+P:nvs FҚw7iA煓KBr6[^ J4)(izgvJit5".{ґ]=;W$4dۻ&v KZwpp/hkshX^KYi],)֡ZAq L<K,TJtS*鵂=nb;0+0Y䃼x>i9سg;[(`t2c-Js N+(@3M@~(鹒U5 N`\ffJzJsuE B*ܷ4g(/GeC?u1Dz =-(+F šZ~Cgg. ovL8wQۈ^}}=xU8~W/A{K+Xz9j6g"xu4Џ~Kt,ql[|>8.#X 8jW݋q^3P}XcT% p&,߼P'4U/'1WكA'%tau~ mIܻ}ahޅ(g,5_<^^ 盛bIGM2r%]ɰ*`|'pY|_glJ5+}/>Yr i}ۗ4QjfWV-; ĺ!=G1M]̗yÝ8pL4*GC@3D#ي~h&G al2_ĶX@sB|I:u [ne.7mMM0 4vm;c}i̙3x$ 15Jꙣh0v빓܍چ|b?\1DYi:ځ:J gZPFk[Q_[r I:z"J&j5xB| y /}| "ץ䳜<*rm¦%45,=*U+`ϼ VTL OC !L3;3 ~) _&\"S ssa>f!P?dRGJCǹnݺF8~ w?zZ cpb ORu-qa|?چPPV N@vغ{3.DPad4ؾtN}r x+`(J(-ivcbb=yBҞ܏獻'|񬐗ez0%hjkKK ϴu# {E<݆e@fEWjjjmŇ'/?Ckzw6G&ӊPW(a[a٦m"6D; R֮^Jp95E.Z™qffs M¶s$>F0DEy&t HYXgn14ؔi02HMsGH!q=I|Rj7v*P=Sz@9P ~Ԥd~rOE4ߝjQ-M1ʤweY,Rpu0ע5t+mM^)$G.Y)ZRR2-1Mс U5 xѸ~PIBkjj wd.ޒ8fqu)6mfVnt0m#2؍w AZ i:ul<7j-y\nX.):O8) 5.kWtӹ!b._V1*b1 K:n"ʤ^'h;|M93 ze>;qCPJht^uC`F趋VBIւM9 0<a~3+aN8٩QuL Ua[j.P:MpPf B%T3ѤzyTk$h=@gPC 嬖"^vܵ\Lŋ55!. T> z6BZhqNf$ _nDNL踩m*`aD{5,5'}0+܎kSڰ|$'g0xFυZiRYeO4 VDbj,V}<~6?>G){ qa]J ;2D|ANbiQR \05>cQ<e`+ )''Zܵ!GU'a\9E.NZn[V%b~6_xt??!V bCpю".7A4NH8nD퍱 qb2(+tc|( xŢxaf75N"@žih8~C}Q+hBϰI:< w1NtVCa45nƃ2~yp!+BWidU`>;)`o7}|[paky01"b_5K3ۃ(ݛ=8% A-/Q_EM?n}@V9Y2 <,r^9"}Oqȡ; LXY{4 -8C ~e :Tk|M 7׍|&/IغԅEelY8Y` X!u0 kx.9)5.T+9;94Ѐj͂i$ϴܑr yiÒi2{|QW_SUuKUA}a y%{*էm0 < $t;{nLCs[=`>f+fo"<`h2TWGeY7<_JEͪhZ()xEfE*bs:d"$.hOd+dI^+`obE%(1考Cs W܉rϸL4c] 34]oD^OZ~33xAZC1gƭ! 0C;v W\x5GЯ2= NcKNLF/@Bx[ vj86Csd`LٙhIRLqei*\b:2w ^'<ى##'6#A"L?N7uac8ڂTu!MA_ aDN Ih}@ol|WpVCsd`V[ܢ3 f]!f6(⩧b&[nەFs0Q^DĮ sH *2*J 3P J܇: TBʑɍcRFQ@P:J@+idp&&-4vw2ՔSʔA) ⬈c?!X TyЕk&0 eXI0@nlL)#!`EKg:gcFA `ҥj ܊\B~Jr޶a/}wi2-yrh>cA 'ԙ`=%jUx.@!R[n31I'Y L tc8"@T{ql'v޵XV094/sjDLC2#"TUY^G^];k#5gh!V= #-;}vȡFxz 2p\bl> k!|f 4XZa n5 3|tr'v/{fOu"V`EA.7w?p.HT޽9ׯ_9t}`PW̜$ˢ m4Ɋt .$]]Du~B=ߨ p 2 7aW5] G YV3Gm k3$U#@Q:1J-,'&aUT~"??8&S;8EJQ|o艳OPTmy=.gX;5gHJ9UT`nVI3@#$>ߌUh:܊ūj"h ח$P)CneOY>@I4o}~D`tw>7w@:{ u 5֣nAk<#6t19fGL~󒦨ȫ\ Z[V%]NFW>6cX tм#n{Uٳ'uB6 QWDna$FUM9K ]Td$֭[DRG;1K*bݞL[Xk= M7?3"LD6A!R 3)j„!JiD`rȡ%̔!sfq5v\lTȶ w!RV;q  E8qEIF!8994>s'w{|GӍ g)Wr/Vմrh>StM4@n3&bu~mJiDdF4zӧ<ݛZy(ݝ)-á?}mwm^r==:cÆ իCd}CD1`AWeVbcuKQT\R3r@˴0y.t\B%&ANA`0Uؑ:9Ь&HDZ F9<Hrr؏怂C; G,FzнE˴B!>'(gϜ/ݵ}}P4e*</éSR2CIt͗{M#k,%!mۯ{W'Hl߾CXfм$3yJC1;vgZv'W iȱF(v/Edpȡ0_Lf6+-JAVTd,6pȡVfχ`1 ww!f[WzdZ-XΎ9tg?` N@BJ}acEMo >ƶK{`Ş/cϦEdLM^ȉV}9м٭C*|>ÉI 5&43ؼn 6"70P&-1vp!84n7BK1یkPd ' z%N8 bXSTTjkk}wD3i/64hLܽel\V'Obr8XVVRRmrȡ sA %'CAR B 3-Lh94U%NX4̲C!4+y(2_OЁF< v! (*Eht8I_vȡyt&C@W^xc۲~mKXCE@NqCh1+}g8`@XTSMwuXcFZ Y30hlltwD رcޗKpEB/7K .\`0+V8wD#m,q@P2W#]}_JCq"8+\@@ph¼\hzz@C5$4,]EAT]rZ9P tTpyh9t$ 8<5^LLMH<&)#i9C)Kl8e8vc%x}XsX__YVY-8u,\.iuȡHԬN;g L#([Pt9[OB]RN@cՍMMMcq`@kjjRnLoN!r|2:'d D;$N𰓘м#TSRGY0P!qe8ƓloDcիW#''k׮uy s?ueQCLVկJ< Yљj:Їtȡ9 T R8l4w" 9ΰS Cg@b8Anl<0&-gJ!Y[~ -l]Y90C{"94Pb@v^fMKۀGcr8؆U[6c լB$SX!;yiDF:GPSTdees;0j<7nBoG#:ez(@0} 6bMCͨMNֹ'͏BfxMAv a^ <W~t1VDKMK,a֭[hq ADߴY^mI0?LBn]XѸyr<~t"\'L_LN1t~vۘ%%AHdS#Z񡳫? DNtC3) tK^N 6||?`TYڋ%@1SUVth/`gNs<΁ @"뿦0 eLlĩ8~4ʋ ܾbǃXXE5# 4 Cw E =H~}π`Z(V}d~%oF<ݟ递3}`d\8} 5wӢ+ Itͼ@rP3oE^%P3h= =6 ß z0axYmp˶4t zzz1gAP H9P$Q 㭷GW_}(ETɅ>DgfԆ7::PX^:(p`3A$n \)TxX]WWv4`› x1; цOQj6c׮]s|CGpc;X{W!2dSΝ;<f/ڭc]u6d>@XThH'޳qnۿ 9 e!ƣ & b]"r&Cph"9$T|E30$X Č0MhuP 1 &\``{ 8yr^7Y%h1p]cj94[NKǡOQh]gh|ǠVC@4j0phep{C=^zU*@hWU;↗TŔDD+hiD@ ;܄Cϙx'?6bWhԐ'3_5M*y+uWբx` hp02&gŖԋ20q ۰.QC)D Bh'1vE M`òEp .F<Ftz?Yx* C^6l Bc'9|MD O{68DU|c:{u=/D֒uhY~?j3o/BH5-a3r ZzДnmEDft >;\='/<;#(LQC e(GwXH*h t;@. V&).(S!c\J۩T=H_Cݟ@~ jVhk*4G9m@rP 7~mG8h՛l&oh289LYMyp-OzNeIDǥSqyB QհbjZȥ! b?oL`ym9V߁pWK6H.Wx=^3LoΣOh1A$7=ʈYhw pL#Cl|/!Q@DahmgtK#bJxТq3 GIϮ{4TB0 #PSM` &t'UۑI#ݓ6ǰ̏qE|lǃ xun6#qUΎ*}]% ~2+ưďPLê"5p]޿ł2HƫbWβ-˃.| x)U% #Þب7bgP|UGNi:܍/ cGebݯ` ^'c-/a\7`cs3r Z5SK-HGH TZaslǒ{>05.paMs8d!. ª6Οd~{1)&Wɜй<f:^b.xhCuhP߅puM՚ZCQ+̡Lr#O$m`Z`E5:r^??wZl*E$ȩM2'enxb-bJm6!5a.?02Lm 0oZ9lL٥?Al8ja \TJgۀ|Ί; P{ Lc7 1\|Lv]Z(%T5r5B˥qTTPv;JlKYQ_]^œ!xsr*{WbVR,20PԕB: ⅷ$h'tbgh W<ގ_|G l|^$>t4b>qєac=` Vee>`!4;.şnVv qhf 8p ƃcر m4&Cإϟڑ1H 8jA>`{ /Q<e{ f~h ɰWM NUy@P KW&bm$aLU <&&&v= ˛7# /189C"j>CYvD4vㄒ |iQ;\<]`:Lϛ&D FGė{PC}i~/c@HQ.1a*%-dKq5OC{ߗM 3@d fٞmɛyC h?Srx|p{".,Hf|/m(£@V%pi,UМ ZmӃ47jk*q ~)a<^L?!lq[X YȄ>>=0,)M`066?B[[,u?F=prtڔ94'9s?SD"bpGqq!%ˣ.}DoO? jcϚBfQ'حwc0t0R[SEE;5{{%ց;ϡ `5P΃Dteܽ>/QY^Cf23kXi;JdZUrss+$Zx>:ơ9M41 CYRҰ~F&W0Ҵ|^`hY3ę MNJǒ YJI޾JKC/^AKHNp{[S c$;9p9t'A Y8i9`l)V NgQ (DfFu $ 2&(4A3 P{vIkN#cC?LtHHְlp*hE#vfq,9{\P|jKt6< m$D W鸷LyA%^3ϿP`k}w @(k/Cɮ>~/ぇ%x內q?p9|VՕuȡ/\.~Ʀ;}C%kyv੟>ζF5e隡! O`އqA!5l&7K8zc(7!!fƕ7qC@@nAG&Cc8Ԋ1r$"9`:w{ӆEmI bf3cK 4ΤI8N&6i=MMiS7&1 IHzOo[X辧ܫ{;?B׮8`oV? 2B8z>%Fl "CC-΋X țViq9y˙Dwط}=5`zy)4۸Gۓ&z|ҞGV.BGc=\#,Q+.N BIT-hTP0cҒkhnlB+o&ӏ GW˟3a. c\5E)} ]߅<v  'o9\XhY_v=* wTo0jwLapTϚܱ}qZ c@1 H,f(v5Ӟ!PB= 硞!'@&Eˆ"wPOC Aik^pGg]}b$Tyz!ˍm&#1VWoPؽ}pB ΜZsKD?K`|H5nf}sWw*ѕ/ӈKuLYFnoOL'P(mXh'vz+5 :#>N$CVAhY$|"k 2prCi ttv!}gbԷf? Qbɘl8U%F~{*mSzCmc0xpUqjDKr:E,ܗBlIϡ>u*'ϧfI} (C O^IP[>XH_]<̇^N tkmU|&h>8p\AFռ+cE~^J .0]w&U!C^&\kscĮG\Yztoqc-k:DŽv zL)C/'=}M^exSx;Xi! Q@K~x7ܴ:UI'!;J{F}&̈́v`.6e4wymo1赿 L`Q ;4Z-6%^: -="Vpe03̣>2s7~F)X >c߫g͛\j`-&f!KՏ$0bxsw^v'$G::u ---=0@X+? R}9ƴܬZMT}v,Oo)ˠtW\E"c ѹȮ#pɆE̳=FmDg|96v$qLE8֓>#fA yzB]p~U0+GF@$Ϟ]gP {2w4*+Zl/^D0B78]t UUUe Z&%5FN~ְ\cbIϣIƖ}dOY}Ͽ|/Sνp2J^ Ŵ~ߡo{ N2bWX E\{ܬ ۉ9`.? j1IOroft?0vW=;ϓg8*Ɯ$2ge ǔ.H6A"¡Vn# K2qݿ jO?A蚵BBeƭyEhoa#+p5/`v991SKa?tdK$&3\wb0~Ό/y 6,nxBDGžO7}u 侌ʥ>2)"K4إkP: =nڰUQ[ωD)=2p`IwrN&¦Kk[Z4F1!e3i2 u ܅0/`h*DҚ_ݗ &ȥDf@]DG%f܍0}IKf ;^#nhMlA?4rgal>I\IFPkRX8FI^`icLAŝ#pT 5΃39cI/=-NN 1u"zPC%g{+59tq2G}Wɪsa;NzjuΔ~; ȕJ aSn7Gp̹MgnZV%Rt^\1Z ",B3bê7o]{1Dz&oKן{IH 8;V Y'ǖfYN<(apq;kvR(g` J=f՟]߃ˈ7 X)(08" FߝH"Y_0R][Muo]m}'7DmiG_!6aUfRH* b9WG~)R}a[u5MU8 k:Še9qIro l>¶τ@%уNW4S-GCj7.su #g龅wxwS9ڮt7=sIi ʀz3#%V;'C1R| Kj>|H-0DTE+޸sϊX-6LΛ/UTʼncᷢ 4,AoCEăQn1RCcCܡ7!){Y+otʒ3IENDB`tipp10-2.1.0/release/help/en/img/h_results_report.png000066400000000000000000000761751274324046000225100ustar00rootroot00000000000000PNG  IHDR LtEXtSoftwareAdobe ImageReadyqe<|IDATx}`E=y4Al9r &`p%-aa166ge[l0WuόFNYWޫWULZv2';7p z< _? ,T2)a R}  TIu݃ >G,&~w]RBB4\|9{zx#M@* A`FPP χIl/Ď΅:ifp '$ ,/D ןi0ݗց? ߟ/Sb2 \z1WK`Y>ʄs&06 "pvLX(6+ϋ`~`Y/6 |m>;x?7\-5"}֟ Zr;w)>ᖟ VcqstK4W]N 'yw!D4%HA \RACDLP59Lb@Ləf7>zjKIG(J b^KWⰻ-.';`)px*Q`ʠ2N&7:{mV;.$4^y%!p^a\^ v1<[6z@ET#_p=}5\RhX]C~~|? \9r@~ BXu@Ng;WU=o@^|_Y@BA fXNxzħY@J04,rV|~%ǃW]u >B6<$ԭ'$CDd&+eštь`THi7V| L4KcС J8 ^C( NjMM0Nŏk㗋&[t^'uJbrHaGB(\~oț傞ϟ2\AK.^Ex B؆h/ZHNfWJ'<K!I 4A DEB-Ā=hP؀IA:R S eCr:]'K9y廴zZa3}cMf%ĸ fD=F$ʬ6m 5F؁#GsadV9u~rB0-@p!c~0}hCd eQ5ʘË8X{j $p{<\\BYԴ. $f\4AroIs>%VIa"`?J\Q+y 9Oq@F0B$tljtGnIMz=¸ ?qrAl|HRwFvNL*(R)+I-}g>C*5/sd~9nR&G<?Gpgq@ E`jX?# e1'ʋ-8NzQK 8uoh=l6x@~. MP0bdQE\*yn93}_a! ƆD(-s'0i+TVHFbxFR^G)|A/  1C$uG'"&8}<Ћ<A2D(p X}O yFh00rr!#až$`2G7oz@]e*0 ӗZ…:ȡ\X x5NdL_9^-hvϟ eJ/n^3(p΀|Pf?{S(1F= O v0YSNit+a+ МfSQzOKK]#re!a_j|#&PS[4T\rJZE|i#P@P0[m<! /'"E# ;"?*Y:wfV_Pt0D }8= #XP@/j:iD@wtt nDEEAB VWJ:^14Ou'H_.5nq&#Q d|||h>+CRs|+HsÅCsM`?SeG7Z@rJ#mudI%ȟO;yI?lfB:GOSB8w:'}]k5} @, a?^}%% B!!PТ >r@&JAFF HC-OT\zC<0=42n`w{2WjB"l6\. }išs\4K֐zI}|6h::YѤ<] o8J|` K:":"e`B\"%蓠GR.-„L$DQ}r[a"?;YhgϨutM Z-/e <@^yT⨞敫?p+cQ[_ [{Z$nùCeцw:!sa>fN$=4h1:.eah 0 XF |cOŀXvq*d>,?2rnFcI: qKQ22ƨ%ԓv_jM4X=l]m`cr`oe3RBK 98VӀD#p 3X?LXf;ЂA(1 MՐ:{s'49s&Զtr^ jz0HQ0vu"9qZNG+W*Qk=C!!9Z),yIZ9p EK`mkܐiF(;%)~eu sTek 5$"FiiFO =^rSQS]LNbT k} rQ} Ñ8!)eH"ZgZdvw]it*2zRcAckR#g dJE+ S:޵c64kZ2 ]xE on}Ȍ摮+X)W]Š/4:$QSW'qH"@r+Ap2H}ːKq Iqс+W~!0:U<!rM,5kk u[nFsm ODqN&NxUɸf8  38CUZO[pn'5~?وA&13XYW;aV0;~rj!է$FU_ĸioPkcHgJ!QE}'` B ރ(;3FgE|m4R}6gySiq*QG nf8xh0";w")&J ][r!X;֭Tƒu92˯ XR~eqq̽'˖K^?'bX8a֯[ B00>(H;qRC;`1` *?Y^CfCJKkPT663H{$gdf:|s&F0:~&qZ- I)t@ 5aji퇃0UtƌAJ.;l͝8X݆D8Wˏ"SF?s /ISZeɉeMGCO}@p[(.jٌ&CJM:X Q?90_͍#Le=9vX$Dh7{ry/QRcm4JVwRB»pP% yJԡC`ː=i^0 >t8d& CRChlp*(EMJ[)}5 %$ ծk'G6L3Qzb Cz68Y bbPcpk!du@">ƪ5?ȼTRv4k"FDA:R:"#&&&oS(ڭ2Ҡ%=HHǧu'VOeHD͢rJ$'BB\nd摎 ~[P ?aj:f2 R'q~4 ek%X6#iI4t9Qf$dfE Cm:Ub)HaQІDQ^u#FE)#tz?~Di KBXV9Y=ZW 7#IQ=1lX#ezxd28:yF3ϿN35HS [HPWo *rss3囂 .lJcTq @HBШM4CFB c4'/P[hP  iuBD*N=A3ɣqq@=2AKP޴~ ~HD 21hɆUYgYB3Wx_P&]Ĭ8DƉs8~L:AcJy;&ɳz>6a>4+4,,z-e@+y?Rh%Z^bggQZO2Kd>hpfȻ&E0tJf nT?t }oJ^;hKJ_>CD0~&Qν~RNDve!3,g٪m (o_Ӆ@Ja xmmm nXycԒJE lVD"z 3!aGJ89VgamWj [sBK1##ru=C~WKz)Gh|؆E %hF-"W< dȻرZ䔚'$$b ~GtԉI\G?ĵyFܨauODUv^8ե$t> J7* 'm..ن@$4F>Hhڸ HKt dK=iy~W _*.,0 Y0"WIX:U(0s5`naKI'e)tNÉ~2V4Q/V<&N8RGu( aoCh!nPVh0~D6aSaM:|}f@1R1csQE$ANs_zP°q~( Owr- LzAX ڪPaI9X|5`ҘaXt yj[0f3*!4a;0DۉCGP:& +o & DZN( b0lG!PZ;\-|~΅1C Nq 䃜dMFjٛb[z*ZQؼ^Ɲqr=גg0"":- 14_/]1S+7. [Z\ HIP<:k`W$!YjJNQ/A^^z`Z̹a&j>)~/ MC㮍h WkcԨAھ >i;b0v3go:REr&s3LFV`4s3vJ):kXb0 4& ZblQ0ĚDef|$ o50m;(xDsЁ̟6 ٩,Æ An#*ecXr6 zڲo0Ѹ,lr,AC#ȌuZ@2&#&t$z*abA,JjPSS$DIu |-ĥ +{D!tV!y  )32rCGotCpWP:]nW\(Pc{C##6Y |>aR`悁e  yJggC@hHFNiH"=Px. 螜{!Uep+\YB;l5<+Mh'Ë<@ҝRDOO%DE'ko(anF "W Ks>tK9 &&dH}{WGF"r5wp w%|Fc3D!9\\ۑClK2!8w0AĤD2Jx"\4m\3V@s^дHܡ)WJ1 cMMMB Uh:\0AJ {^EzSMQ(":obҤIHFP͛+I]V": BpYUL{HD.+PWW'|ReyAERso U6ЙO</^,l`D* r Ѓ D$"WP@gQRv@,S– "!0FD" Op#f%]Ĕ$FH Dd1"ƴrSFyn1G]!%Ip!( D#H(̚5_秌<!(& ^BO|mf;C}Wr8|`ve{&=s{;걻5QYl\ Z%cxϡ֝ ~|{t\iڅOl8snſ>^ݻ>߽-%7;yOƯz+v?rVS-ӨJ®Qmj*%ߜ 7^zI## 6K{-K#h߄?qsYmg`롖`㣷6?zqLU.LF"?~(L4&h:|oxo@Պ0m5Xpxۯp %WJTFO0QEŚ0a-x g~-Q%3g8hX~y{++7c#?>g㯯|*SؑƊǠz,~:rg~O1OL\=̜6 ys({yB V9t^7rI8}g_nL[b,ĸ Sśvۈ _{ fÆlxwq`*},zף8U>e9.[,l_{?}Ea8*~%cۖ{ 1!8rmt *r RGl=Vx#Y P_AnnVyϨ߱_/y~}ws/} +6|?^&Bڶ-D g0 >ػg=,|x×/ڝ=#H*sj&Μ/Y!)0;ZR: bɶ&̸Fܹ`vv+F+8`yF[C9-GcQ~z}3uC[c}Vw_F,谈V3b1)RQ^^~45 oS&Č!q/bÒwɦF{-X%ڴo}ϼ6&Lg|Ed>{X3GVO:gX8w&m]* q2x1[/6^جnt?ãϾgԽb (x7Q{=|.1sUv W " DmR#5uh5EboOz \?xqSF pc2VLP 5a.cPV6~X /ܤA3LLp *ٌ;7CX@"Cߟ6o$ S0۝8RU &, :Έ)Di~'z{8Zی,4ۅm5ygƣhBZcRWpCˮAaQ)I=f8nTUU!Jl ##Jg|y~xP 1oߋCOF(-hF/JG!iz-ʈqc1bpF蠓kqchڎW]*fL7ڨh$AM;7ix`.J؄l̞2 @~)9CQC `#'tX -C~ =(N>3 oxw~Cb /IǨģ mV$mDeQpLCIfJG CcԨ2$,vq֝[tb|+x , Y+&Dcö^"l[` V#m6|F6X .eƈ4|~Qk`GUM8|<2emFv0) ožnnҷ@ @ ēNVfN@x k3}!F܆'ZAo =sO@)LJ;a7`"pk{jd#a|I*.͙sGDjacQy _󞏰`Mg'Up~8:n*'C1S` 7t{5,&~x̿.H?Xzcwa!exk_- o.K4΁A/ O36;テ56x[ӱ\Н9ߊr10Lx΍Xa:.cGѤhkaph⃘=svMޑožw9DhXn `!HAAw>po_ƘywyS!j"ϴs0" MB2]7ܰC{Ro US9 ib|a݆7݌;pM ٞ$GM.Fq 7z֘80VQfw  -p@p/,>&pvh_-5p㹐n: ^ƽ܇X Lx).L0|0|qݢػ)H϶1UP&;DߊHɂ^x(7b#*&-#>^47w 15 2w GqقcU88d& O`: 'uCJb Z[[{v8A#c箽ND4=b=IBA[-=p2W5hG_;a䈁*7= FzRr:ke8XՀAPg\rƌ ,]ع2C:5v >Hآ݆]}@+7DzSk½g|n&!.y@ZOB=]&dNJ/wĝ$*^xwC0 ʎ9̽h60[h}b`2DYt7фZk .G\:FOtOjBǸ>I!>9 H=${`+#:Ԅ7|4}0u`Dg1(/ů0f*HY!mGZJZOHZ&f($ tNdeGIS/a(&P(,, -\}˖-H#> 6>K/B-v\~yn\p@?J0@u!!"g˘|/]A_=Ie8hOC-UBM \?q^}s)ϠELdWL. TWW;m׉C?L":\ʚ.yAnfF^lQGJLsofSbS[<.?'`pu m -,::M|VK>sXdED"}bu7Fy}^φJP!Eg|hjnhD"ry!% ";76վ הoߟ4lHn>+/\#U{{W9F(~<~þQ܃G&_z(9 ՏC{>| o,^q7=_9wl=؍cJpt6NZaϳo!i <װl]%fr }vǿOLх`B tE@s؁ !Yf$0k,v'y[5Zl>ԁ>{MvWX.tspAX3swOƆo6` 7Vb[bCطn+p'tU"9r^Tc(ڶXԭM-MHDNCXxji< xŷP4~ 2M!CFaRI;:!SJhb0s̼n:R$f10u 5c&#of {wfAt@LPV̀Ä7k5$aؑ8vj3HO;^m7AnSF)" %ˢt8[\K1Fl̝7!t^~uyYѨL|╸BtE@y|ZN&>7C,o0}1&A!q=>vVIë@"oQ6u1s:.ɤHD.;h !0A08o"\ٱ5"H"5Djw8@;X~,#ryNauBw:#r Ng5i򰅄*@@#[\~em'FtRoD.Mz{{U;2PVBdƈkoȕ)!D$"9'|!VR+Y8*]POة4b x}/z%KmP$B؂T~/d0L5;70({H[Y߂7^|#~y45۰ڎ(mL0(# -) .~Asc#q0hTyMW/! PFvd$F*Gw!YUM`dPMGnBjvvA!#}K0+a44xG톷̿>B˅X8 4 Lj LcOFV MF}pG%r2uooԁ l&tBjV͞c[BA:1^23 9P6v02Mo>>9D# kMP8ӦNFŶu@\EUHHԠ PIyb08sa#s-QQ%~`2v+aY{`wP?sO7<}V|ƿF,;%8#c!݂ W^ƺ~CXt-Ln?#WۿX}o>:7Jn6pv։/}{tmsnD)I{9\J'+/nQ?^7zf8.4;. kaj@1a`tH]L6Z .XTW XSGz8 29R}ͳ&UWa0pWFCM>/g0n0KzZIGAv IfnCĖ1;"n^k͘: ׬E)!Ps?1:74-mYh9aF6d N- S.'f$T`'4=hlaٱ 1ؿNbQ8ڌc8q5F 7 sRtn! S!u!;. Jkr?zC"U!8 ;b%Jqx u=dw߆, dϡQpvPU#ۅ^72،Hkނc&LYp-w4JDJʹ-wރY7߉ni)2P"Ղ&ϛg[3m&cem3T-N2qo9(*$5;<>7N46">etr)s Fju)OB|Qˊ^'3:,:1jY:LQ6 jz]pštǀаyz5 B$ClȪi4Trf2hooFc P0Nv1<|.?R@C-HK@m pHNuBAC2i)ШtHTPІ"Z.$3jgCa 05b`^6&ץB "QAEĕ.@ooǓW?M8z~%ʩ*Uj}.r_Qj99f'I B^rɭ08OP4R LM/N' `E7i:t:F'#g75d"#EYng͆z)׆<;ywB#Q\㒜o'J)r,J.Kh[Fr #'qܤ}1*r޼F;cS,?kkUkR#5dHBUYR4U@vH@K-*T$?1rչkb202&PRZWR$xIi+FH-/+DESFJrd7RaMwNU/@{SDЮĠbD"%pgO>:3r1熹H ]r8a#Obg_"eD̐arȏa{o<T6o,_e3nJhvhڋkyZc6,VjZ۱}N,_ XL׆>´ ذk Gb!BKưRbda%xE_;,ƚUH/̀su565>~o!.Xu6Tm]k`K ^ϋYtt>;Ð28򼲰va;#=3O7dD'nD&^AWdh<_l݇ش,X.yWeG'H鵜P#h"#+驱pP(yh=%B&op>hkiڄ +7X!Flr㦏*S/J54~ ZG0$'Gʪ0:Yȥ  Ti#VmkgBG,3;;߮dž)sbǪX^ag6 ߇px:Ll(ew`H<]n)f;W-B6ރn5cJRfLL<C0'`uƱ Oaph3@SmtP:G;!gH+ OA%Y9rTu:qS!uK#(iC]A~J uc6 QYX3M[:jMXM#ȽZn ;<[^ tx^tTlAكTCUWQ*: O( sDmNuXAc$PQju[ގԢQcGRیT(m0(%&[?b&ƗauF|Gv+V#u$S:iݏ?C T¤d;wn]3JHv0hh?mCFv.|?župy\X!eik#߈L>V˜P@%S!-9 ˑws 8PI:Ys r˦ Cu{P6Fdav(F̝V&)20(LbZ)#tsnX}  BsS̽V8  13n ~:LjSaԸAxZ  aah=\ARc> \H,MhVPocރ?Ƽ)10+-aכVGP}) qصq*IQkDW@YpDec+l#L>)Ǝث42rUJ(jhZD4!(C AF-MV;P$9}EʐѭƌnYSZ0<! zVi|6Y T>B +0e:ož6:mf?f%r?{GrLO9@`a)nΊ+[VYmw;lYO>ɲeIr%\K ADi0zDF `I?y鮪W ޠ*.::e:y58g$ʎՄt&?TtO jCzf&.|"`c4[PRKGrCV3u#'`l{躄!%Ey0IDn1"Mh!Bf0qS<#Z; K3qf"36<< {?z)Eh;|>{:򒓠'B)-CIU5)Oڇ'r;E։c﷡jZ# Ԣc uL&#֮*gEvb,fu͖= A "0Z '1x0 Hؑ$EfSiL)/bldF`4{>R3E16LLL!&!N a9GmN=Hn ^$j4ROr1Z颞"1f̖DP'! {DGEDe@| ,$bv]8kN#oI;Kы;dc;p'&;݋nI}N}kwOC$8/@#-ѳypx$$'!3 kIk3bb.gKCKQMˮQ app{i#ZLBK?IOL  ##IE[ !>юUƱqK:wUw5/bY&F`"P&"#&>>a*SE?Sؑɡ짙vx;7Ejv[c''A#{YAV֭lXԡ4?ǏUq 6w? ˠAgoC#?)=GVAWX"]kou:l޷oՍ_ .lnmWQq]JCxo">A?֣ım>PNCmy&棠2Oqj|go '|p8!-c`uOc2FJk >!9i|撶a3$v-zfRt&حV`CB2?c`6Ne*XhbȾƚ w#9%s^\jAՎ}xLL@P pbv$>dsݨ}I%ÚS;iǿƑ%q6c-PikՃ'f/L8HOKAdE#!5uYYpWW0~XsVA) yr5[ sRs-XNC,UޱL+b3`͘ bWr[ 2 wkxٔSرsGq{>=f6ũxw>E\rAFVb{4d74OgߒJNj2NJu(6,!-+P0N3=N;) -Yb8ɉ)yᄓL9Iy$*Aʊha89>l+ɂ7!-=nq,5Adc!> " 16І!D 7Mvfř7f:> tal۹ CM0(Qqzq c ֓w-irX]ÜU % 8dh&T (NsTF$;{oG 3PV\9!DO_b=0ފcpB#}{ pH-_ !+l\jA~')#Fvv wc!lƕ+H,G ɠC)7:id@RrIM~m0&ɅwN]/d~+٩>$axݢ(Z{7F+``ШҚ`qhm@QzpA7:ǰ}m~mrsE.-FG;ڻ:j 6\/*kף0oW݀5eIhkA0Kz.@L b81DmsCXƧ$$8?(hxIH'@cVQ։|L`s,; .RCVṈhާ# W&2h :t"*&U5U\m$@Kk[epð[m*/_\jW)OfPke2`H+?3ظm6;Hyk7dXRtfx4ܡz-vx rݸu_<3vEȝ.\8!>aztn̋Q댰OG^c^W&`K]?ܔќ <0ω1'T:.t.r mŕ>c <`k2=_`Dp8}J^C߱q6Z.F߈B~Y!:]@ښm81CϹ0)P[Gjj,MtX}/!(5Nܣ|A,XF#X3̬<سdcKCG{;V\Kv:{HcЪ YpaM`h;XbR!F<#J 60LrQe,R +203P\Vdjth'LHHdN,ηvbFAy Ao>l͏WަۀS Vر{z;Jź];k@b|YVCjZXXblOH#n1 IwwSW" {~ fSc"|,gւ=os/=֌(xWȕFpy4l 8w<{!PBKcSQ7~y}IǤ26^C!sk>/?CZj-֌Q7׌L \iBrZh=r"~lgi KVOФ V%@~2} ~sh;uMXS +G<3[30AEdؑ _kEjc!FAN"})Pњ @8387폾oSkFr4ǒyB"g.I}EɆU:MG6RGNa#Ӧa%+e}ƌiԨ޼ H&0.8|Ztx}5Y[q@$n"3A*@RVv<~W~K^oJ G ׿|'16>K #;o cHȭ?)oX HNB BMMg._\a3츆b. BXZXlgxNچ<$8{jy< š|6;4[x՚USZ){t쮟 ?@D*')oE L7My0ۧV1! ,h'#AuL9uVC͓lE؈mEx#t$^khGq~!hbu7 l3b8$,h:u51 wOdnhtkZ4~cx=8u tUpOY `dʋ PVמ܁8:sqOotع gGK/xǯ$; UnK_eAM^Z/d\p<~UUAkx?8+-|_+"_җ>D\TCX>(\LǴZ0Ն CZSn;FQV,qiX[S#qCAE!Pcf5OHU3ڣ)UQa9F--`KIA$-[b\jaZgjբ EERb,iS𳲄 i.> Aw!3LNq'i"#68 t[n8d$lѠͭڄ #?#p*o;ԑI׾~<Ӥ5>Zd6F}Kv3nbD}յtt쵱'B¤=1Q);VSNfμdIZJug2d6==]07u^'F/כ`̖혘97KrCg l藚HhzڄXt]ƨã L3`믿8}I{:JiY=o ?O[9Mp qL #ՀS̓xd#h{]*>o6b`Wm BQx *jNڄ }w?:TX]8<[/neJpO}נނ){5*Ӎ ڋUYngQQSs'./}קb׆?F]/?GeSr@VUC۔'vUF[*X2"z*oW_5{"iU^eVNsw$SndkWG힑^8'wi1AB~"&06418  cp5Y[GU(/BC l!IݼE ⽣ d.¨qh$&5 ly)0#B+ym5̺0ꏟā׎!| *ce !x-6T[Vè6 P0&&RcKf"|+_Acc#vuQ.̚&nkW`Aw[#}ХwcxUǙpT꽧")f u`$F[Ku5RK?|AAM.:pt=| Th@ z/dEL\lE8B` c ̹x]SPۂ慎qt\Ca/t63g#HG_+B&B@bNңΠ+7Ye2}D9̾*Lw3oҧUnہȹzTm8%W㊎XBV+3UN`2Kw7#2YMy`^^=:k lqrAoHDt]: ? ШH.DjZFDD vj{Zh,HjlCiUtnE=P#)%&El Nە0oBiA.._@`.Ъ;jЙɆD{< jGNJ`ZJ˳xٹ8dIQ̀[vX351Խ#eUv:r3Z@ ;:9(JzA Իk^>SVF~g9I@0DH mtlX0InK~=Ak%A&AvstӴTؒ(_8B,QۢeQ/ZXVD: +*XȆVD::=3@ (k*]= mթR=yPrN*X$fJp=QM,',6i2f✬{L웷d?4- ${hɴzEQa.t WpZ,))<#{1x.(I7h%ʽJ<$$r[BX&@-w$'`v b@LЄH 99>O! P cJ)i 6\l0 /̚BD-3}h!EKe>9йzGLia璹u1}#R%G|a~?;fc3]rɴ$3M C}mYD$g=/%[gosr}?B} ,zBfFhA5EfPhCE,([%^ݬU~xxXNf h 34::7=yò &;I`OwZ#7d׫{*GD{6ԗ$l9/_h rԁ6›+uƛ C{aC?vvQ_;œDW/$)3@#31i5TPvyS[Q`1!Om&%BQ X/>wT}*1j,!(.^Jf@L;f]FN@A8D(,,&,'gBL'.X A _%FFh;ʚIO7`¤͢6$]s|tN;8 %t3M]9]:AxH!q Lᦨz~՘,3dLC.: ]'o(?P莮&\7B`&C#ԓ"L]ͼbX6'BD6"y#ABa˗ȜHP9D7Ro] ,H}G3zH ^ oC5 #!fUu="E-0H('SdHY+E(| Ƴ&C|C12d2VL3oD~^{;"" vA[@ߎfҖݎ0nesj.{݃Kp g#W.! B3zvg`R2~7{#΃М>D["ĢIeA m@s毨!C N?`AyM=qP2NY@Fe.R,E G* 0OjzD# y9'-ߔK,|^,ޗtDaɹS9$>"Ǣp{k!gX,VGwGQaFGTA7^CI~; (i!߀ÿ<'܃ރњhp.^&Hj1)cQCo曶>I7.Q#\bksZ͒ 7m a1(a.&򱁹H܂HuVJ-fDMb)1&O" %?Ni˾ReqytzbÚ,@xOIm̀ݮ;iHBdǰE\Iر"V9O- 䅄n!,e"!~V8dAuHd2H)3]\h̆41zIOɞw]Tc1]/,*(Cl!>yLC\ U{0jeyM K*zWW' i.H!zs*Q^QDVKJ}!DI#sY ШUظEZZ,7l53[yL}a{b\ |М UfD ̏p*4G*t1C'2 wpszOBso7i$pHe'\ М|VU!hξIf99]@x H#J_Diyn J}KR.ܙ$ z!, oEX]l n;=-cjYKdU\^GB<\.dCȉj;Ob5 bfYt%wh] ɪd-bB "iTv-Ae :!uC%SFYA J.#0|ae۬-, xy=7m~+jXV%f<s5Qs"̴fz*7#of1v<=j UAHl:7N9A iّ֦kVp1Ęp}3W02!Y拽-^8v7zzY!92`B(gspcaZBd()0rvI&3i[ʹ_Ʌ wwv𩸕p9.9N9>\Zv!7;{'f '.b7=l0Y8Oo wBZ]'-,kOWß[y񈒑Jy<./I(NIENDB`tipp10-2.1.0/release/help/en/img/h_settings_database.png000066400000000000000000000714151274324046000230700ustar00rootroot00000000000000PNG  IHDRs=tEXtSoftwareAdobe ImageReadyqe<rIDATx}`\řo^ٮ޻dKrmٖ{0%!$/r\rw$GAhB6ظWK%wi̼ժJyov޼BWW]s_Ϟ=g!ɠ GC|LqC & 韐7FEA)~i 9F0~n ]m'Ïqѓ_~_{ҔD spɹ>=QICb^Srt]Q]]-oOEI >b5u BmE3%71YK4Am3/5Kl&ʼGb3?FEi Hsox޻'lcHgK"̈́ LDL̓4 N(>H !_fCL#fo1%xĈHj5?;9WTia+t..[3kI^.k!qIH+6B4@N{!/=D'*JD̾?>i\S ]͆ l6 ;@o#&!!bĀ}?B (cc4z3s`K_pyF}fǰ$ H! D ,#q7Ř1z2xCF{<`~A ~d)|Q!`vnDn !$hݐ(c!cGzc 96b Z!%z{Cmu!UTCL(LΚ{챻ZBןjQ?H236e;K]MW}*}۶oHgP@ 0{ M@b\b03[ۯ%YB^T MǴ'I`:5KdDzf*TR#Nw(7$ MY AMB>KrP(6~Q%b G?25׉r\:]N-L6'.{ryhj~_4IA`|K3F$qW\zTO^]ԉ1-D54} P72lDTh[ĘQ& ЍF1H"B@eٶy ?ց@dtjs$z?UoeKTB.IY̆6;"QSJJ'@_?25"@3p |M` $ЦKt?n?uAlݕ%;k[R.7iCVJ@Y#T AG.|=J#1%Md?vely3=O;V9Ź^pti@/v`|}hs (AP`jt`) .m{{2~^]6'OV㦉6M jw@Ӷl~pG[z,CZ_&5گjv]HaL|ztR4zsW .YS杮ǘ5Aø̠ar1Ăxc<@b(PLo=jN?cnijѦ9%QmOos ?%Q?~ߦ__,cŞT tuݝp"t<6:t2mc38Uf+l;s H&ʈh6 5W(:sWP%lm$;uc˶މ7HHxG^r qٚ NgZ&\SH|O=19sj2eont|MYKϾ=gD~wd!7#Oժg~NX6?ӸCP%E$BV{ݷ$ʼn5wufP v_ '(ǚPGfL% 5C˚dnkuRuu?R ) æ? Ȋ8Lu? S x bSc8H+K9r €X]+&"~b"gMnI^0#Vy?$IpF^$$x wRS0_<i%F׶79{^?DRE)DֹAG `*n'a"iLQ>_1JTM15]3>WnIn/$1|_A氕O TWMt+O9'J=Iʉ3N] npY;6s'.-G)(;QrM&78.W[s9$gJc=8o=Fd8nqޝBNǘfx#4C$KЉ18pB^/DR 䘨LTfC`MčaŵadK=608(61;(:O$Q'I4bGW,trORҀQ _zi,Hwl3ɻvsDi@җM3ސ#dR_zs/dPb A_ #+a "Kr )%t@K+PhHjQfMZAwSs 9{OK0!GS' 3C#<̘~`F>`€GAaF>59gE$Vw{AN-v LFblAᰵb1-5 psI9ĥ <`:O]4M--=l"&Eْ$L&jsFzr/|, h\ʏFy TU!'kQ>qH\ri:W;Y3fEQfE3b!ں3x,YfGZ%نʭ8gvڛV&3.W?M-p"HKZŋ0D\UфOX81pc\7KĹ $IL^ؙvv. fA@m]"D@wk=xgG-Ė @72oރ UҋG(S[p`hww>XqOFGp\FJ#9щP`jY~\.~']4u PF%pS"NI,&y(KsTcw+RmQJ%w|r*wq6N8PY>3SQyfkԟB!!99 &7.:t?YڢUGI"ҨT)P&R\q,}7//lAR΋R;u Yh+#6Q煹]6>N~+MQ Y ޵!#DNj#'DAz( 9A|BGBm|%E+eöw0 zB)/B詇|t= e0۹R* %Ah;F&p>Ý $vB+X=ц ӡYwp%RV󾅒Fh_R*gAl`x"ƯdBTl&tf'ĖJH'ނkxȈy/}ڤA T81@͙CFWZ +|Ùǻr5hvUpeSxGT5jV9hU_D\v]E1\zmjBh@}~O% w!6*rI  v .A@ޮ~w T~;7}+߁TlwC Z`eUC/#/C/JDK 5bOJFfjm B3 Piqj[cԎn翑ShГ 1-Ho#Uo}i '2GrZۢPgN</FLJ%6x2Q>j#X%< SZ *}OrUXK"m{js2bj3svǸjM1~gf}̬BKGx 16{xsg,ohj"[i-74x(X_ UX; ![)hODjaFjξ0W6 z]=y=FH3[!vYۢMI1wf0# Bڦ,p*$ڹA?4+QU$jwQbN>Rz:#vZOݢ ?1YK M`P_~ ]Uu=Hھ8w:#4uRf0T10|r]¦=a/O)%Y9"Xoп!1$ %ebz'&߽Ͻ w}v<{7lQ9`hμ2Wr>Il=gss3`E&-T!&|/++L$!~,̖};ߍqմ  zX5HHHɒ[[UU>_RٜA80ߍAb$zԩ/S 3Q@uzN "d C8#$L h=닕Cb ]奉"pAs*B6h>(^yq`gmH1i<6'>$쭬=wEJ$ ]sSKU}H7jo}nU501?'PZV*m5'j/|$%e9M`܍XF8J>w&:Z,NB78[H)P : }8&k Pԝ{3=ުF_[WWn*C:%$gnET[W/?{l۹q+0-hA}۱g.زg@A=Y,[;2SIMjF\Ubȥv?N(vB4D #zl7P1w Ϳ'N ]O [5F/Ƥ{Na]HO#0m:^2Ӗ,DM?q>n_陘3o%JrP}ܓ㞛ë&/\H+_y3gc9u|SRS']TAZ,T]KẊ\4sގDYGɺCc0o nXQnGNŊ3и?mg#(\tXz%uM):W7FD0B儂+o*ZkB;vH19!?/}͍{|̣vTGkM8Q3ӦMF{|*@1lV]?srq4gY~܍͘bz{ [MÜ7_]\_<4*>IdL.Oqx\puT-ר-|5u,, d5Zrc>ׯ~IKYqxRTsqH ጯi8UIŴ L =kf;U/lǩrgFrF0sop/40pHn$Ƌx_C)+j׏ŝ u N yw u=h9!+jн8U~_-nȶTsr|Z t{O[x%J9#y:~[N$?I}iVިf^½) Xp2 JT}}ʞ)|f}=A/X\EILOsFFo֣f&DSn,ctCL䲠/rŁ$H_QBAs0gF2~],X0 .Vx=;^E[k/|<8N0aNc<Q#Rx|tD*[JF^cGӖyS ʐQh PЬ{ T)<ȘP X8#4ηUI1A y$\=JgC|b\TJKNCqqzOQ>c:6/:Ntjږ>?NL5%3 QYuavȲ<֢91vX0/`gQpJ~r\Ќ+kͿ܋U5Y<䫴R ;eЮ"L-N,pFT1O,ܢQ[b+8M /;DR xWE g003#HOIE碜t<=`%g#V-g / #)E\bڃQV9Y.K@A .R?-x8Q sO=Moo / lu;Q|,I݋3;g:ecLųO<ĸ1o(BKK n5[-2x4r; fٔ/duYLe`y_ҿfb W44FFL2~?‡r?-R @kկÝM–{?yS&OEҳB7@~ |O!"u_AMm=NĘErr2ӭˁ>uP}(82M6N@-RL%Q&%%PSۭ`)ө1 gU"͂S!+"l9 d "A$y8a/,#%52A`gpfxg_"6;q#XB_HWI|  /c{Y*kfi&"dYEbw(/!1ZY`sXU=GG±QYW`[UG<5ݬB v8>v> =9 W(WݝPod3rT,fqC~o xk~ Cl>eέPW𲗷끙Q{t/Wd%J@9TCAʽ%(pC/UBHJFnGk<^dN*ҹ%!i ,!#CsAAΖv[_c5aOOġG'a<:OĹ%|mM]t|!6NS`#ry{;0HsX{Vh8dр c*6XUJ%s$<[ro+*t{`eqԸ嬨̃p7">([ GALW.*ɅZBhm89]Tr^5/}woC=eݝH8z;Z ,qg?-~/lRj6Yܷ>W>ϛ#ʃ0ez+:̜= U"ol}-hx_{9(mQg3}Udͻ N@gqlFBm fW0གྷU(< mAg@@GCM]G>Dġ(6x.lҰp~9WZW0"J4QRlPx8/Cνڈ}ҧHΧJ9b @'mOYPfpͿC`!X ʂ{cQ eg!6P3|˝vuL%$1R ޓ6> 8'u"V-7TW~ Ղo>y=:,CjǬivL&lcq >ڏ )S" $`hkWc'S3W_=kԝ ɰx ߌ{I@W^Úexɇ˝`v߾7PAƴ|8m~MD5K,Z#D{ {Pʀi_@g3$ ̮*8RsM 03, [P?rA=+/)fEǙT-nIĹ 1(}RL*Jt sm:ͻ[څ'8DjfKQU{_ b͝!ލU>ܵb޿} $}&]r4&jse[ UfH':]wCU-0`)̻mc=+gқ8e"Y_}Re1%ۉ&ox'ڃEUלbRm%0.-ۦ#)' AEƤCsx Bwam`+ @2ÿW$&xZV~(Qp^>ϠFT̙?Y.NAzkok.6vzҒRP}j 0Ǭޟ}/3+='VLL5B2F6PI1 ##W1Q`103)9eDx{ΫfL OBxϫ+X%[OТO$Eкf6.:G,@0xA' gM'0OLC^nG"\Y񔼃>;3 [0޵GrȢq)TD;H450ˆ|/svLOk-*(Y" #ItUoXw""m=6.Ydѕ~pRN;Z"F H9\f3:޾>`ƁSP UbYtEH2xXaE(K]G#̕^o^< )2n`,ˍkѺ_w+8w8*LfN;4|ue}"̼1v+ 5?Xm4_^iOEE ыi Ro:d[g{ !{{ЩxݽɘуC'1uj74 |vr,fɳFF\⵫o <&yDx'?׭@K]Ңz=K bƬ8|G𻇟DwhZ3?4l5^YNb͗*6>Ҳ1 e___WY h4-V͔VxrBQ"Hǽ?asȢ6u S' ;o)8  0iX>7PVϚm 1V] EQ64B(+{IJuEٴgYނ˗<8c||5,S5Th\ (.]I9cu-hTCG˒b+EZdE Y`EUUVL\JYdѥs0Kpel `3VUvY4/WH}uܩAλ( ӇAW4rlϹsAA*`3 C4j,dmUE=?dBXfUJhf#Kb,Q`EBfoŠk].h_}x)I!xUo xc8,].C[NJE7b -ӧrP5<.Jo* .t* !r<P M#wO yfXܝЀnPwtl׽K|p1ę}{e_f)xyda:_VP'_%NԵ똿t1lXw}$ː ʱlV ^{y jGY*=|dH(-G3}"xO+N/}8\e&!0 hW*%Le @p* P(nF]n8^Ջ O>m~Lȁ=-ǶwϾf[e=v~q=N6 POR&4͍nW㾯ޅ\:OOAF{95w| l| Ez,UD)3 2 bir:sAJVWDR[tZ|\Gfl;@4؁nx^ WDuWr(Oi,nRC, h!{b9Nlf6jT{tV>*R {(rkn}XEpWMNds,77¹,Š#p05z;߾rFoE2!^'CO]"]`D Q|蔔^dAx=^z; EZUmX8!'cӞ;PIJqÍKt 3x'1y&&d hWJ0|.:n$OW6!S;CmieHqJQ\ {P5F /5l̝qr,180SEQebGt1v`; g4;ĕ)h"U1SaM*1 ̫O:&36Eҫ;T/ڟ2`Ț8IR}<2N2"J\!̘(rj.De- d5k >,'ee$Q m` {PCK۞ 4kAГN =!*n'`IxU1YNHmZ0 +en$C_/zb +`eB]\9o9ɷgVh'pK`7KR RvO SK,5\OtB_4mW=>{z\6ĞDyMN-Ju+D^' #%)G$ PKGskP7{ }[xĶ渦rK)ka$ DfEZA˙y =|Po0r7[dXmWYdJd‘9l*xB^ N[@l:TO*l. aө Hߧ0j^b. {*q2X}T!v:U6`M72μ>fpAǢ9x?Cŝ_Bi#BʕoE d9Γp)PtTO]Qw3^Y:zEJ=(ޚ#ga\33/cPkB9q`SFb6r]23ri1{*LƓ3JP{2y!NJ맘~aٌS+#%YFsUzt(^9q틠z/a= Пe+:NT']NpDxaf*|tE8sq &J81x<A=XpMX3ՏfGD_FZfR$}lČ҉/uKCŶ{ƦwS;[SXV“3ʰ?t(F; (2][ pDZZNX5 Aq ~- PZc?e3xafΟgdkD׭XP :/ ~gƣ݆wz/'& dC6#}p9 <'|_Paba،kiG_:IHZ̚A^L zQ ׮,9E<b!Np͇U7̆׌7_z D(ZbFdMY;„TzpN@i=N.JאZ70'lCʄ)\IF!d!Wц'Q՝yݶBH `uS 9._Zԃ76B%pzOJkPZ6Q)Kò+(Ґ0eZL?vUWgß|BUQ| ,|~,XqC+C W+3ǣ0Z};QĶVtzo8_Z- *:Щ(ر'߆+g^^kfgc bBLu=jS5AYnK?g[Ҧ}ZWkCʺkLi"_ݚ$ϥICp$=yTn SPn> {g gX sNV^6 ~t .m1v>dy ~eggڲɽ@ )\l|,Ցfg!JmV*5thA0HoGkNkq2c(Ӳ! v*NDޖ^YTzeb l=MEQDr$tn~jP_FG%8}Rvz2V@F+ȸJoi9/@ƒ6J?W t9TSG3;l8qG$B'$Jf6Ԙi0ΛJ8-<݀PLr>L`U10et~dO6\ɕ l1݊`lRNQh"[ϩF+{(ßOrcnR sA=0q ^m[Ō93y۾sYG@ZF=K @f5.Ƕ*Q)􁧤QI!rl 3T&ێFR(`)3m pۊ@\4sP*񰁹ʸlh)p:\5`o5}uRU~W?RRSԼ$p SqΠڲQh'-';#_NxaN UߢR4[=LGdB'ہ] T}vRUwT/Oڮ"xIc~c#3ԠPvjx~)q-9X㷱-b="R-Dl9adw±.|lrlxK|QƐPM 匹 K}c̄hCC6-Ѝ3dB *l@GK'p4i@ЋS4u^ڧ3|^\I#>ħܞ9(uV(H'Ii)AAm]#Rsᖘb'S\3֎hKyMfׅzhq|4qI _7|Wu3A}&6]C؊x)6U݇=m6:|6;DJä G6BLNCSETPU e!׃#'&(ӁS5HNu"v>? *ƞ>@Zlըm"ydqv ݺx Hcc^A6~JpCSĥEBhiCHI@jR2."9kjns#35 GnArPđcM X8*ݯMK͒,Y-˫qI0L8$3'fp </oB8<2Ò%$![eɑi7nYv,Y%=vwu_.t?ꠑ#ibCn zt/2l&8[nѢzK&tB@Ӂq [Cv=Y3W95saP\C^-q  KıĴt5foSTU^G ^;8_qX_^~{x>8c^-F8ϜF44O=mhM[!=\C QMch?둙֊^޺*`/,CU 9)R!N@T"E$B~f:%9aB~6qNKg!?"twA:.AgAu '7ס3{4#-š* $H3ЍZE/B`z7P׭ąp Gpen? vY'1U+p J2 DQ:ύn8꺻)p tu<6V) -t!!-X~nk%7rt#qV5勢ff,*O&={yL4n̖"+eeɄk,222JwžAjnS̐4X#cB7f- ϪWzHc-B`x'-B̴hqO3Cp1ÐBχOGفgP^S gmH=GHFjZc]T {Þ0.UgQV a/ f3ẅ +*ph^D5v ] LyX^?oEId302KL b\4ykcMYOj1h4!`EI dT/YJAwo/ @*Bۇ> AČi(E0dDMdZ u`#T]4S4n1,HؔGɀa@nR,ʕS4zFH3i,w4J%nB*HDQZ:fksV5p!reeϘlq_}+`w^tJĤ.<%l3v"$D녙3$ 7]K'HBL4A U]Γ`WE07hI ܝg0E C<Y9A1.YyXN{>͇ECvg` CCص8uAC r,YX`qI,]iN ȁॕUzoAai11B&=Ƃ(,&M>!XIk=~BTU8pb.da 7@]W"4Ov~D}a8Λ_{#Ac΀Q-%Rυ!FA C~|"gAγݾ]\W>ɑܖu0MĤq:ف+.w<LqpD.1 C%VtV\P%L)') ҈chn8Fvs k [$Gae"!0DcĪqgS%QA7">;2 x}͗x' r'M鲵x=L`$H-kWP7ZTbE96KAiM>Zd2SvʹFKxR~M\-)-$dl>}#d3,۰6~Lֶ򐕂W8'. L]\%5b$GZq碱r>T8s+ܡOT'peeuxp* 3hލ 3<̛87X S"mCl4NZD*< :~itxGnD p:HK:LrԤ2H ȤgH'8sc״2fb@Khk^+E./(;N0qx.s}gDa(WnD/X-DŽ *f[V ?z_HٔByfǿDk<{ 9ڏC@~>4W1q_!K? 4Mm V*IOݴ>(E.YU蓨 )f<#- C//;ɖm[DHqt\akޏ?D҈)#T0(xs3ReyjKIO0Ȥecd 4hlJ'L&)Ʃ/;~ V2Rt'B#,VT\sܙ]+\x^i 4gh,||cUڒ]x2ߠvꞣPe")&N!i<0Y:,y3puϡMuqRZ1t /C ]w߁H7@n"!dʁ%n#MK=ݡLբ,e:!ˬ xXmRҬw<#Ĕg4+0B6٭Ǿs@֤t>Bv.(.QzNxkXOt+{$l|8ck$ *%C{=!\pz#Xě[昈mL`A{IeȻq:!u͈ P.k44>ަ%Acs vAa8ĒHH=qs< z.نtg:](,,Vu$Hװx15>1B TE QQN5 %fhZZ, [q 3^LblVҬrƩCXY\U;vVe\Qzߡy.n tC?ȒǕ}`F` &fȳ?-X?^~Y4y3c}'_U'L\3CX%2!>ӎ [Di/J˅cZ)Bpe#%aeDiA 8?* ?þb|侕1Sf5pA3 {#u!"f04=[u u=̣.4^..BkKl9N &E3jˆev޵AƧժ ,hb42 tYty(΅2.^`ç6pS 238fbQ1<4hVȑil&A__7#Ad8ΤWf0<܊>3xiţƑ ر ב5&5voDXcעqP9x7/'+.< GoFDİqeAļ|bf/  ֨Β>ǡv|ކdͣ\#MzCxn=b6\"Ä6~X^=AxpW+ti32kӇds!WfaQT~(^|y|A9ҏ_żU[:bb0[3ؘ1#h!0.5]⹾SϠ͗O_9BK7B+Wv,]]`[+vENvi߅~v~or].^'+/_"4$D:e? Cw=7tBH1F-5xPww-ұ}0fZ> 'Tv᝷ÐW@;:޸W)YWy1|g0zhԷG?.:l#0 Pz b8a¦m[q4yh:׊Vrxεp"8 \ 5o~ouqb{fMǾ:.gwO#Ou@t @t  b]@z =F>4 .@2ȵaV0/ab`~}yCa@3T !Y")6%v^PҁAZSP\L úv>x?}d zJtxywܾa:zEu&z{apd E; %T&4=oxb;+X|#v;Ԍ NC]]|h#Uh%GujT]M~S"Bǰp5`|,ožC‰bx]}$@bNttif0dCm;ݹȉ.rX~V#x7y^mXqv9чQ_=݃ĘKpuWʬ'?44a4FQrLDM4PI&B_\\>wXقc:dq1SقO}Ad:rP (XR]b=ؒoy4QiB "cmH( S6-Dy5$`.űx䱝4?DsA{~{? ņJunMo5_(-ӯn>yBoflv߼tc4w(ut 5kԤC?(0Z-H;X(]w#KJ?sѸ-]cy4c iz`ǒ3t^{pix*efeXS[8-/d5-(Ed0B#43X<'[0\4vf.Vb<|Wk0άsa|XAVOEa]u?aP( AHӪyj+wdJQ\I <SL,)Lcggbσˈ=tyбZ2 ͯaskmEg;aVNġw>ʪ#CVWؤS3-7,MY)pF(K9$H3XT|L bI}nHJ J*Fd.!HC\L#pI8_ܗB4/R1/++DC˟@K=h|U*V:طVä7qahSO2E}Up"D}Y3YQ430&\wkO;ܹܗʼn7_='>Wmkyf>/cYJI [ !#HM㞍DZ܌owl:PM=tbUdư(jdI%M*/}l qwX@v!s啈lD[ɥ(EuYTnr:\%|2!lǗuzPǭXwc7jnv y)Jl][J,馓`nkܲOf*k$[CpJ0)Q'`zW ~pw2",4ż) 'eX (Nk>pUOQf!q"OTiAfzU@)`$ɍAFՀ`3ȸ".-4h07OR4 5Ħp6cV:OiP/d8NQnVIH5Xc~'ƸxېnԣRj(EJ"cD{ћNH)&|/Z^iׯDIlzNbeҹeobёW3CnnF rnO:0Lظn^xq$%;v6ƙM´/˦Mx FTBwnF\ Y[hnW;jrVecffYiSz\Ht9l6.'2Fr!0yXÔ Br*"SL{-FX43 Bв)rOyqvxtF˺#x NXx4HL;yˊOk1KTj !XЌ<%;K\nbi J-\ɇ}"7BO5h5AXsq5I1)jt0% %JS_^y 5hh&XO4{1Odz[g?3Eb|&jFZ7`X U6ubMdIԒ kXDZ_3,+%܈;Půtu7B! [w(ҔZt4V'b]NbԱxp܅W44ix:$o޳ t<݈³-EGZ9 Xcز]2]dA1) L!BxtQ%bgw"ٙENxY38tvyNk)jp# Z֪HkG]vv k-d:<xè_ Nק rvoy4&v>o,î7߁Qñ7"aFf_^5QaRXз1š`mϣaEO)2viaYv1/~ ѣupTBQ)N]Qt~Ú%-ܳ ܋`2q MVPbbdNS j'hk=w(%;x-/^/Sv d²Ui1S!M1W<$2_WӰn؂t z w?tBOCQuΘ EͻN taw(Wkቈxw t˖b[ .j! _3FHᨀb tVf^_Î?dbcHYE(Mާj |j`dX~+8"Q k6ܭ1,Ê-  GjHq3Í@hvƑD\Rfr[TI#`ۂUDZZTO&W1K6ѼI[q+mH kpģaD}l+ܞĶo B tk9<&gےEqc._hx_ྎ{f vi{BL \pϒ?Fp8w5Lp: ),, a qX'3+bؘ~9 d=c$sq6d`JJJn8i&j%+{2F,fBCs8Q谹cdZȰh]fN`bo̙hWV3,Vt51<;֟ h"1<6$Q!DyS[։[QZ(H6?~FRϒ>zp){ b^B<'ļɶe:duFk轗&Y+]Is=%l$W#L:˽IśHJc.4[ 60c% MS޽]ŵ ?VlIu8x̡b{[)X A-mdC)DzU"XSq_Cqx^d>:=;ϡf/ap]SVfxv+n)&' !H2W2w]^;nU.ڻoׄyec7oJgG fa0RIWc(Ef(IpqI'Z!(L+'/(P jhvB10}ı7[AA-y+$Spqʓ/S2yM';,)?KƓIENDB`tipp10-2.1.0/release/help/en/img/h_settings_language.png000066400000000000000000000614641274324046000231120ustar00rootroot00000000000000PNG  IHDRs=tEXtSoftwareAdobe ImageReadyqe<bIDATx}`\Օw{Gwٖ^+cz % IHg7nndg)l˦KЋ`c{/-[,Y{hFd wraeU04Eci#uM #L/E? KPS#[&/Ybш4aF 7f|NylKĈ9$eсGBF c&ILA,舎/#Cd1koIqekqL3\XXR)LcDX%Bct{znſ?G?~гx(&v*6b&H|=&kaF(LAfkGquZ&7m/|Y@qsU>mP/Z^nCʄ)ՕG^~|ɲ;-#͈I>" z=PHr3EB!UN>!D!pt xQ7ʡ송Li_[3MM' C"XK6#I0ů#5:Q l~Wt1c5fMb^GX/MYdxf&,bj w$ f36Ez~(g1; ,:GF^bflKd7]H~'ȡ_ Nt Ka3أr(h겐X 6M}fCKTmMA.ŧc31Ip~SX)S*JZt~ᮏ(.ASBHW놟rIک%B.a5^͙+OZHCl Џb8\/Rrv類fֻ[R TǕ4]$>ob0N-3]q)qktB4SهJ(qm - f"NgM@LP"1vD!6 nkJhiUIPf1Bu!昈@&${:#S<j^ XL92gV3n_8]Gwo;$vENFT"8H]ɟHĿ d<xU#J6)YQՆԔԁuMju!g1=j3=+G?v:lx?R]}zM}Uz}6h1ds8%d.JIJϾWb'}md/5o39>O4lPTCR[ 8M"=>M`LE3͜p)$kl23^38d*C??4 0N{ xqJd b?(IX˭=4'un1-]7jYi1˲[: Y̎i#߶i}G/qןx'11`W'Zwm MNIi>v̩d.-R5ƾgCykAH.UO!e 0~:?@lT_SGGY|%AƑZqLi!򵿽eݪwRMV>X Hb5mZGO^V72Pǹ큵{n\<녿Q8mZeqwlRq^UsTOKv樉3=7j=AJsW\.,֮c޳>x-U5)Oi[.[olꪦūh43kM1ŒRp<pqwf'S% @a2>)Xja`⽥"neZ1IUĄOӚlX$*%&t3bːb*`0 XtcԦv,~dCw: }cvJ+ ô?YnI&#jU ѫl66#5/'MiB1!kuHrOªm)e4ӏ-ZxUoVfx]]9#Ü5útOw|>G2j9K'nmL,Z>[acD3fiWNtwS/dUf?,-VUUÖ=MaȊ,u?LD 5ک9O A$؇sƒr(ن.@L)WU#ۚo݁YyIhƑk uKxvIQ)4dr̠ S.)*e6Cb`GŹp@\`/SUU p*CU*\U;~ ճc/tb\n{élz#}1U26.Ð Kt4Yz۵f7%HQwhY6qd(=Р^*ezENߎmLvLc"hawz\ROgnt\/㓰!h3HQI עz f کg3I畉yHw#ܱD(1g,Hf^۶E#ؒ| :fOd1#5'bGdנAVP5״{KFȪ@/]w]rg]{Ű .crt_zc/~unno3vybWG[qAG.`C)ӶweˎcG"( ^vcx\vb:s9dQn2FP7*^3u:Dhebdl@` !0nFd#Vl1M3rD ^P a&q u,>h01в%(>`9l"|D׷ric=>W&x :r?ADkmISIˏ>|@Tq0E^,x G-̈ K Ob8FT4Ӎf cf+d. u&HkNlP[JPSČHK?>1vqgjƝ@">$1afb"j-6(`X73KRUDX1wV,,7ztv7"DZtHŨY"\$"N*F&$A,0x^K]L\FGeMX8")3(5K2$N1[.!aԛ' e41t{څGEiFMfY<>v{@`XocqqS8-N18ݖū g H 8:]9;1pip1; Nv S͆lsE7(Qg٤(+-TyA"=|NEd;9< 9\i*;qR@|ɥvĔI<,'GM%Eָ h16 =ʩY(Fɖl'W]*J|$[} %f8wn%[}T`P3i)C5*09u)?JAuHd( {I@)̽A]||N %FyQBC&[]-1)V̨ :HkS_8ɖlgؤd]>hH]l!$evf,I"_$ĩOclvF:YNx*Nv<@k]b~Zlv㺥E l 5%GJZ̰=<<+Cd=) >?N/<.;z;aNx^8^ȦdGz~\3qc =M7NAQlEv? VD nv4!px[ů_腋ދB݌MGWKFz{2qE9VB,Wo@kO_3Oc%{$K5kUyR/ILw_ n Ki!pйNϟl̯`&*vKX❞T!kƈEj_ ?_!mmяDo!]mHO/ۻ{8;FodD8$!b+ԓo8F 1Ӄ%Pu;i$B+oj ?L:B(,!ɩAEu)q𖔔؝Лm`}G@AN.22EL ӡuORԼu{S## Sr_%y󧣱99,*JJQiqb^vΆX$O?lھތl86'UV*Ly~-Zߏ `% dgO<͍7>/~T磛DcS5w#2֎>=D!+= gs&ѭFkqR t~ QKqnGZTQ^COƵ~Y?wm*zVzγ1_xCYPe7m_!u"<>Hmհo Lg:mly~ m"~,}`Gߧ!uUKa䌅}c = V _=DQ2N6ErI3dp'I6̻̹C[qlX M)xY \P:BgId;fieT,$YiAZ:tM};j4A9 :P&Ҿ` aY~/m+HR?O :C9V`"߄3އpD@)" Ϡ RHL!;-@o6 d;C+`1)ne :whɂAC N@,Uִ<tjN`x?O\h?Vrl_:W,ۘo CViO"*- ȑ:KBg3:Fehk(+`:V峨_B+!6tz9̰/5~H c2b̢_X 6r:wz}CA'%/[v'T* oƥP=Fґ뼎@`7`$^GZ>5%O.;}^H;I^=h7ozöOp¶#ԪFOcDɑ|vIX( _J!g*/ݙZH C1I0 K͐[\unH <=m%#]YnX'#}~!ҏO|b <WdK!\I(J%=& =>CB@k^^2zT&~ӓ TzZ߫ K$}:R}Cznia8VJ47CQ:E0sXoX<8U`zFWDOFXgܵ>Ƀo_͝b;wݘ^~۰Nܷtzb*XۀƽxWmX|'qL;> eT1ǒyH;d$&U^Vb,sVo}]f\vjf(ZR5D{oK D{b%y*зh2 )@9\& ‚P ֖#p?5SB7? 4 7Ёk#^Iyس^nwFOTvPn"t16l$]HDq:4v6Omxr[]{H5avL_J3)?Vh&/E,1vȊC>d>(x w㢩sZ E>,IĎǹPugc,3&̚G*j` E9O Q/g%01fDVqr]^ȴ+VN YX58uђ2b7I+ _KD5dBũsʩ`__j,MxA@6D rP(YhDӨ[YE"XlF.b 4%S_lR5ybRJnH^cҔXY䊺ȪDSgV$`Mc|gŁrDƍ1C d ?0]뮻nϙֆޏa|W_?CUaFBegɍՙ⺨-6ȴ]ӭ4Li&dhM(^|s'/|v|"jZ$̨uQ6tDaoބƎ>i+ xxM¦UoSIH Ų+ơכuPq)ˁ*&#Cs@Ҁ%KYÈ`7-~şD(6l2FMҒ\5ֽN/eU(0h[9Spc1H\IM"0}-53+0qv5<~w0w\Y61)u‡6;95t ճb3 K]ǥ-[pQzˇ\"J0( +40e p©x*?7<pYIāo &u;!s]fcwmm_Fg^42}]hhl](+wnG]w Gע*4ٸkA5/qCC=$(~N_Qr")_ V ¤9R0mR&~n%f͚" vɍ]ІWEȀ75 k~'8`yR?DS'W5s mZg V᧿zeރ VًVc^cuر&_{?]Boxl?̙3O#%/RU,Zvų$nWV&lyEg*R3s(,ӛFe67\}&x4]dʰ>pgNq]c>2皤vH`!t4rZ)ca)'5yT^ ZTwZgeH}#ԩp*zV~dTS]r͈Ph`AieEdtyd(b\?|X~;6lډbqğW_qUAzwŨS/7 E:J>dX43-򺟟!2Az<~@ )*7mؾs*p7bYr$ZC+2-td co(Ӫo_S2Tg.345btՈa7~We. C%W\ z,,yOVd ~-*$<ٛ덞@;zӀkAMgue;N)iu.^; g"<68 7h6՛u2+=,%O#mAW6>&*i}/ uVZas#ښ؁wǽؽa2+2`k0Ø62{`uMfΝvjT!Efi95,1wU"a'^w:&=2MV|5:&MNz?~4$/!=b9!>!@2OBw DDfI^:B M'[߇偔L6<ڮuzDp;.%̈9-o8??2ɸj~$Gihي FW52Pл i7 ldې"){y xGq#0Ҳq>DةK1!kZ$f^es;2$)9?E CE)KXa ů:&+eNiL5 *!iAHa@bK持?iaewg}V{s7Q[-CN^]!#7 W|3&N@َ}MHFj^ &μ io^5_~ {E9Ͼ .UOuaqxs?.;YYH)*ŬE06yz#>v=,r c&8+W["hHVd03< 7rg-]d{it44~t&_jǖtamḟ]?w0~}_O8T4As[" W tm%`Et@Lq=:3#0K|ᖭQcք6-,ˣf M!"k? | (_|`^iD &W~% 6 %+BH"l.}ݍ(xC4N|:[ˋKobi{3*F܋@0t ` ?pJ[Lx\xN,(% " 98Ȥh"`U9.AS4cVZYu!Ctڢ¼KƙBNl)󪃧>Z&Ѓ'`yI`~\-܍$* ~Ftip"i31*|SMfnL/cżx}`YUHj|"LE.5F \ $nu J$*9J΋Θhjjog"4趴4x<XNi]?!;;{wfĈk>23 j3\.]|PuvvOߴlFlAD"FlEz01ն^l3qEfj&)P$nOge7|s PZ^$^E+C ?)L%> &Vi4{6â?߉ZNhD+GzNvk_G6K?yRS<CϩƏKOeJ(K-\5e`b Oo(| +PMn ef%Dp t5lLG0Ġ&g&jשh(a;"Fq\ԑɀ+ӊŅ"qC"X" cx%X4v' <=ʄx&hM-8TۆإA^c\,}Êͱ{M߳, \[?U TZ6tyn{$r#+?nQe%궯NLV/0ob=2Odxøxsr¨9؀J̛]5=VrDJ-XGkgm6G mB{*c0X>S`ȮuXyЍ/|j>zzp투M>n^ds.o[4)#3ZPdz f4p~/Qo<"/;畝gG O4-#PE@ _^DA}ع0av*@?nV/Fv{ ^ ONL:DKGTEs7,9z/#//=&Lp fx"Twnbo k3Ocع {_Ǵ%st:nz"1 7o+omݲn+;$])ekхg`L5 U S2Ɏ 2ΉӁrliOWb_}catF+Zz{x%\#S+(2d]DS>nWV̬(]0&S&v]=y̟YCbAEfZJPiG0 7W0 +obڿ#rp'z"| w׏< -O~Ț{'Պg:Lڇ`mD 1:M w<$VVu~Ŏ;'O@ǞI6fY^2o|k_[oo#ƌz?=x՘9f|b_< ]{uc9rߢx Nxne3BvDk"o >*3?% 1Nz5tRWF!R{V[n!E{sq>c׮C1J!sfOxt7?Q-X #xmEX!]8ƓO[.˂G @ve me.5MBn  LM+ nȞ^G 2е "س?:d`͛z7ܽ ;^_Ӧ`ǡ-MîkЛE\Ƶ\pWߏ,,_bU @>v9Nl& A>p>vn$5xU)QD]4Q0a$l+~4Ơ3lbP:(%( {ьGO5ץw4˾ec{ŇGnD2:v6(ܮvi'h\Ugu+yQ5OXgfaaAp[_̠R?I emLC<$bh8IݔwU_a=l%CO@T?pO`cTzZ+!''OS_g&Yř T#fa#Rd8ǒL1 QTPul/`I|qlD 6ɲ h2mItUI=2bsN }Y&"LXXaGJn]6~;.L-0`B?!,ْ-.^rZvg)g*V :ْ-نE0CĸGאּddK[ lFj(VÌKq?W=P}Ѧ`Ϣx%GYh٨ƫp,vp_bq.gJ&PH&8EQ_;H%e(H^2F,Q4 ĉ'nvш]l1Ceg]6qKVp|̑H)܏9b5-T.M~Ԃe!w3;;z{!ٝزmƼ)%Di?4/@L}d|}76f5D'9T%ILڑ@$v~9i <=N0в3ZVlp0|>WVKB(g%Ѷϯ:˗^x ͍  ]-0`t&^>i~VtI#`x᷿{1bm}JDdaGeW¶7B/ {V8a߆o[waĥCKR"!P&5Ջח?T=wӯ!%sAKp|{a/yh:n"oDݱ&LZ7afvn݆#>\{W15|u>ocJ}Uf@[r\dBSnly9J«kqۃ> ,*dڍdIKPKwaFǪlyq}RO9\GTKQ&gSе|k?W .HT֬l};~ i9Ȧ˫z&g< <Sg~k_#N)%.VIEYEVl߽ˆ{"} kf^66$] o uv$+^\$Qp* eRzgqhoi?w ͓a|%;“ tx,4NΩ?~!{tق!,,>|sGu 73MXeF7w>7 !oA/ {p1 㮸_DEΜi8r i99()=+`-Ȳ"=ÙT‘vwaμ(.'F#]8I/pi%8O?p$jtvU ` \}$;q:O?6ؔ wcGٍ[L9-& Q,rC.}_E e Ii+*vU=23Iׅ$FvQ؄C_8rΓ9xRS(8t-ԯ.xC?00#eg] j#Xyd4 0:qI03Q~ x.b#*FUqnZi&ǖT\wIA+ כ v'2|-0rƊlH\$,@@dLF*'¿t: Vb[N ֙6'IML&V+M:J0zXS}o w4POtмt?-|HD?8gxNFciD]|+<e'yfҡq, NCr%fJf'q Kz@n u͐UnL5 `7ޢY "\k}cm3+C1yLz9t&t}a $JL]DN%$cB+>y-~ ~ndR,Lh(+bŎ3Pd6^C)Y[yH'pp?:v y4>1p8[ 貤!|?%Z|?H] ='+IW|컖 A> τ:&HmpЅMjz(;V.s _@x=42]~l-p !+ƮFN'cz6#fV+fOFvGwƦ)eY5^݇a. A,^Fo K2oaX=pa|6ZM spH6mÄ)c ZҸ5fR7>2C$`H rw&ly Iv eH\0ah?Ir$E`w:zل.({a]BJ󓔏oVD0"]F.S ,L}mbL?vg W^ V?~r~EǑLChم+_tp =.%'E;3/ n܏oJǐ1n܏C=i~/ ̮JŊ/c0l3Q=Г"9!jWZ 6[ZZ[neڙ&NϔlO+VЊ/r%c {KDDm{i,z #83 QRdD$~\r]~D9s֐K`qKҟb-m`G ]>xxLO:ԢP#3 P>n~p 7:fr[#BJ l9jIGE8at ]g]i _!@φ8^.\0K./bO)-x/!'Aq{nʗ{{qEEVԤ঻@vnb Rݤ/*`_ bX<~Xɯ#e7\¼\̿|.FUB=x/1˰xwC9&_s`QpԒy(E q kł> *=f&7 +6fh1гn>|[W/Gi Zż?yzy6R.0M(=0[J>?gc [rP:~P#T{Pf;ʰ>@й3p<\UtYH1rT<0 Wau6g5 QLfйίtK7XpQY9E4 @ b49qctk]P0"ıLGOFv !3xm Q儊,SNdoIk-4"z㍘D$ӌf0/Kxτ.+RNj| 'VG VH+zsűڎ՟f$}I#4oZ[[`K-E#j$h.%o___l< l\: ɂ 22$sVWD2D >n>aـO7E|e<އ)((8H,vl1d=bl'yĊFF,lw)QO@/9*%Ea#߿o䯟D͟#p3LYfIH%[fLb]@?3]x8Q[SPDC_W_aMN-b+FINd+ɲyʪNo| -<|S#'W`Mв{+T> d,=^?3N5uQ#^]^)U|zɖe2/RpX Q>*|}V̚X}G#%DG#33f9sPźX iHW0>Z.6t(ɌaO%UW]e:T^Cs+XﰷKAyq+oцFtt%lH\׌.'~1-ٻ831S#d,X 9LI8[@Pv7P) lrr>0l4Wt.W5LO?Xz}by1;k9׳-I}:x0Dmq C WQ - Ў',,#P@@ J  P^h1JX@  +N3CӅadG )xL!0unNH {Ũa\1 yٞxamz d\]+_uA++.7B:zXXеg)?ʗ`-@+@ S+ct]HiSӐcy uɤpdB;<^ ly 9[ V('ݿfV2*?q@^`wwt3ӈZ^"3i}@K»L MU0EIFA yͤ E<#`}̄fRy9vo_䔭e1U*AoNqi9h튢pU>i^=FѥL6^ 803 |fxcEӠ;o;! %lr -!T'4Z -6(G_Bil>gvHf%pnҹ؜-´okb@w$_RqĢ@86&[ZUTLf8!A6Ӭw'!7gd50;nj\{R J <f2!cV 'Hr8!7K*`?{ 1bƁ# ڔo0ja9#kOi^CGÁ+a5SҒV:J.Ym3,}= şI}9;Bad[?j4" n1QM{.K|nDŽ60mr947t:#H+˧f,IU}=7wMMM]mdw l $ޓ-4cH-r UUf <> M23Ep@ZL}-P,N_H&&ȴve S@ 5KT"ےVp$#|ߗqBk=_XuxR]дV%+2 VIƳg e07]X0VÛfT{& ~ fW wDx]nEC]=T_|.QXkcHR *ۮXC/r_1YW=kPÍ#ul[:vl\{^81 7ǏX4]-%8k  &TPL;"8$ #n|tXF†ӋQ{tp"@ bi4"uF":?p`)a-&̸ ,". byZYQKQ\ꉈbN  ̻m8t^  7ȴvE 4bD@  +/C 4P@@O8N(4@0­"[jNI_ )XbN43i2A>r d '()0Sd؈H$Ty)wvvvB2%F˓n!nPCBGJ)P#RtK`dP)0"3adPlv71DDHAӴd(ApfL~n CC{IrPu{z3-! LD SbG(Tu\"BawH%~د'f.fQA9Gġ*|Ty=)2#U>^GjüFzw _J2ps*Y5v@xPw3v7^&u{9ﳩgA^kX/U{#_Sk1E Ŭ/}I'nn7f=*wU%Ȼ7ߊysp|&i9Mn;{oD4pSEJl:Q;y}|5o}(w@Z ]ON*֮Ƒp/ڙxꙷ3ZJʯ_Aڌ5WbwbZKoP6;S KwLCը7rpeSu|&l=\Rew,Úה<Ʀ}5(mMh7 !0 \ùz p0^TvfS`Y k>d3ʿMPB߿355PSe#}#y}L/+b25cMueX3xr#|rf]U (+V"$ :M.(RɺsɃ;!_RQ \ֱ2}PxշvP2z,*+i/RvVC"ߡ3,\Cxwgfᄫ`ӆ:ڀz%ҫg 殉\AMq7 ]k"+?,.4{PJ'nXbwRZhn׳ynQٙ1h fCa[yu<&4esK0d3m 5p(7+qdc.k7Sxެ9 XjhO&}Fv_\ C@Ute ھU d m6ѴHǏ9֫4ڒQU5a%pGه:bJw2r75{Hrtlo{&iBmPZ _Y2s^E,A4ռ^ 9P ń0n0bmTEQv8 VVWA]dOC 7 n F^)q4`1:];w6ڼ`(TdF[]{iyV瓤})O;D+CO$0ݐ0Ԇ[ƒ k7SjauݺO2eڟ'MʊZ@dKr+LeF2؇f=IQVr1F6̨}./ԎVJsů5v\Np<6wʂV'Ұ"յf`&@M[Y|1|~WusO=* VT_2o޼N:Z #wix!!V4i6U"Z-אlZKv(d@}عC h0,RQHiuMٔ7ruk<{/џwFSIENDB`tipp10-2.1.0/release/help/en/img/h_settings_other.png000066400000000000000000001012731274324046000224410ustar00rootroot00000000000000PNG  IHDRs=tEXtSoftwareAdobe ImageReadyqe<]IDATx}|\ŝZi{euɽ1`Z)˥Kr) BCoc p,˲e^W^]dC4[y2s%K~*GM#ƴG.n0wOOkn^.yϏ)w_wUUqIÐW:q㫿D:Qk>hfp|M|CgBc{ kgW;˚тS&r5mmE$p tR?ajO Y&LGNдY j$H@Zpp;F \q콻hTbDrBWB Bk&IjG.( ;r4Nr|HnkvN-r.\\\)r'`VcvYm6,ғTh_ux¯.XrY@_)<]zЉ C^xv<lDžQe~PWGQFϣFH U fB!$B3 h-} hAiFWAFt pAƅ X@ 2.D""?A 1}pRXU h!I>M(ebM#Ok3> DEDwh>H d+&3DnGJaE(#++ $S#pvXՑF[$5SWTW"k >nLg3Dxh}i`B"A/"za" е1J6#swD$p^X S:v]4j.|ӸQƥ"hL!/ yF'#RZ R|F<_UȸrFI$X&q軀ǃ^7"#P rb:O=KsSo x%5JZm!Ն#R,k!fG#vp} QLRѱdv6z, 1#J]Uiށa`ZUBi4Lf2i^xFxh%UD:ʆnO)yAqɎiBGi<㣢ַ}lӪؒiiv`Hk+d\/Lf=4/<Ei0ԁ;*:h.Ew"h00* j?g`{9Dx#1F9ZI ;#xd˳DdHʅ%B|OR;cVMORڇ`_IPO7rAU]F7}C t:ah:n,([Α&͜=# j7<ž4G?3Oyz=+8.%h *;HLͻ!L\`Hc/!$-p*< eYHDJD+w$8DV\1+jѡyEƓ5Fɬ8bt#|[jbݢ<ަf+u-R9$m:7~ЁVMuXJ%XM{F ͧf)IJU&6SB!pE=ua * ۩D9+(,p2ZМE3i#cmbwaܘxH'ra#Nڹ'R!IJYr~f_LZNWC/4Ut;_dCۘN"eGAL?`Zsr^_zsZuu}#d( I?3%Gl?-):` #2`r BVvf@s[QxFe4Z p55`r'kMF{L0 D_'߉ s=MʼnOOt9~dq*BƨZuazη߲bO^g+&z@@("IR1?Ts!B6d.NJɑERv]]|#O2jZxCnpج`DXMG]S\ߘ~3awVCQ8aLpFOWLiy.-Q03pqɾ&_]XK/%̮t͒C#_$ASbY,!҅0dEyMy#9%2pYS00KJP;)=K\]ai;  TP[IG搚=Bum䌉 :Ʃ_ի8Qk.4[,RWa8ƁG-ˣNP9T '0F%Cq#aWȕ}\i4b/3XºH\an̍Սmh\g\n|H .q'UrDvnE>hܸx_EF08hƟ z xyqP7)4M h9 d)R G=kUݔGa7++r\1YqȠ u"y.{=~QӇ57qWj$C ֜6t:c* KarEu"8 ;Nt ݩc5ǝ); BGoD%Ue~adS95iO _eL/"Cnj,,BbM faPRRNP=N%FQw5(H.Uh\$> \",=;+@1l E15Ъ P(3B|ǘHs̈1D/ Ўq`'PV N90nrutvqY"#c:| cVva^IMЈ<:62fqQٻ0& !U"cqqTc;gV\:r44fnxS8-ynEcN΍1cQsĕsg.M/ǽ#.` C h0jFegfA;gxWzŞ{//!L<\e?^VZQ oDƹDDyiMU3&%֨ 3tDU Ԝ?$'d4 E8H^|5 SoO~T&2P?f6v #2~ĘXdlnz( :Sn7Te7~,Oߐqi &d;Ɵ&G p1&dG<&Id;O\rL~ B7p ӧr.ѡK*k}DZgdb\l|؝as܅a Kh kio6}WOtNĞc'`hzzDgc~a<=b(vl?HRl=V~z Z(P}k ta.` k~^6IV኶;_11RB4*!PYf==`#JdbszZ*7xR1J=8i@V ֯~_ ?? ?|Sr }[KAnj pߤ_@.A̍-H!_+DQ5xD+w$|q\( %9pN|&QbtPlx:'u1?A+4FR-ZE'*ҍʹrkVQ7:+k%X W`4ߵ&.PE8 eH;`y|_wwPEPR*`ghhr0y|)πjːs@I*Yc7D}i^{0{H-=Wo#" pxcp`z1 ]HM`L&3XJCv R&&yPfJVVOU y˙H ߫P0ƃp$PĦ#Pc0}B=+#`4`6Cl2 vᮤD=Χ~fBNAl\ckЂ\c;,+ eW *ژ2GȻ5*Gl|蠹sq=SW`*bȢ!r Pd 2!Y5ٙ)&b5A&lPe/:)F/6 -NM(;&- `07(w4j4Ak ĆMP!MJ,GAh?go3^*Z%{Af@Ou&`\HWA~̬_T-;~mȩ0y:'L_NzT,'B}7k:0v? 1ͻ|Oуw@y RL=HtG[mQG[9𝇉rViߟa(| þG`wBhݐ12kDD y2M>P|E=ztk"n?8?3 l 60? ~[UJSГ~?OyuH?X;J|n2/&c'Ǐoy\8)m"B 輁kR- hJPgCIV1-߭l.' H7 ̹mЈ>(5$krU"'BApm:/"Mvѡ"jހؼSW3A%Lnl[cuQ,+[ Gh,4?VWm([ 1. 2Pjlэk9P#zt/#Ɏ)q5ȵۉsӖ9@f 42c $ +NhL|鑓 Ђ.Cٓ&?s0z n|I(`W"ŢL k_w͕zkYdwL<\L A3ŝ?|~ )n7=0@ 8'*lXܛ$=@\vZaz 1e}qθt#Ldd;]w5RdhA oF+0Z[k"{\@enP.̰U ٫?MЏYav׍r7@0p9χǖB]v-nf߿Xp!ۆh6[ok~W8 r~)\DDE/p߁77]}~(rd. &S"=q1YDiiX9n 4ހ % *Fyh$ 8F>muXH?)C_o?YN H~CAG\q0)7܏a x=~=Qݦ*ߤC!(c]zeU`[DoNnJc)YEc!f &d!5Z|>9覊R_v_WtvvbX`jbG⟞/jsjj;P=c!Pɣ2ia71* P&ck/ǔ M>̞[m;Vooזz} B* pehƩ~3JsPsy#u퇐]1a<ރYZ}GQ6k=q^e 6AfVèH7cJZ4N5k/'?iMIBWs!8uY PirG̊: fHCS /{9$7@|;$+pbn;/֌bPKs*Z!5̂m0 ? ?! D|TؐC~qQ>B O9z&.b xm[!d΄<^Y@2toF1SxSYp[`$@5D4ލŅH= $|xzhǣeؼn7._A!jPbagلڎ. s2#ǻ1dc7ar8$cԾ/ôD'W2\NnziIWa+ca̙'ӯ!S&J-C)ieB.*QϿ͡˻& y`l x#>K9ny"a0JSC }N^f3u߾}կ~ٳgԩS~￟ϲύˑ[݀q$k-DqZ}hmD+̈́Ϳb"P4"@>H)ɰbKPMr zEEX~ >NĦu\,EZ o[_3w:,803_{vCsZ5>h&y ͆(tBwaƽ2ԵÔ̸4lhCZfFZje`vpWĪ[!p٤-hCtZ!&qfT73 ͱ n@,Y9J}t+ܝ_-djМ#>X>,xCeTH$b]w݅ uuųE0y'lľ;FAXz 5>kq⍝(.D͉$$ZU 6m Ʌms"@- qSy9}9*AqJ뷷S_ fU@$ u&UVA5Eq\%6>Q~IEt9٘b&-sظI!JFYe6vRQ9S8mzM%t|J"[6?\1S$&wrNpDH+Fώv\~H2Dnj "u' L}SycdduO&^l2`@Ǧn"@zjx^c43H@_*Za%<wgLGtȕQPSҪDA>C XuǗi=yfͥjLcy&22; eϩrLpB`FNY/A%b[%˂6E+lI{tzeXpTOID22OK߀+x"HDR8I?Vl5|D**Yum\-#|IQ2 Q1&/p҈5jXR]<ض36TYN~%꺔Fs?7~3tgj W"gځ^Y^732f )5ϮGLHF@=@QAYWb!Hd4CdߋȟzdV!/r ҄\0'^3f"u Lw 㕹X.cf/V|-3bcUna[3Φ1#4<`($l#3& =P_2.أ^m1p7L>6"/kSY܇I;N7!ӄ]{T$hhr20َ5Dg`F~5/pQ[@$aڴB8mɇ:TY)9VC?5̢ Q^\{?۱X;Z/Ckn/OϢt60tӈqizzlZ<J2N,"O}KE)*J]ؼ4f*od2MS[h5 {TZdQz9QLX.dz^c*~`x<3lΟ_6QXKGnn OPQZ ATt9 O-C9Axm|&ұq:iU>9hjcܩW.XYa!*wѕ/tckFk.HA`C] 8:zAx H]ZSǁWx+|}%V9d<.)\Qi(5Vx1{Z&^s;L1u_ůwI:&f(7#@1ɢ|x'P2y+V(,x zP6;QwEtu6`own#n7D< ;>/-l@vEVA#+\"WހB |p#|r{{[ppIi1q$LCvӀXO)ⅳF|~n"=ݎ4 'Gdrm&-l>"O.wvh•!҄E׮Avm/=^Ue9ݳbY7sZ۰_bJPOk+9 Up^!rnmıcGr9sBk[򰧦yy ptuG6=m V_ wm':9k,/3C%P[MukW(j8%W^{5vm!Xݸ߫ݿ)Q^mtcFE6oކKtT 4__ٌrC0_~WMA̶CՊ벡afai>)qK!?.~OIRrTbrNFcDaJ^%dQci3 }H#q̼8xu{ \Gaq!#ބ~[I4 D:̺ IO~p݁C"#3މaI's!ߌw@[3~(rq+O“?nŐ6 *}r ޭЖq<1[ݻ =O`fEcs2\vH^{)d.ļOG¾!8̝_jių0*{6`ۇpX-B$TYdn؉X4yk.M͇H18^ܾ$RS[׀Ɋqfxh{9YG(JaQI:8r4R @B4E^ Fh:O&K[0o <|YY 9xČ,̾ra'bdϬی,L 4wx-Mbc@-Bb DEU:􎤰*xLJDuOA '+m eVa2>8suvS#mH 3+m"'?q@'x 3wZ?z}LgEV݃(ɲ]XtW1 =}>k~^n\(,j<^;S-?{4(0T768Gr`҂/| xWXr%jF%&tF50*8>t(/EfZ2⑞Sh#՜|&'cD\͆:Cr1>uU0x{'aZy94$84jCRe$"*&eSzx9s%s\Et񩨪 $ȈBssf"a!g'`G~~*AL.!|3b7(F~A!f(A햧ԖӸDq-C*ʐTTTa#",~2275v=bNw 0P-HX aPXP.dg$C@JgF 1:Ffj,QC`3@pfcr$F#.%yIUkWSנ>\N%6xꄙݿpY3ho:rPC*S{^o׸c77ѰgqwMzlLQp )));Sbׇx{пc$$$HhAXz6FES"Br<3(R B/q*V`jh`iS̄* O$f5MPɩ%52[̄ɡ;!d")>j26J8w͞@yFCjt<#02pH bv6@9gW#Ii*^;CTcIΟR_٠[_#jݿ{<``((8bcc|_=9ŒZW{!:鄦xd{`iƐA؜CdNW,xًA(1QHa'pd^ Za?h2#$Dqo?\0Hظ-\[xܰFG':GFӆa2C!`yd`'N.)=mQiT'ږ]%[ UL MTڠ?aKD!T.s4`a6{t[xG?Ҍ ]ZZFth3~ud !wUeCxfqϫ=C͛d_#8tem>ဌ b_Qͻrza-Y s+"Dè`\9[S-dzP mvwڱEs/rD-rxX^V}*ǠЉ#F;xO'?7Q%rDu0SqCt /C$YAL LJϼĄXdgԔ9}jq*mާ HA^稨..#qX7LIm[QT_]'75G|O. -sٗmx,]X  +!lml<Տ6G13VeyZ~|_?Ig(9:»T}ȫ'Bkbm )ωEӁp]۝_ڌOw7nCKkXvOhjPf&DeF"M?{ 7Z>_>~7^߼Ͻ FM *Xa|7_Ouҹ$'GFtçϱ5hhl %> .bĢ V#y9}Ȟ FDˢ{]/Gּ!8 6wHxטl8z`:|bcr&cl#5$%ڐW2-".7قKfF>%.EsnȒkdtTĥ`y{kl4 00F9㗾3lg??їq@k0=TFm<,dlݱ1L-9xbM-1}\Msr.N46:|p˝_@W7SJ #C>Z}+2zI˖ +ͭ=i7ɹ[O}HLIdq*Q]1k-(DLR DcͧjnĠr+\ G S0oF ] %=v gLs&4VnUHpO&{9O͔ CC +C SЬ.q,4ȵ$x X-4_b* +g-Po4 : 4*% |t@&,qqrDK4Ҭ1~-4> d&(S72J8*D23VHMKbC18,UyEn>-3 zf'OET CwNӞdLto?s] A}l mqP]|!Q`QY `?$^/3B+F"f%"5OL.R|`>o4++uAs$#4B|>:{FnYKV{O0؍ ;8&i7Cw0s~$@&{ht  喫'eJ4h X"^O dӷ57x{#ʱЍHnA[-1̛!F+NVÚlQu n ֭R ME/{fզg/a '{_L4-]m_@8HlCQW|#|73=#=[|iecLBx}L16<3+,D? !,s,N\ ~z˞o0X #G_trVlٺ3;Zd)L:%E"Xbw5ދ԰?pԙZ-(*7z+`&Rg6`zU1]p=c኉f>afMu5Qu֠ I4(HrsX̔KN-{2).JS ZiD9.h8up-F'D ^P ̘ԃA2Ry95Uck|A5c0XtT8Wx%n$VaP(/ΒvPw.ܕ#C9WPz9/-ıCp떆[83d-zt@im&Ɗ,ޚ^ҏ;P=-x.@cnAm QDA͈qZY4.&D$!yrh7sYcQ95 #n &IZp߈ #d9uQb.B*X;jh$3 yU XL=ҏS.//`"שN\3J%rk`6WcjF^ NI{{vnOW}G #B,DͤDBd6`Kc}}\!kR$8jhFj:݈J8^9̩%ph`j.K#x xmL).@( P?`"ꋧ>!Y{ߋ(_Eh?sb*8d$DM@uއ'ۏ|,J' UD&8 ''k0`^v;QDA-=槠.x'(}[6SUX;~?҈ &j4Xѷ] |vMjk[QX^S'$?)^u$YQ6 gC68moojEF >Ό(?wӘcFIq&K6f߂L\.^X E%gm;|V~Gh=Y9ӽd!Ic{QKn ma]'W~)XM2Nއ^y/J#|e< µQWw ]`ppyNzasX#wet|ϯ? ձyvL46@ o+Cx;cpx&t 7lv0_MuǾ<"\h0lO-WBЅclC_ Mxl1X8ȽuxVĕAZ{C!H ỔCE+& 3b)ym";<<̀Ett;KfGR$lj}v'feʋ[0mRM8 sI4jOn!`O݆X{íq^἞atyPh52NczA,z(Z'j:O"ޭ>ne1~4ut|W`z~28 \s߀Ná;;mn Dt8< zu(*t7aonfX{Z0d;>;brl݆9H1 > #H3Jq+vaVt,X8D2QBJuD&̾3dsL$ϋ)3`܎MFTLK "]ߔh$/dko?L%^2Ӄh38GEXOsr;#gռD'7?W^:zIPo+qk_omt#"k`<1.vQcʉEWOr 1uJ2$Ϲ 3oKrV&nM5Hњy7u.M# 6j'8{< GKDZb/1CZf8WΝcA_,Μ f$"s76]5G?{hZ%t+QmCMiȊmM%b=7׭cwXV=2ȹUI hF\N5.NckBq^*NEb{;DǠ͑"Xu .ě{nHT! 񱈎M@Vq) >‹=lI1$[ڔN ٯw_uBzrwV@bcÎ.\q혟@~_٦V!A n ?#+4:'Ey6V*2u^ywn D@Fjlk(=*3!8O΅k`4]JGQ VL@eH-dd|j;eh.wxczfX:'6;`0m`U&hpoI=4ɽz,<6oҫV D^CQ,sɉE۰֕k0};7B9-/Qd1 xCTnll RZ0Pdl:"LPY0 -Q52G[0sCn/s:ж$rA4yKB" xa)4 *s p * >dE |%E&I(Q7~=/MGJӹP/r MCfOK="<-ZO47R/ RjG8ȡ۴|TTt:ۋa7ąSOǎ /=ENj *jL-Cͱf"QIs1_r諀S.'nzDH:@IJL /t Xm#:<]WȈ&všO]< 4eH*,^7sPQ;O Q QbY4a;n(֒qg_Ź Sc8&jg3 ޺z2i: 4{1"ܨoB~Q.LTq8sob-//ƼYHb..*!kplCAa>!W /;TVZ_:Hh*~ǚ>}:#oKMEj89 ̈́ËM,]2 ϯ0c*̬ɝ+!)5b|5DgV ZiFMge`[Ql)C-{ fFE|e8SK͉W شTf7N`շ(͎67|t{f\6'܉i>}u+< 02 لVD& 6QElz6V̝Jbg8N{̂8 :dgrUmCqJ䠤,,~M Y(SoGI--]RJyyq•,l$֔,d^4 48CSHHNՒgsCIRqTߍ.ϯ~ 5){9U"ǎDT#6:LѧDjlqm94i@+g{M[͈45 D\\,`䗭1NDΔ|$S  KRp/RVA:ybch-,EyI xcRwbr3hc=w0#YwUTRo<ٷF׺ESˑBV4&8І,ĺOB^n=CRKRx5" J R̙/Ϙ/:QQ^(r1%'{v%+`!Ѻ3`A^N:i75G]Zx]LAʹʪvQZV2mQ?Wp77:~V7x툍3!-PlE$UDYnFAMwa_uSOLQ]=.K6q9Hcxl;-zq #6!б# ߉!#/f>Aƶα%̈ŬlYw&~J,qXry;l~Al*AbcuyEm *d>2 g[ y/aRXq٬o%$d + ]̸j2ۄaaLqs}m'uG)Gyi&G/EƔ?bk&Ur.5Fv]uLbJ!ٱ9Zf{`hxݸqvt2TPd{TX"exzGc)Bib/?4<{051Y4f^\ҷ}r#>u#ϰ}l׌\o w 7G9%SP ]`Xy߰r)ʈ,?LNZ‚gyA큡6wh;ަ~/w p"@Rq<^/n83#<1f 0GXQ{:4D$ ;yIN[h3|-^ -Zo n]{kۏ"i|ܳl*9^`|2XNY镉v,RM ~=PM']x_gđkáp %_jӄ(CNn& g~ d &N(I&MJ/9c`(+-dCrN){'2M30/M) %%)dƴ[3Ƞj3EdA׻9ABJDM ndb5ȠBiuţxZY.“-u3/nbDͯ--p~uYԠ0&| ~oubf>ohP/R Q/֫`I$%iy]xsWLv??f3bŻYzKg4Ƞc ,m5M&A cNȶX f2CM=ߵXc4a4z !r䐴(\vNhd^ߘR\i}Ia>0{נB Y+5YRͻ%^)be5~0޸A7 #H% cʹfmX~+|+e"$hГ(oo¥ pEUH+-:}`Vbo)c/-O'@``L fyW2Ƞdƭ>0.sXcYYe鿚= (t+^\jQ MέAL\f5~X7:$Ojl5tuH IҏO2ΓBc /!5l?H 3n%YlڰtNf{yGDCg hae]憛AW yZk+Ɲ%ϏUυoB;LPyU;\%png~Lׄ>{XReGXj6y}ѱKnFEJk.d./pw3o XIOD8!i›< ˿Zɬ3~vlv ( ?g uk|1=U=¯}D3GFf mG<_z| @EIjnm+v)+CF19>6ǘ#ǘTAO,]XFTĭ||  4-0wAO⮱ӼYGl>3Bs5n`oxʙ1W.˜~dT4G@ԜDlZdKLD۞;{Pn̶aہV,_Z W/=bؠaeW8ڨ81w|V9>pXG8NFb J|+ˎyՀ`>t?xSF)0NZX7HׅY2&(S 7@ R{#?l<#?+6́ rbb⠻`NkS-d/+?0NϖRĎ{QGqq.4y!&&Ƙ#Rq̨셐j(ISyPc q(T xNA/qBĉ7C&.LH!Eܵ|!.SJ!;!B) !7UC8fC0bI镩Tzd:,fڧ ^Yy/NVG AGte$h(|TY n6! :&>kc,lN/GՈJ!n+i`]T%YMFs>BK͡O-qUsa{tɘ)b`d hVWw^8;C>eOԐhGf<{= ,aMwY4dW/Y]vh@ju&̣md/ !8~:@>.7NA$HA`=kFpAtAxa3f0`mu v "x݀36%Se&~Ju0X$.ʎWGB u:JN">O&/LHM(Ea t,xaiHG?>~L J k7= /\K>! wl-gQ aÈ5F|izmi1,-el8z7'Gn7_"7 bW%Lb'5 h̒~ p:<U'%K7mia_ySplE6^A7yK>$)Z<^9T-! w2UD4m0Bw68x!lY:VA7-dY}` RHVHTD~,sBЭ{6U/Ic <ںz?½ gdn4Y`0@7A5 x=Oc۹XP˴\i\pCQbz, ϯ̟WebP;j0$%~SY`r,4&YBy]ޕ݁'%'J:ᵁ ~gVLqxP$#}E?6l؀_|b`,Û/=߽:x-4tv>.fm .;M. &~çnIe`c0XZ %t]bX Lf]]kaY3m6X;AZ"-VDDP?MzFډ~;V tC+EA׹f47@@DAac#i-hI2oIsgkAYboa;v=Uc5lp$hj5I"de{n\M1͘b4A}~܇ XyR|5dLvȈڃSsl'>%S#?՛ Et6~n Nمh6'#.bqƾ'B?46uA{aLs &%IHO &<>eܷo;Dzz:կ}{8+bȉs|jΉN"Dj,D$ 6b]< vZE,+K"WzNǞ:TMA_E3g!356,8p8DIȶFAvX%:6bւOge)-2 eyhE٘SbmQch|<!)dF~"m8Rׂe0=NfLqCHBLtI%W2o>&3%$)^ԀƭÚ ~El/ȒfXV߯HT=SB2fF&gVnHbYH= ge*^7D&6}VF@˂Ԑ^(W`iDPxȫe$yv(j0K=^liY2E=*ȰCbq{fHSwUFR6X ͱHcu1)f[ghY_^p9y|`YAJ?C-jbtkBX.[;w?W?|Ts@//_r 1;h*<箦q` [XoD]v? ZІ2N+#,]toe$nFcK3wE8'Fܤ 󼓀;[XA>C2 %~c Ƶst.ö<$:~?CMm}?]L!YDdg]<>TA]; `!$7qieX::{B2QsZq9zzcȓGs? I/۠ Zƥ,U0{resa1Övw22Y pv=3Z|]y<><wsAy2hFnxa8I oعo7}]pU { H` ~EW|,c{ H%E?'NGzN6*f$`- !tM:HLgKnlx\x(to#)̄C&] ,޻0?NsW@nBbw hH'7Cs& V !V#R5o0W7`WmPEQ̯&Ty(\MMT7Zlxrpغ3V>UH>}#? ύƓ5hgGOIV܄ͻጴ޽pT⦥{0//8M5oa_V~Mg;iJ!"+:|kI9>oQ/ 9ҋ(gl]HO$^@H&VDۈ#|z7$X]sw"X[FgCj9`<]?&H YЎvpa#ayMR;E<G7oA@4JGq^"i݈MaEV$fjcԺ[ʌc(1 .3q8v-?9.uXEiI.LYLMjd۳`"QyǁDTzbyy5?TF1DL##> %1}O":9bt<'nK )De?y [z8"S@t!/-A{Qs6XTх)e35}J2Q sZʧO/'^xΠ촲,&W~T'2CRbOlv9Xly7q- }-$"l'CzlC W%i \ TUںat:9Fb,FJ̮ⱾAՅ٩ĭHM< ^NңN3\dgoTػnr@r_t_PEZ4d *wIHZn@)缧~P{CǬDm-L_@e>>A!+3 OB&ku@@f.Yeq0/*yoiy^[[.l 3X/\[&ESNv:x|dxPܗj(Iie1s>NW9;%ӱ`Mv84#<i0P[8!EÊnuR;aza9g׆]1 C!Y T_M/3J3=#c5wnH`'sq'=8xbKv_my"axi:!mX⅍7R?S #x}€+1^^p0vm vV-{'3,0!6(>f6+fbf2^d'MfP` -3;8 ZejJ$ ./*zO@4 `3KmK{$Cx6ʂCHvk4Mw&m.N"@A,0?f}(L2+@"-+632lژפ`d5蓉_MB˂"\hⴽEӈwZ rLjFs ԫu'yy!k0lH>tU)òlTQ`eu&鷷(ߪ'J?W`@YD~n%Lms,8^  2Hfơ+B bi`~h~ X]eOVhno?;K/qh, /Vqx Q4% 5޹B_#"%BH,j _^MD40cp6V<,aA]lxlh< /+kOIIIsaaR0Y: (xEhziv`7*FAw 2h"R^ 6$hqٰH)c #Zɠ` ,Ap6ER&l?@?vp ^ ڪ!h0Y&EVV@u ,W7.{b+ƾA|^"G@e nAgANhA]F8Nh` $P87D~) `wy _ RΓ |1QWp8ƒR$Y]S3QQQ|>ń8. HHH8/r1K)F C2`_`bG\f}^vh3 㾬/-b·Q6h2t8f&v‸We}fԹu3Ys~cqq5_[[%pQe!T&ELoT`5ɼ 2|zn/+IgE'bˁ(,LE:6 /8@P] !67Yكxǯ dqj~lںއ3_ZbKY9*N'q8w]J4Rx9;Þ#16{?6*^w_*;q)\I\4 ^8Th" D[0z:Wj<!ݍk0[݉G@yFpQGkSyP&mǫS?6nځb;[`7c;8aTȂƊ(\6,VK z8,4dG)]8} {hbE8 {?Ɋ<̞_uu|QvFVtާ1wJTOy .Kf"6:Q`$/fBtbpR'KXw] ^l~ɈS2 |X9~޸bL,񎪏a_}`dDXWŠFΝ$Y8Z] ׂpjv`٭"Uޅ̆xrEHxr8Vf%f·"q=`_i$V`Ɔ}e%d2c1]~T,"~ts {1Ⱦ^|(G/h|r`>efTV-%Z?bet<"** KW##5q$ށ'Ō)BKl(.I(HêBwRβBd&zpê%-t)"hԀGU-\Ncϯ D}&қR,(̊> ^9&؀$}ìƗж;kNyL4%#k0o؝@&93n^}f3s^7q5|Ż=.=goZ\F;{Fί$}khgdܫdY@ ]EC$Y` p{#Bt9tZ^>We3,ْ8UP Cd{:OK$/ 6kyQ+*6Ք](gC=$vy5罹/8?aSLs,\W .Α4Ҹ1<q.y`Ό7M!#;Z0z_.Er@ B24{! /aaa#Ztj=[(Da$f0 !B^my xzy]xk>1K(8IENDB`tipp10-2.1.0/release/help/en/img/h_settings_training.png000066400000000000000000000636071274324046000231430ustar00rootroot00000000000000PNG  IHDRs=tEXtSoftwareAdobe ImageReadyqe<g)IDATx}|\W2}ԻbY{KN8@  .,ݰ,BқbNǽ[lާ{߼H$+\7s?=RP\ CӮ_l?N>H4fIko3~e@6SOH3G󔝒&Aߜ ~ 6|Č<+v'ѣy7ا'")߿S\RL ~J}`;&wo$ ­rJ" _ĺt o[O<iƌ9%#h}n 3V8d#[&5"5=m&*&Yih?bu4b1MbiBb=3=Q} 6ƈ$%@a#!z{iɢ.ZzuM[kKi&zc'@o} 4!SV~1P7zPƎc0za0s`K_6#ڴ`3>=P36bĈ 63ˈ-"b7Of3NpH_݈b>GA(2у0E.;! A :>cooГX[_:Ll쥵5uu+M&j)S ,1fGKY+Ť &9rTw0L13ݫlN/ZټqפIJ(9xJ=ɉFTi{ejnr41H8 1Ii=Ft&3n*DªΟbF9$aJt*zT؋AwИ X[&uD2Ĵ5~zO+ҳ/[ʘKL3&>Gn.r`NH) U^ɖr$j~Gl0Q &P`bvމ-##ℽB,; YD_l !^zχy { ]Rb:TS L]0kĦIUY-~,Bj^yZ'tO* tN/aU  nP@_hkhY`6mJ *b`eD}42!8'< {ε7foEMcDWTXֹ1L_\pMlhkG$jJ Qmy"oqd3g V3f_L  !$AOJ"8D.0p;|7pWl=HxU#JlxPiC($[&PQ U@mi)G5 ݉5ו.2>|Ċ`;#[?Tţm]11C ;]3D^ U S'Z/kEc]>?QLj(Ak ~f G,C, :o2˩ Ԏ:ES0Egd=G#:(-*Ɓp{5kt3ּ3$@&C?4!)&g=X=# 8?( Z˭==4'u1-[,lKYe |x['ya/1X$6 ł8{_i@Ld{? ,IAGL8$.)e靎v~ 8/3h!zL T؟CHLFpLvԔ_Ste-Fgch D9?_"fZx6[`Ex?W};iъkj;N]QHO=VJքY#ZM&zKk MmH2S|ifyćeMXZBގMx6bw&3z4)@a2>!Xj e"oeZQMjO\ӱ 5sbkc^B1S@lQ|KJD3~,FAmc'u%N*~GUAIұ{9]!nJ+)%6buKj 0!jajQAj(x:'PfY&9()M` Ϻ2\˽`]G67f=$ím{n3&9\ė_2O'Ǒ}@k M^"H'yeRh!%I"~ER/ =1UUgFi:4]0ʸf? 0' j] c~K=ifY'K]j5IꑪZap *LAԍ-qrϟ*>rRqL. '6,N޽'k=.=ٝQ)-w.nܱ5I-R68mfi֤6%&NѸ38` ™'?\@|.ڸ>-cfeb2{;5%nÌ`LӚH&^߶E#K!{Q?Dph'Xm#ɈAYv鸮}$** :U&iucMg]{ҝa@̾Q6Wv6 Ŏ_=rokiongy䶖4U Sq!gBi3vw5U'\!E G(Fv$^ .,S4jNԤ$2Badu×"ghI.(R}BX?vI܉KO755I)z[[t'2clZ,a݉#69S;W.mhJiAUQ *T #f3O5 ki[7`.{X{A;𙧮.|c5{{xihmX$0fkvkf9➩)D67fۂp9:h>-5ړP'ŭ$칿bϖ}Mk$-3;6vpXRRR=W"nW6fA`y0S`ɥ(WwI!#;v YԻGE#M I1+xNACA Ƽ UutԄ>cڐ@a؍* t `t7, 15EcFi 8LG]iW]]r,; cAKskrϤqr<(rؤF..{*ό Ȥql^ '2LDmgBLHN"^6&m^q&N;3cJAPPK7Xo;HLI0b$"8$$SO{ (z)xqiKnB4' n16J+'s Lwwu.6LJKAWqu[㚱AFL{&f#?F nbf"V/!֜X  PkbD]L@8JV4cdSspP0tj/mMȩ8DfS~v(UžÓ@H}ʘ35cN/xkfObMmT:((p&PyDsgŒF!҂e F*sfJs3LTYVO I/|':y-pt!siJXL"qJ̈ԤqJ%&;<)Ͻ݇1[= :캩YKt-쭫o gYb#cOui^o3* vHmn[}ZkG0HVgIpE[TH%xLi/ /$6%Dja6[vSӳ $#jl:PF[ ;HV̨ :Hk@wLOE1"ji]o؄SD9R;n@GY{mЇl{%)sj% uaEъ08~$2 +o q:GS?a?6pH ׎6eG7cϬFÔ3|J;ons-_ tC ӟ8n[2F}fQr46JÛ6[މ_v9/Vtuc_ӳ:oxgNd~׮Erts^ 1vr8,1׬UigN v0Iʕc Ca^촳5_[`< Br%z,EGـ~7LRq׍'tl~RXd9U+] )Ԏa?.=xRHII9;IŨfڂ Kk[ h)|&^}~B@D\py̘5 {^{!WmB$SDJ(N Iorss6z5lG@t/cocpSRkavA S{y`JNȼ~IʒEg_q \r4#4mcmh(|)hMTz*Y 4S@GKEÚCǬ[?:=NQSɫGΓD# tP^Q~Nd4o xA:k@(}Nn5FJotwK!U|@lTzɅ;0~hcXAi[kmsH̃ttuB̮<:H}xhXTbdbr&QV &Èىؙ)yZY+U+pڭ׮FƼQHB(H?(i?[ (]eگB!:iŴzڏ Yt=ϖ` 5@OM=iWh.d{^_@|E1_F c3m^@ 1N,X?EU3u$ϡ{JY Lj ri?7 RbO t&Zdڏڤӏ's%  H%ˣ5`fC c v'L X5. TU~Y'@l=ο /{u,tF$O˅V߷ Q`P:F͇8Va7:FlJfL "y극fd6:NH,v-:j Vn)}@:}QJ}N$*jH+VA<.ɟ.NV'mrgdv5 rNz09mih(UB8S^s $L) ba;P;3 ,/ @ "G~|Mm#XךP;Z0o#Pۙ4nJ M{Q+Z 5IYrڭE+騆6J4iSa>-@:kh%Йǚi֌0Gtx)0]|#Mo(fJ_o#GE& F".J_jlbJ sڶ MPT)Ǟr68?گBg#tH-|r3={^8w=r3 E\ [dJv\U]E1" L5XBa"NB^恅mTA@1аP:BQ_ GmbP #[67;'RAoOW"e%mE|~o,(yެlVJLWK`ѳB()Nڬ%v#,ټsF/,*kc۸~#ϤV?ö́\2^P}%_Q0/ jk0+ө0|s$UQNZ$\訚qILsUT@weA=[b m*| ^ @cyNV8ܽj( .)HRx:VRv؋p;U~5,3G';˙Σvχxյ EލD~ZKVA%b:K@V/Ԍ]V5Hv)M^7U{>UW< TB&0Yh;wHL}s֛׏9 |LcSzmJnk)0;1JYDXHĴBNlƏ]d^l4cȞ~-ob]S&Zf.9E|-P4UPѠc"d<cW˖bݑeW?97Xڊ?/|;SgX!Z1jGO뷷⪛f0e24ރI+oGIƀFEDU |TuxKEdeNϭ_aO4>ic|xEl8[>Ԛ xp7c֜(KEӇp恟޻ß; \',2f\%i8Ѥ[EP[ILJA^5'j`O]ҕX 9fLY"5D?%)Ih8&|z1oէwT&lW MQNŒbff?= ݧҊv  X\ß}sn/9afKګ~U0d UJƭ:G \yDqv֯ل-x㘷lJJ'lBt8K#sH``J)h߆ ay[ N lgaT 伈!i;A"OJ[\8l;\ $ 2 Yv=CwϿ(IT8=HrԜȜܤAs}Egv<򿫱ƃOF2wŶCs0wtx^vd]BxÙzG} Y#'-)m?BmHvIV>蹰,%aʺ-IAz^} +o 'wm8odI9ʄ.}$&ϙ@:H~ge`ըj4lg|{!?э|a~*$(;iK>IARG̈́-!( 6~l|e(HMazlmNPfR)hJ ɬ2!)|^×%Ǎ;?s >ڸ/ F#±pޡ8nKl޶!jAL4 i:%WBU6Oڍbz$8(CX~핔zH8 7/THAr˸iY::: g?gd r(69@^L*JDPСR:-8{*Ƥ勰rL- 7ay;&MCi,@FT?Bb۷QDc\aޅ3הn]V#qMsgp+VpŜI8o;Z4/2S;C@G!?ՅE6V^L1Dr}ؾ}'t.z8 'e Ve'-@QسGgIC-?B~dQ /%Syuepc zaC#NL?'3Lk qJ XK Y!t}2F5BGCJ57gѓ4Bpaᒫa*Ă+r;4B,6.XN2h{g/cC5P6g ^T91uB~=?ɳLAQi).+kERN)LRbcfP$J,*L$b{/y,V͛1_< dy`|UԶ;[ 4VP\Jsk&z* t1/Ѕ0( ιJB2aF\{qƝL3!f$k9柞Zt=, f$=UaԺפ?~'B´S/x0ln_twwy\.`ہ@mmm~q}`bÎLitEbb"?qJȏ1jԨA,ĉ\fggGyڵo;A^lƬY\ F bpȈ:a٪6 |5%a F /0-~ h+c([ځ=o~y_6Sd˦Ҁ8-- сr΅=O6]㇐$;|U{pAkSIIɐb<\c.((a \x<mf&L E~PCm>Ǽg~?ծ^V Ȣ\;ja?@rVGqjr* .eDˇ@det j'U5CӢS/vt/+Ffx=.hJgr Cm'̀4^o AطN@ZI_^rI6<|=P ] ^ mO(A~A``t"PIu3VTrap)AAY,6]2e'AϿp9|yJ_nZ hD&R\n'Bx`E5~O?ΒAP' ;e{e !" 7f9!I"WX6,]C5n-8)T8 N-ϦVڳ󩽜Jv;b~qO,MA([/CB4v@` ꤒO`0WgZ1 Os83ާ!Ι`\@p3Nu)ve&кaH&ǶV4Qg]e{詢Ⱦ}+(8 YD]ܻ} [?Aθۻ V`X]j!{7׶l F赚R".Y ]{uxRCh\p+i~gP saY$/'꒱d-eɘ~4Vn_NpFڳAFdڻf_KJ OOؾ#!=hI(_oDqF[PEmhbܩ<1+@;Q֍NY{i-wck@BByuXVJ"y$ShZ`ԩN.Ln|~h9QicG1~ z ,p~8TLo()Z C'k@H$B:\qcRt77;+ (C  ))FW8_Ý>qp ;cɭ' Ap^h W˘B(kR[$EՊV5ԥhA$fWًpj8֍E4!j_4avĥtowC}/ӭNnumۛ Q;$JD! [pX`UUհl.i/^kY$ֵ^:`,B_4t&N8dХcZx(73\(iqZJ,ŰnXA0>')RTR8Df,t <Y^; '']C5i#5%^5&xj5_5ۧ@7vYsDd`ᆪd\DRGQVm5#B9Dd!(*_=N0ҏM/Ҫi;U4Tމg1s$|%;+ HJxƢ)MiEm`> b(.K&Xd\_{?3gux(UM!Ï?o~$Ə+‚yӱ_+dI1l} d5fM?xQ@vjr$_z!4Ut6uo#HU2vRx@p P zD)FP6 @1x=Nj{ۃ67ۯ+ţ\٭xU\LdIBk[Z7p:3*V|7cϾ#>GF(3JHV*Vԭ]Yσnô+n;bm=ܜLn ż:s >ـE'p, By0uUp5ms/ 3j Ru۹h;'v7l^eCHJ yݘ0c惟༖S3)ϿY3&?]]3T$'9aY<kTKG^PԊ{v"utnX=Չ#H:p[BNf&\q*DVX֍"x;O[fd٬B4uͅ%VƖXHgXkW1)*3Ӓ'AWgYmkƴGYC4> mS1y7qU| >&̙w݅ &6n,8\~|qo_/ Q"Χd1GM)JoT~mIUmhhș)@_y-dϹ]-yϭAųұ Lq28ny| ̒II|]Hc|| aI c9ݔA&aZ?\Ɵ@nAsbʈ]֌.) MYtMAYB#P-Չy;q#lLeHwf?Mam`{9!+XFZD#u >9N]|@JJ"_{ `nJ#6yjOCXh:ueŻYښq]&P6# ۙ]BE؂3  'UϚɄt`>NvѯqR# Fm!$$'#htdAAjn1njUy#I666@ Iy|-@7KuUq6{xݨBZw/$TWWR#B312 Xm4X`v4fɘ˼2tvEnݧfK-v1Ezh#*?sef#BVQ3H|%}!+& LTNh(&3' y3y|P }&2339drGB#3*mLa @b|Zfn^kH*6IHGzJef+Abb29*R2<ʒH}Wo;_[/nDj W_okn7[[݀#[t|{? 3/&6 Hه咒!+:,{^T;  &z*8МY%ImĹpustpH6ne9Y` فV oAs&f{,ǂɣIo=| Sqc|X f+#:箲G; ⑟ ;M${T$畠te)cX''Qrbኹ351~|H/^aƃȚ4/}w#OogrBQ"&B'atk~Ĺ۲Kß4kHHP2|efP{ rRpП1;Xvy9ZdS'|ɩXxݘ\;.+6͞tl1I!Ni ,xixV,؅E(gQ5uMYNVZY]dV;*qob_ȠKVîN}^?Pǰ_Ă,Bajbio6nM?)1(vykAۊ Toq;^@Gg8mx=Z]42,PyW'dSPstW68e ͖ sB{<.8Kj+c˲[@K#1@, hXR7ހul4 Vsg߀b#-K J(H|9E,4xxݏp5u3yÎUo>^A"tߞ~% [#hd Jw>o^ѫ awbnyY% CH|9j݈/}#>{u P(~ odDBG/ (:K:"#xWQosc˂Eɉ~%xߟ[ a ./ Eݯ]r;=G(E[OyiEe[4=I<׺?s`$A)BB8L/FAnEƮx;{6kXEJ1 {{[pWDـzn 8Oq,*+8V~O |kF(tL7l Ooh!&JK 4/w$Ez opYڨ8Z<C-] } Tذg8Յ6%s,Mێ"7ӏ ﮃߓay<ܻxgȟW5qN(,:z^%vM̼V0 ,Gr?OOYv>rDTXPFjjj4]y^N^R.XWCZ\wH{ 5 \#}< ЖME'9IJc1}Z-urnlں AI9}J'xJA:̋p4E<i+w:ƽl>N̓ {Uxޱmldge^[F1y 0 rB1e+4]+:,;&0nNmRMy^m/‹CeO c&yT1,q9O F+patPzD=x p*D|HKOFݨaɬt[9]EXFm=]Ř9 ixQO57^ώv01>P$ mLڵZܾclCSI`n-k2 T8}P'۩vM(0 @ljc!| Zr(H1eܛE&E4]B&W,d@0Ч6+9`( (8¬\Lt<$xB:U]LYI8Ո:iyEf صԎ}zzB˿G`RNoS!VJpK1NBsM;ڍ UZ bS%*(de[ Du(-R\QҡL)%Jo]O¡э D\ut4AhP0K];⬲W#y`Vt+RƆ(sSh!- KAzjBN&. #@˙#!V;zxMBQdrǁ N ^ .(U7OgVk8nYT6K@M#k!}xTQԦ;6S)pTXA95DC_ P>H5j=*CpO~-fL)üX L=eOS)9_ p5:=o#Y|%ng^$T/{W뫥ڒETR`)AL:s6Nx6p;)R(6;K@vC!ZcSq7@OO@ vHM"@b`$^OLo %g+Ԇ ׄR :n>qj <&A5 zoˡCgI'p ZH L ]_WWymluALL5 |ApP9V^η_7Yx/ӗ"<[@t[ `n;p[ \=kt?[<`j6Z uqXl+w?v:6b3-r<(xXïPXfD1Oc'7l)bqӌ#w֫_|_,!qOqH$˪_Ƃ"+f(*AL9>c }O|~myTJ>Wۈ5/& n ~U9xa:!В(_Hj$&8.9ixfar.a ]$֬A%^RQ5GcsƴVi{d`~9. p'r@ ƈV.ÇHAF^G]]DORnX,ojT%EY5=@.&X>-Ӽ2=[v /`ӦM*i<xQY#T "Lkvԡ-Ux7QѬ#kx#O6ZP]]GNnG[GĎ`rxݨF3Z'HuVj|6:?'x#ҧ/NJxƾz o|rsbzg}J ɉɓĎ](oQ1A8ԞH n (Zt%ԣG1qB4݁U (]gϗ tIvnp5d*tUrW~aD{1D;R@F/߰x; 'pߌ;h;|p'OZͫ a?ߠ5GhQ OT؎Y|w-ތEw,%kՠGvlQi3'|6xK`T jExn9GD* [E_}`:^a+аoP|:t{0TǨ[{1c 9]_rJMB"$t㽗ıf.[ R?{ϡfk6 cX`:>[4*3[Dv[|_1piT !#ŇpS-9dIEEѬ%(Jl?r n s&#C!a^8S21k<̟7[]alत$?/e*̠Jܸ $*}6RЬ)"|ngDsfb4 @$2A"y-݉:ںpyy " <.Ⱦ\(ΦXtm`p$P5ch;VNT@}#ܫ6*F#=-5k>ꐇQpw,cGFF&ɼ,M I~ºIsSjK#? :\n @өIaŸ @'2xaM@"88xLp/gnwu>p1  |ܳ4_4ab)nNrV}VV HS>6c@nCx˓B:᥁jǻ {.mH{>.EM>N= $^bXӃ`; }f`V4j{.z;ȿwQۙ<D;c:xxUdyM*͸\pF@[[[ 5Bя~՝7Ư~ş^D!ABX_.VwI$x>x\'/g߀feX0p\: +ePYtII 0k /'7fk'Ǟ>`ia aJgvpfqyW  {jZNA$d[дo+B)Ek8Xю߄t'/sw! iΎaZ$[N`iA>"XQh`P!9ݏg_آz|T8yu3\Tj'oPW_Cw#=͕yf7VO(|/="Blp儬:hDc |Qࠔ '+7jw!==eo" L!69&T@S? c&Ò=X8F59 .Z FseesAmԷh+G}S^ xE,'d?c+XM[<60yb)JOU0t4ʦk݁ 'J6X=--jv\v,\(*eO = ɟDWdSp_D4TWfc5H hX~] GbNiaf =@(Bg@QUkqhvm$J B jkl_L觜+ga9'3FX]m/mm'e̜ cʰjLJ9UV`˓< N+krWP˨uJ|qǀ_Z|o|O:gEC4N,yIXAͥH}`ի^!99J(LJ<,gn[p`յimim-FbUtM;y=`nOwl"&LJgJ=% HI0Hvmlǵq8-oMMTa7`;>6`nssH NqH IsOw_H#cWMx!CyM@ҡ=?JIGԖPd ߹uN: .dʣYCP;{(?g>2202bpRsl!(PU^uXVHq_otutN ' &hf`;{*HCD~(,J6Az =fUX} ~w ;4XY0E 2FA y$G2B V. =Y+m!Pͬ];7>;0Z$=.CAk,&6GNzmxLYW=a< Bqf)ic5@:k5C\Du4h%h!R%PNJ@Xsq$H`Af(I0|ҩn@0o23[!UE >oBJ"Ɖˎ!zWG3#"ϼdiIT%ᄬo0pW{JUC5Lk0Ԟ pXwU 833b[8s$z>@סflMjcʛMZ.Kq/ēq$8й3&; ^ 2Xue3 9m ~k@`ƣ2 ݊P1$ɐ&@øII 3#MQIQHm\^ogΜI b2D"CEͥL Bii)ƍǽJΝ;xb~?oee%&L+VUFF4n $WG;{]NPqX_='`f\b]9 /e? U`{yƅ9 Bp>0wV`YMid#_t &Ĺle93D&!/#;R"90S|h֌Mص((,Pw@Nr(f/O FX\"1KLק2BvZ؈+VpP;}`m8tie){D ?Ӌ ֖NNˆlf7݂9$ K'nH~6uodx?z&> Cqe\S<R.B˙1˭!00fvp<72Zkx' ~5l߯ ea &-[NݍеdFs\2S8SaLUhDs L[6B65AEбA J'JZ0'G 1uf1R,B=>6^.P!+dh?jsS˖-!v8Lie yc6킬FqR{G1$?TWiDu& $1H e L4A86'㶖v\/"d7&rnpF CӷpT }^[xw¾-!@ч&21.ӆ҃0dlKȸh)pTaӑX!V`Ģ՘maS;Dqt%2*r ƕ+cőC,ho`RK*+3Q$GF>fNH$aMc4ҽ)ZK½9"nP@ {+NZ\T}]0q$w`XF b@Bp"/2D(oC+ICmȿf>ҼF VQ:VUٳ3 4VŁXl)FM0yRSdxEpz߃'zO7x'_C}tgf\څs۱ҋw/P'(|Jhd,)="jarҢŖ((>UK3u!ѰZ2&N2I ݘIStT%Ve&SϽ^t$f>;L*2=ϸ55׷Ez!˃r`2Zf-qQжXFxn?(>j)Q~E3.'{j?~|,[8I%>؆ĢW곿A̙LcbdfGMaG0rw:3;d'+q gPx p7nõ\ݸC2G!dcm QӍk-&ףSNʕ+{-Nܗ5%$񴲆4)kcg` "Qaw!b΢fXz@ՆJY/[em;otALvLvoc6;t(7$r&>JЃ'#=w$SME WÜ9s@LNhY8$ndK{'w)֪fgg_|1To4tȊI!MEѨ)H&,E"H"qÇZk8-aOuTwQDcǎ~d"0p.LDV\]=W ER}Dc&sO4jkvTn4CcÇ %Mq]*F`{'#V4NÉ5+4j<8X_;D{}a K+F;b/ [ʪ$\.m±#s^V_ /B xLDc0w2_>׵݌*[!J .(b;!9pXtN_cFNhO WP#JN*EVq%lzA, x /)wo {_MSѠj%dpY˨1c,_8N z  8b}ΙI&-ꤋ{Dʰ$U BRaO[>̬4dw 5 BUx2`I(d6ݟȝ~<aۭzJ%nE5 8]=S=W_/?^3r3R1U/zпzzjĊp'Rw׬1V x(~'pVt%e%Ȝ31od2.Zd6%T`S `_j),1cQw4~f\+ ҍոƮ;Ce[7? ˇCrd1 _IjƖ/JP|1J.B%dlvT UgNWfBU M GիVcm1 OD5j!r0J4j=r)+; eGmmsVbz>ߋ 9 w$kS50fxC,֧fl޲vflWANq2̚(4[-VKtzН@f0p7_} i.\(? Ð,d+[*Rr:R!j wx>f|'?D{RwJ jDn_KiHzgW*Jw^#otuZtbEOt1˰}kHC7nW@pw"/bC!e^x$?v b㮻Yb/&rGm؈y )24ܩqFr8+vA Ȣ A >=P5Q1_b:Z szdLYR $ ;;W1y2ܖaCe96>R31۫ڢ/ըǝdn|N0 Nш=Ae5Je24Wo9fN\GEQVXI݇OtdY i}n1IVֱ^,^P; GmڤISsjX%[2Aav(GaPEĮ/6t Br Fkh!\"]Cjpj 1?;eA]c9gh'&F@XܘAvvT(ݿ7gmrF-7oޏO` wQ"N[g RE@[Ѣ`oV_BarhXH \^Wo9T[QN^:^A?Χ)SyM%*m2ce@IENDB`tipp10-2.1.0/release/help/en/img/h_terminal_mac.png000066400000000000000000001122541274324046000220340ustar00rootroot00000000000000PNG  IHDRw pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATxwTE'3 Y2(((bœsqMk9w׈s@H&ON_a>O?ݷ޺OsNjժp0 @FPL&g$WqO|fp`0xa"M$$It9 PP(TL&㷔 /Y$sm".H$0Ƭ arrrD"XF3P‘PD"A\y$FW+G(S_x~{VZE׮]4x0;b_D5koe…h׎dǝwcǎגG$aҥ9YfQRRBe]ٳ'sLc$|=Ү wCõ;]` &kD~BJcQŋ?N\=W^aثҡM[znޓhn.K/f( /gfD9>c^y1JQ6Ӈ¢"*Wd 8sӎft('L䞻aU*ӇZR]UɓYhs v(xM\d= p$'(}~B$ .]JV[ c2SH$@UUpx5,''UVL&i֬zhxpGнwo9-[#yg(o]6$hoy[w~'G~}˧٣g^`⒥u ׯ~r'9s˩Jpi'2hA4oVBm] ~/_K.f1 b2~x^{5`ͥN8.]=SO=Emݚ ;w.G}4Æ u\`^F 6:?uҴNʈ#?>v;w&F/ywb :=cK/$Lr 'кuk8p?Ç~ǀ||嗬\N:qӢEχ~w}GN8Sb (//cbrۛ SacLx<';o F~9>ziO|{q[tBe|td׾28螖U ݦ7&kfD X0$0uT=eSb)0$+l9^ OVVh߯ f]a}!O=B<c_ªUF5kF0cD"TUU \L&)//'HЮ];JJJH$D""D|jkkC~~>***ǩΦolch޼9/h;rZlI,#L //H$P8LUU555c={6cƌa„ ~A"3fnCxRHEEz)S0a͛ǑGI  77/xSN9 n&x:uĢEС;W_}5K,K/%F LK(o1c0zhϟϙgY "wy'=m}/.^u}Ư 1az3q⏘3 *g9ĒPZK]h[`@}Fɩ'x|VMi//# cqմa-|2.XDA@ @ue_Դi+~`Iu`cūY$_Ngɴۭj[nr&GMM ۷'0zh1x≬ZZΝC=ĢE8餓2d+W䥗^y=vۍZ-[Fmm-#F裏s{l&y晔RSSC]]po)SPZZo;GA(_O>!sq1xL&?ڡ1cp 71b]wgɒ%$ ΑGI$'`M6aԨQL6:C8ٳ'\pX6l-Z裏QF+ۮgo__/@ꫯV[q'l2Fo^ȑGY0~x~m*++FA2_QQ/ ,`w$ r낫 3-Fpi3hh ]:&'d֊ r $ QY]NǂfJ1f:"pOЪjoٜˉ4'TPD0IHԒZٲ&Mnrbߟ]vم~:p-ܒvډ9sp%p3x`x zE߾}br!;{w6l5㾆Ơvѭ[7w}aĈTVV{0j(^z%>у3rHLgU;ر#=z˗F5k[gtڷog}FYYQiX`ʕyX1|vabx-Z0e D"9r$}3rHbs wu_|q=_bkuywyRkܺ{Yx2A1 &iѮ%Ey,Bu5C8E6i݆ʙ (h"y'IB$ZмU;BC^sL$BAU1+ 'i&I($X}L$ђ$ڄi߮-%mhV؂h$B"i]IAA.y~j H8k voL|wn3w\NJnH$wqp c(//gРAvi,[{}ݗߟQFO?񎪪*z9Cqq1&L`.,X6mPVVƜ9shٲj(L Xj~)Yѣ gZhAv(..fm]x9묳cܸq >wܑZ=PN8-Z駟Θ1c| |<){kL&D"9ٳg;fRm6k֌vډ݄X,F,[h0 Q[[K<' R[[mFQQguVv5\%\‡~G7g0dɒ%~tޝ-ZĂ Xr%hԭ7%™:u}kҮs'¥͙85KJز}ICxBZ鍑1#PTBnNDr[uf͡`$Ipp\ufcɤ! ӻk/r"h]څR5'/7I"H$LM:jIҎa\6F]w˹A1tڕ-[2|p6\>qɒ%,\Bnfƌʕ+r-nd2qu55tb tߌx)ޝ-"%+cqmλB(^((lٖpmKJK l EE%PW Y1nC((mAB @ `F c?ѣGs5׬7LRPP!~a ^Cjexbb|{ >}:hqƱ`t1p8L~~>`|( 0g}`sR^^@uu5;3HAf2f π\ԗa뭷oeժUTTT0uT;<_|/X;rgsWC[0EQ0EEE,Y6mp3 .d=gϞԸa ZڵnE#bɊ2vhOV- D$*+YMgf{4o$Ia|dr.kD 0ZL%ml#)%VWzCav3͔)sh߮3fGP^9%`^Ӫu k\:d8Z⢋.;g!pҹs BzIgjjj~ԩvݺu#77W_}c=pm$MJfwos\Lh3gr3i$tOuu5P1cpq1}tsOHUUo&O?4sᢋ.OdС;;@ @ǎ9C\pVWWS]] \wu|̝;O>s=wߝ?SrI'x<ΦnJ^^z|z{:)((?G.]Xh4J-c>ҢEHmm-[&PYYY.b8l ;v [D1l2~?3HՒ[RJټo_nTU0ywTW'/#-!?={mGN4LuUjϧv 01-CUl 99ݜ-oOIb**ʝsY?8Ӄ9jOO/o-GgXl]wVZE.bqmoO?O_n~̈́?6kL?e[\]k`S&?deɑGQq399 DW$IK=fD"ydxU{ U"LjO I&%j,߃uMP6pBb$ ӦMVZ!qWW 4_Ɔ#]:jJvx֮1o.|ƅu8D&cƎ1y]];`A Gg?WZZJ-hٲ%-Z`ҥ|7 `0umwN,x :?(={O> 0]RRR̙3K.W~? 1C^ͱ&R 8Vy lbT L t5 XE򀣁Ot__q/T̻U@3`0P6niqppppp2 uuu|gqqD"ka@v!o'"\.X*º8hlTA8  +(YpGb_Y/3#)[@h gc}:o8Ah zZ]F]]o]t{c|l6s9`8D3_ٗ[*` p 0MLjј(»Ii<,usr;H63`1@>9}R+~'tͣ &N;蠃3f +Vh@?4*a#j%y{b2@\2o{*:18X@rT,ZVһUZOŧ~ʸqhӦ {RXlk2+(p2v{ UOI#z @]VPI_މ3?]n=|{O/=m1f9E̎J ,# Z('a?psL2ڵkGyy9eeeL6H$ԩSiٲe Z 1*I`0'MX[Uz"C4 nHՒMc迖) ,]bNn ! J{_LtB;88881dƌÒ%K/??SuZ;S_bݑnG5j~5wêUVKo$Gpppppp=bŊx7 DFDδacG2;R\\Lmm-TUU3b2CX#16N+oÆ |03bO\|w"{hH޸Gʨt}9#ļ7m 6]8888N cB! iժ19995a߃=i}deaN>n*1 (faB6!vY~g/A7p888l\LD"AEEDH$B$!YAuA|X';+)MCTA_(˰38g`86#opF+Hb7~\?*%\JO> YXD<}qO?u}Ww$ºV6qiGg8Z`ϥ6.A`ϳ6ꕖkbNH/ ՝wyDi^ޠ15LLbL DD\1]UQ*zf:Kf7S?|sܫ5֭8888l-Zsδiӆ6mڰ&Э[7zE য়~&,V;6ŸDLL$tσ"d_R'cUR_w&=Hv?={n%{n"`?^& ]^z1{G:Q}~z |.~V"p4 '?o`<֞Hi'$$1,-W4Qu aO_꺩ۇ[ӱSQ>wccOЇz/PRwlcYݻ(|_{tǺ6tiXNؐ^^vin$ nP{y Hj v;pß9?;3"6`CVHRd-'8\ ~7Rm*bYN=XX;6ѝ؀U%uXBl+΄+Ef)`06T19މc.AX)3UMplYbʹ9kRJ ٍH?Iw4fOq7X/gch aV]3E?Ɔ}G"a݀=0fl0"? n~љtbZI=?`/mWIWOLV"E1H8QlBnzz_I]L`}߯)&W УX?{-,*lP H-fi<lŷݎ"bvt"f>X8 TiKP01U/w{b yʛ-e־ '^G*ßAk1NPB65JgTfT;Ms6'*b/E܂s${(ĆqFR"e/kDS+DNFE{dX5ڹ$ 62JNuzk_p4ֈq8hE0_Rj2Q&a$Z11I7Bݵ#}'Iñ\cY18B$w.X5Z}Irm$.FDfv[`V>]i*s%yͰ!~"a#nIL&uG,&_*rGܶg}o/^"6EJ2!-BGI1B=[&)[i-FCs>C!cn!Iz31 Egs;J2\<ΓcZj+Up6Ǟ=p40c{t@b Z_v@6v{7v]]k i0V%X{Ujw pS#`E{^g~)<&F>2)npppm۶p$HP@J|dD"_A,B߂Ԟ|-JOEwJb꧉-B\b򛅵-WDe46!eVeOMb.&Nq&"ӱjCD.k'1^LwOr1E(x"l)zGhoA0g4qcp3PO2;  ͯ b z ϱ[3-0]%x_hIf@{}qpppppp1` `C%uW;^7k[V]6Ǻ.:ĚFcvu3l-u=RLa)yq,$Q*l NXqppppp}1Ea#\888888h؋fv|j`Eb)'YBlDJV?7ijbC ='̕Կ{Bplem~$uSX {,l݃]888888X~XP.Pp c֎;c+7ƨ XO-յG+Gi 5za_aΆMd6vl` 5̈́bq`k ;R]k '6jhRjFgnlou3(P 0988n?-2 u'1룰&بCzLc\Sp_Wob4Wwaqf=41;c6{ < =rl'&MYlh]T痱X4ͅa^PIt,6߁ˁznm'q{b#ļ=,tojl)/ cXa{>aS 9C_ ]aUYR9cx )YCg>X a} ^ViCp]#S~o`Ri=0 {!OsU60D0AV_O=%.̿è,ݪ[}~_1({.|~Fzk eW`!Wc3 axח6CNC1lsO q}20E ߥ}RR ONð-ᚗ57}}6O~7|c 3n83uT3|b SYYiL<7XTUU+VTi0*/`o%/(3JFK=YW`X d^†n΄O[qd uޙI~%۰'YxP#qc-irj1IMs^5, |$'~ߋ=1X!i;’ߑ ~U"~طeq5SB6`>'mxQ4MMJ,+Oj vt(רOwK5}aһaxIy_ pk1.,thz8}}m}n{I[*C+ <Li:$}O1RlSϒ#j/Ҥ_1uumIu?nt “J;JiQ(m{,+_`v꟏ W\ u*0LXãaI67;1smiAF*# Nrq_A3o= _90(qoJ2jBn8GKOZ>i嘛}O[i϶O}$.e1kl»{-ڮG0>:'Im g/(Wk` u֨o,,IZ W/;z|OyX"iZ`#䗝\ڐ-})QY7;4:4Ck:hWʴ1XH%ZRZ#!֢H*ւx˰F^}9kDv!pXs~ 1=$E4D2[uq slXXbib<>8,"D[}X#{D8~ll/ 籲;CebB&"}R &.m)݅ {]GwA"󿪏D&@5ṓǧw|yBsbRF݁7ƤcY,`m%`fa=,nz a"$bFaݵ/3Ba gݳBbFc-TH7Fb Ԡ<`FKIU,0cGQWi^ݯJ2lZ=gh k1Qm$n{ow9e"iWyֆeblzn*(.%*g6 =\nb^$eGJK+U*W邵yư ^|m!ֶ,M5Ikbj K{kޱ!08* {t.9Wb腵OXωMEKlL8kT%Nxk{o׆b '-VXn|uFu:,_6engPܠC`7[Tק}i*-SyNva µX}nd;X c7c"V]zHXwX=齴nX߂MNǦX[zl|~}(⿗kNZQYQ-gRz*~)X?lԦjB-ۓ/Ty.!XL6i}Ii=|}50>O*nakkt=@.ĺvĺnu<{K}u oZU1GظDT~5NS?OǫoP ƺު2PQmZAA3/kqOwU[v1/D?zׇ7Wo0N*?ñT'S7bI~oˏY?9֌eUD$Ukrh!-"`ݽ:i .}?`c?uw<_r16doFCPmh2 'kVroP=źE!."y|+֥Z;'Nϱ,a>uXj/V[yIO x^{GD`&UDkpO]ߦ9P]uGXj4GoqwR?Gs4O=wP`ðߦ<_8~IՇ/i}I1hgHqYuM ac9Tr\ v 5ڤ&e_5'}D(ϫ-K\=Sʐ$psi>"o.(VyoZagi]V5ޮA-ҳz6>{R`Rj'6+'qEf0V_gdbzC>UDUg9Ҧ IEt^s!+V?q 1 zSt]T'j ;0T넻}ݢvJ;Si]4uiRuðBgރaNCLg걽Ҷ0Io;gJBa"a*t}UɎaIiϪuݾ{^SSye(VҷWN|ŗ$y|ND6 >U5jm2נ[|zQP? =Ҟ={uZƐ;ͱzZ$ejyz靚q|{VKհ؁'v?H:I{w ɛ醖ßjy~Hm~ [%mvWqHx߀916Vcƺ:打qpppp}8֌e>0qXoZNlZb`3lDo6@-Q`l샏nv&XtO_z/(wyWRn:`a}Xo1X-U&9Xwʻvœ;}bΖXjϚG!+ux7OFY*<-4VFaa{Jq?Ss6Qk8(G0܇6[o⿾q?}3 ^N*nf 6 `Jݯ{_ ~6 `+bBd(n"7G2\\I;n7CÑrJ:D?b}W͟}I+ۦjv>/û>a;Gr}[̽ߗ`Xer9ImkV\t_B,tWȎr>xo`{Jŝ|mzi _aoǶZc+714t2?a3 jǐ:ޮ]QU~ߠ6zO 3wHvօqrLck S %:s\TL5{ 7خtnrsslMIg`\ xCST`#%uHQ lW)boبj@lDCOEۏ5OeqY#)5MNS%I {˻xb}'i"iZ_n 6Z<,m} $+.~ֻ^#s]nt@?` y^u|^,gJJz6#RP=)oۃƉ7`Ѽ t3E硷)[A{T;KIQ:}C sgx>TV{!6566!8l4QKpp۵rW z&Y{`J˰>F\ tZV?$)h쟮@c(JyjaEZ[h-d6LH_[pIq~f}aw8GUTZ7ƒTLZEj3]XC!6L-mt=[ 5MezJM.f?P|~7CΗ$ {ݬj5\!=hʱv+9Gۛ7#5׽#NA bP戉h:T<z;,Ol3uT:h[ho>o\L_;%a5Ow+ż&||;_cspNqq=ij,o:4%i䛔&oX6ؽn`m'l$Z w/Xm.;~-:3";bc,Kmt3SC-"{y5?-f9cm|i#!~ߟ졵3 PZd.TݿjyTk?sQ4^2=B`t젱XՄvpdI:Xx8E{m3_}nn 6szj JC6#4~?R}/o#?Lj]ܷIuq1i^Ǫ}d|S*{,^+FL0 YҷwmR%U/OjO?=t},ccS~zW-z?xum5 ;Ex))-v cط>$o-6'. -VK~Z<ܣvbn[-^63DiU#fE;>:e1 ObkLHl'6yG!|FR羺>#'ʕ$:^)f_j[tϥ'GI$o4)zv#2egNe >~] is rŪO4]j}}"/=,+ 5foV;WZh? i|2u>Iׇ5'`i Nݛ %Ow@4&ublְv7G0\X3rK>vBJmbjX!Br$vGԳm4ZگMs{v_w[݋rUi}ZTkL "im#I)z`R7_!*ύiT餎5"ID(& W'Go{OggT̃TOnv(aoA E#L bVGXܡ$6W}jij۟| dP DĈLFmmk71Iտ߫6=ByOgbt/aok bz U)dͮ+e꟝[;^_ڬ.%v!ƷNz$=v;C{"R^]<5lR;iLQݼCUYVNHm4S1w. Ї[6-_C'7ۨ,?4qGĺZ^g1kM- u:ۯ[]36-(?l9O#SrZbdގ="AXj[̺?Q]3 i@k7z^B-;8888888a]4,X#l8ȳ\!~^blRF^ .XWMZY0TDXW<[Ұd7q6X.)3|kuBlNX bv`#98888884k)& LXNu;:U k=X1A=8w`nUǺ[(F!/nu/cf4u=$6l@=֯ ~31no1eb}?"Bc}(D}ڌ[Uq"í4gFZ۷<+a1lr쑼H q9?AF5.f臵MXNX)ơ+Vw$'f?vb4{0b:^'6DMJ+nwFsk:)Xsa$wس` =h؍$6XLgaO\z#l8Fl `Nbk"6^}l(6cjwu %9888888 88888888ah4m-iƎr'Is>p(HMj(rowlPC`~^5Xكeyn;l$wejfxH_7 wc&Xɸcrm6'^*º?}?\w{NGMn)K3֍2+p {b`6&X7E@Ug/z5~u_{a}FX< {SgŞOb|J-xxFlVR|-XgCzXwSYx/6 4VDI$~-0 264Q3{Ns9ʔ7M\#q[ j I}ṿ.Ȑ&~l$<174O)f&R{XW/?1CclLfjb8888l0s(l* 9=l̄Dt[y\eIrω/˳af8ISyRD~I%0Y.&*eB.VVU6*jh;5tF=5$1D,;6qd18FP fio[mkX&N{V B Sr1ѹ Ԟ=qD^cq>K!Ym'p25m"Z( hA}WҘG\W`Uy`J&C "G`խIhk-hEs9X\=a&<""=>cݓ|:W$_cQ|^MTy%Rƪи9Ct_WildbUE<.* %nԹ 'zh.P6ꣳB==C 'b <0C~8kc4)ai<( 2 jbP"=ԱȗTQy|FJŚ g;:f\ BEǞp'Qo4I~/JBn#l'=FD.Kk&0`7⾋`~ >naOG<"-դ4ؼ5u{n?|v{u5XC} x;NJ;ciQovX{$e`4 gX")Xu.}T{P6JYEZGaO|k4lךA' =VR珪\[k'"zʼn1k,ek~^ezE~.vctI$-G{1v3#'b#opS잮񓘙j.+SOivrMwCkt'G|9%I{RVƧufނԶE{RЀ$߳_ބ>W{6G'tڷXr$Ml;ƨR>ݰa#"jwoVen1PU%椶)T,úfBK?zGn5ú+~5<]n*^ېJ0[ץ3_&&X*1ba'G;q cbs|։ßjٝ@oif7:crk6?~ĺnLX gs mDu `K=ZnUߐg`m))"x#9oVjC<xUEIJ88kúf;=4w!߶ɄmTjTR]V?pj__!d3KjgX7L8Jm{;ÓN׋~ߨyºFkh'Xf D uK)_6gbB**ʉbcbX\P+*R']?{Tw\Eoz;Y-]ŕ"";4p_+-E(B6VL|4Aͦժyw~ͺY_]/Dh IkiUO/]U"]_Ly| ങbMߋ;J9z'ntp3"H2g*^YŇ,ze-cfMcE ڶ/۶˰"XMs"ayo!դo |6ʝ'NƬϽR<-zvHIl(:K3MsV=44| PY2n 01 6F{CuQ;]Z{%f$lbJeE?s٥-b(nus{53f*6B̔hW }~1^>*1~b]C(T.Wiß9Z^7QWLvEto_@(mہϕ3+2,{d$i;i `&x{$D`Jk>Oبs]P}ױvVI6GT'i1VykWs?CɌ&T4/;FDp{q$&zw[oaI9HL1, QF,v_'!Q݆Jxu1k75bU9**1c`tCL-PlNcڨ]%oI*l6I1?Py {e-v+_uCP}qk1z4h,K?"ayf5#ƅk݌ȏ)ΏRTK~Q[U8vOt.SDDh:=BD|ybG2;jk))w\k65&$ W_u!vcAxm+x6naTi (mᾏkz1T |Ztԩm4#bp򕯿=ƪ}G)uωj#[aGW~#ށ5BLP[IK@tGա-&tؚ6C5;Qte۞ńa!JPҬ͋-nAh[PĄ][HӰk1d'ׅ$1ycf,mFAB0%B-;8!z QJqpppX H@a^`8@<&$% ΃"  @Iٝn璠N<d@2ILha B H c=ßB HB0!Bk؏1i5_ܳ>kMJ;  k ֋-l\/J{yXϖ[ס+B?llؒǼk0?l/a*cdV@6% < KGoa W׿I Ǫk jX#OoVx$ IFrBh(@N A$9H&dP`3P} ?-D`mVkMPZx2X# "EoBuGm֛b;}X7{^&a-?}{b݁ƸE#6dbls'$^X{}XThDƈp/+R3a <ƺc6Ηz: 6EG]oK# 0CQ[K]úZסڹI90Kɀ>&`?.N 0A ht!6vW"I)kGh?Pc2x2,"i Zb]4?ZI_us6,pp,5Ӝy4Q۪lvV궅=lcjFi.s4!+0LRY 400IIC"Z!i!&b}26HKVmB ̷XhT ?Du `/kQL1l\l+]ole4|dU{l QŪJ8 =F|DwoIWHF žAX c$1Z|ð`|6_>"xCèlTsi3B}(p#+QR[WK`/RQ-'[(uQ?ݎn /gy.gS\EOT(" ᓪk5WW=f}b1N/Coޏc1CZiGfI,s"ӡd{T RLT;8ll &9ikXY`eU4&bœŠ%IuuB FiMjAT4aVi(קpI*t_sYiޢ3db<3q}c_hyf_w^|n&:l i2ZU& 9GAH}Զ[" W560 U' -!1DmeI_P|`y_T?:{-yrl][\ڏ+\@Z>Z O"?Jm `MjJWq֬C Zb888d@҄*@烅l>$!Js(4IbbV͛Lr Jd;U3fgJ/$$=%qh Ay/ru5F{"* Ъ Ljyԉ{HriKN8Q-Fx҅"+]@|թn)'su*E"ށIb.&ڢk8_K_OS%4nuMwܗvta+i:.$>AN'eni'Βb}@/Czyk{x{ZgeGݿh=b=chT.i;Ne98d )DV+X2LX,[^%e,\ӧǏ(7tҭ~b bCW /aÿ0Űb } ñF4 J+gp~ߌt s01}'c[ Cv:'Mx$ c1}c(Z|3}b\}9 C'O`8&b>P_ vj- ͚P&`,y04 SyhekGS _:|g/W+~Cnzނ!~XK#t=W40R퍡D嚭LϞƪOa~adS)w×P!W`aO ϫO: å`? oc\Qk|q?[o0}0mHgm_E5eZ MSj|s_W\3&|}G^Z3W5зo_^|Ejkd(% <l^ bw!6"ԲɲɘL[k2,(S'(dHI{Φ4ِ`Cyc62M0φB`әLu> u*I' ϪF5[v0S >BFZ~uJ#&iOZ*XOYއ,9889 :v?lB E()݂GPUUvHbmppJ 1k (++rssD"cz 888888  BBV"Sxp B!vxu\<>Fs+֣a\uݭz|4Z{瓊{Fwl( L OMM Xd2>!w4(Ƴ6nq?֐~lh~96AдX{bj徽.`]sܷʱ6?Kۂ;jfV& 蕷aǩ<ƺĞ馇d0 1cPq> |=qz\ 6E`;[ kѼ$v'{I럿#6oػ uo$46`+ P")h#O:&Ao5PeoE஍cb*/b`܅a +b+AOr;'Ĭ<ֶgb#{.ؘ1rldA?}&E}`l_5n%{SIEKy]ŞYZ5c}xs'6&Ńx)^uh|Z!?$<aż⋼qB@ӸPˋ% "1YXrol+XgZ`ĺi#HgcE&zv60lP$x6ذ̣*Sc 6O6lEml[EF$roB/E%y tT_na(c}> t%6J"^`U[#X5))N}T#˓*=?EDʒQ74g 6ѿ!>(jW47`mz!pG@}99bfZLF^wn+C֏7'N\ݖYuMtppâ$ }]fϞ͘1c25%Mbǿ/Ij*-gaY%)ߋ=LgVcu-*Xب7k߷8$Y@7(-kIY;O,ͣX0Q`v0u 󭏐F϶L[^U]*XwCԵʾ;a?__t&[ڠYj[lڤܭHE}E}啣hl[(;^mD2"<#t6֙XwXCuz+[o;^XwWX(_}zՏ۱:+{+_Ŝt76cz+)Z4 |,;;9^ wjwv *}6Oc(lk4g!&GAW<ƫWmwoLb=YgRAvSסV2a/-7m]6."!y[{j\`xmS^>CʕPyt9E1ܗ2<Aie䫻 kN8˚[_֎MZzG   %FcZ]c?~} Þ 1;1SFbhf U;axzv2_g a]Jr;^J+'n7ޗ N>0NQ}0C q wb7W0D1܂a8~?w_ c(QFbxC[ 0KE?asT1܎  `  ҿT[򾯾 cÇ0Ûz~W/PWZ0;nz۫ͽѾ6 Á>0\8\!n0^xVTbhˣC6GPo0a |BiWͧo1\y'`,Ɛ=)=Z_OQG0 " wc0T70ܠ1z~fho&W`500{fU^h~Pڇ&|zַO]RrS[HJ~Kgk{탪QS|ޅaQ׌;,^֚ӧqƙ/Œ9|f֬YcYreuEm.4}l_IwƸ76?ͻ5E?R u~L)ИyZe2/0ƇMcƻqLNњ{wj{*tjKaH_Sw8Yc/!o;h%.i,ճLllie [l~5OKMJOkKc!m^܀ Ok/1As)EpbH㛛ieݢ*xT|XTÅZ?پf0^ (-8/)-L |]I*?}K}vu1 diy>"`moL9WeB=R?ޤ-&~wBió6b, +-.Ϣ.:Χm Jb;kW1 h佹W깯i8]X]K@`_7W @ُ1c@Ukv~`p6j}M|o b~}6h]a]Zal=KlݛZ;ZҼa K`Yc&Joz3?[an+x,A{ova0yyylER f\AoOԛ?7g}sB-.L*+Cn z(onSl;I_ʯzelt5`wM?|*?X=MtQ kTt!30M=i\uGF)bpv4r$ԗ_z}^ׯQ6jڐF/^DB;E3럨)-ǼTD͸_TI_>>>Fk#o\! xo  _:x  _=1E~O*[8oGJ [{K6MZLZ;}y%}>#mdNsIgV1gNc}uM(-/\ϕeڰ&> [i˘\Ii4싾ƥm뫇QL b/ =H$%%%vaмys<@1kA t eogjX{imW%Nsjma )-G/; ,ax,m/e3c?߳)aEi`aJ vsUמu}y!>[|z{O{T&j߱"{ T諸OҾ}_k/x~i}?^ީv2?7|v"OGߞg5N5'_iq4Abo_v;r_O{ڻix ӞĵzfFzRޮlTfinxcwg#%=5"[ }3e璣}{waߜzZ6cշ=K{`joy=Zj3yu ?8Қ#M}^qM_eО>{A×Vs<]98׆s̐/#T0lلsօ^wj.;qT W+EIjAZO~P]}cԗ2l~= óO [0-d0_A{&)g+!mƌc-ZdjkkM<7x\}3eee$z5u]v07(-;C>ϐZ4cva:wL,s[ >999,YÇ;馛[oQVV4;1ci999̙3>wܑvkѪU+JKKAb4]9h߾=o[fȐ!@CJ]:88888+#i֭Æ ]v :>޽{g`q 1L&1c#F`v}+mۖA{|r(a1L~C~E&!LR\\N۶mfРAnݚX,FϞ=),, Qք RIENDB`tipp10-2.1.0/release/help/en/img/h_training_lesson.png000066400000000000000000000565561274324046000226130ustar00rootroot00000000000000PNG  IHDR LtEXtSoftwareAdobe ImageReadyqe<]IDATx}ŕ랸y%V9g09 &>|s|N|ߝcq ɀM0"HBvWf{Z=3]AR?{QWWի+msf]we_VW[eY4S?t> Y&mj c`8- +Mt9߇Ƴ2ywio40j"%o3\~(3Ak6:km4˴%lw&Пxu8k;m={ Ruz.,C|W0 M8~R۶ቓ']ǣ9V$k>bLj{/޵aÆigs~7~nɘf0(~5MStBw>1y4$_ƟPgkc(fqiXlT РS0[<8PB5`nפ[kgdH-Zﺦy۲X,eӏ?8 顴}0KGhSNM#j!Ab0~LA]=1ajXP&Ea1EX<!OGt35d++$[d{2aI]򵟻9.~Cg ,bҥj5!h$C k !ȦBBf6raL&mYzô'@ ,X&儆M@Ňi-`1gah")aMK@ԌBKCXBcN0MS0fP@f!j`7´e%hZzP8>mրFyyl?)Ͱ۲m% 4=?Mf:7z{--]gzH7v%IѮGd,_~S52H҆w-]-JG;Z[#!"RT)uC[odܣm阰z;w4Ifl')=aJr;.蒋550`VCt^?kBta&k&Zs/%Pźx4j&{;#M{b" Ŵj3m-B fd"kn5{NRϦ(hUU얭"uSGlu~YfgMm o&7 s̞-Eg Ӯ5i(]ܜbQ&̲:vûK4F))i gOs K& YH=1iҲ=RILRyiֿwk'srG(M#) F$VcB󇩷7ՙ&:sfkk֮k]v[$ql3)1Q2hiIC:~ڊ6JqSOE iiq c5Cf`袬P ,82TVUĺWjWAxjO4VLYD"ѯw=Ϙmto On<"պ{OqJڈjtEf,Zn-ӏ]#/M Km H1sv|bE0&ų{ߚlh˙D5s@i]y3ߊu(̢̤(.&Y@[p%rf `A@Ma:'Vu4T>Qe b~sd^@Y҈6`@2` M)3L ,I?i>grq+h.'wodT:1 R;7N26mKb[c#iRHt ^q" Y!,5Hjߖk=uoIT&0ݚF4b)r~:̤ӔT)?S$1L˸fҔnD_ڮgi[sS|x?4!5׮y"&M4btޛ530+€5 { V !Rn6-ĿO4haRV$Š wVT&W.ny2`sңLYzLNA$VūU]:眹M.D2tuj !֍kIh%5N Þ7^-2D?E@t"bmϴt̶B*X$])!chɆ(搥C Di OfBc[L24wDM]vӸHݔYN9{vw5T}4yU.б3Ty=:e?̶acNU93rC.~\@~܊ (d`(, b4c^ՠfI*r{if $HRFCĞ;vVg҉J"sJ 1:3(&#)p?1,sbӦKSrF;>guvw [eN:!D2 3 Gdh\2eJl&!!VQiCd$dÑH67❆<% ț. 俭 Al_X"0as TiQ1ֺmZ~L@kŕz.(ߌCT:ߚw?nv7ֶsbO((of܃4eZwy`'bd:?ua[Ka`POIY*7H:O ktT{YMDZ09-Bi`n^`_?L3ۆӼ a:#Զ@ 's 7o;BL` Yi@jgPˆpa!r 8iY~ցsJY-ߥDv%G<9& ^ 0eP^1wrVwA=gI`RavN` ;dz`:cFV2yДɍϛ_NGҒvryCE"ڸiS{[[O\yEEUVV',vPQmm,H n'?`Q3,1zc4 Q[!wO\n@NL@LB6{w 5XudGew!C/!mLK:ȃ8=\ƯRA^ AnBa;[ւY6P:l1d28\J,PX=ǽA<`Ra$ ێYy' KzJp`hz(SE! J/&0gh&rZN0`Ucthy򊗩a광G}@FppC/o7mTW]MH%uXE[ߺ>+ғwQjk^Ku$XuZV' mh+d~\@w-n^ls+zoۨ"ctWG~_*H3:uw7-٫^FW[mxraoIQ϶W;?T ^߿DW^y]xe!+(x[_-i YI}s/XL hQhW=G=]AQeue7./'Zے]]yH u/C?=m_} 32a*spLZ8wݺuo ? J'?L_AQpu-t%#'O=G>9}Q3=iOѧsߥh]J>=pO荿^ߓsڕW]Cw}_ƸAZs+fDO<8CEhpcg&тٷ>NHK6>{-~#hUtgxqS(7%rD޸Y~MfvYi;}['c*wݏ>Ok-tmkKҲw}~ŏ=3sA5E|'vj;z(ۍGM/|R4ё^AuU zz}r^?wja`vcN}횫 ߼fnM+随|[(P΍t}Sլ>;a"E#! t/3sG|mznOy‘,B 4JF:F]3(ZK'Nz77Kjz $HW=f;.eaY-VGtfB^},b~+ ?ah>p?%g@^Oi݆t6}wQJU9}#+_oݷrUGqQj~.]OgFGq?xmW;Θ@l4v\OwR$\;wo/WD?ο|$i#'oߤ6-}U-SŧS&cEqkmlV@)~ 8MiQO~𤥢}7]L߾>Zqzt/eϽNt!qQEz  y@ L 7uO1g'EƜy҄f/=v|&=Bc]o罋n2YKjfPhb,K=8W%P  +a|kB?S4AhzfzW./;tֽPzU}GrguSbk?Dϟ#>WS;oWgP.xghǔ> ><GK︟ײvmI;5a')V=tΥyK oٳwF-+;{H1޽+/.K O_螷2-mȹ&n {swW 7=r%IǮO]caԕӲEsi_;;Дh)1tQ!wibp'z#-9XFj'Ei5h*D oi¹+0c_MMtqRog;7~h=_YOfRHeFf/;z54cTRO {F㨻 YzwӊW_'J's8i]tO? ;aͥiGzjzs5G{GF9v鈹QF*9+N f5PkWLZxmA Ks#{okP̖V=x_-\xCfͩ~8}fkeВ#ך3Y=s*5\@O8s7̘C wO4ӖIP+DBDYg:mﯭ?gEiɲϧn2q_)$IJlwsՅmԳ϶њqta8#Օf`yKOyEGS]Ï`%[ܚs 6r^BXKaU?tTbXxi#8/йΡ۪tisG5.wg{ ٶm-X@ǎnfi͛7K@Gƍ;b_`'?k^{Mf(ffP3W^;L<7^;|X;f7X{ݺuԢ V(pg*v-ظ߻^w[{oSoZ#5e_y` 8Xb6C;wI$Yjh10b*}CdL: pX*뇾 f21)MX ""+ҫ`bwL>38,b}{MSU 8hUaA۫x\ nHlU@4~x1Uk90zPglmxbe K惌^qm*L(b *Lv 1c9Ff ~^oJR];`k` UhoQ ~%\"~> j,v TM7L|ǎ5(! h EՏ >~#_ (&{/ PٯfaN< xq)PSeˀ 梂?}c wq+V/"ԧ>E^x#?^5%5(U Ĉ 'Pmܣ>Ν+DwSO=5Bf۟LO9ݹw|Wصk$XI*Mf Ae(=b3!.xWDZf9vHSO=Enq+$*9?IdrH'uQL~Hi}ۣ^O?Mw} ŪUC w̔@|T%aTcUU > X*ϗ&?4j&) B/TiZڡGIW_}׋V9"?nT:sQ( %L#hEٓ!2=3'9:c;2ܭN:I w;/L `YƎ*D1s=BJݥ^*/c>,]R^~wf}&E^9v $B} _iOns{4s maH9wwАŬt$NMaϘ ;g.{aa8A19DŽw9\{E n[{'=W3gΤkڕq/ѧΖnk7TPOFD -Td ܞ1-rFeK->,ys:%TL3;;LRi p?sgܻm-ssɼ])ιv*10bٴ^fB@VQA ĂOV 1AL@S] ?eiY5no;&xT<Mfz(g=$KOKȵ Τ 3?knIߒʭ09LM}UGύKs AD?9+ &ۢRx-g\{~:%:c7h=VVV Fn:~׎L\1~cʕ(v^ګ*m _bAι߸9R ' xHa?KEމ+^=\j0A×.fBsZuUU~V/Y;gUqм|@Nv4scTBTzvU%c[j?a}$=׀ALЪ&?< Z@`)3Ţ "\o+n չڱ {0\YhB-v.K6Y#a yٗ@p; D=Oybvn3 qyWin}/frgkLin=];;T`t31Q/vX˵McKSkAz嗗 WZې$&a0|D-k` :cY р<~04[ܬ\{01NBs{ Uo!o[i6^yB†߅fD4*>x-u?L~NVjfcϖC䓘~Ί0lb$l[9Z@l XPhݺu2[̆@`2^u @ Hi\qT{%$c=V9Y d"o|'%ч^߁|/d"&9v5Ɓ s0`1"]ڢBҌUa1~TmHOW;G2ad -Лj)؛C28K=l3OBl0f,,'yd+VHR @TȦ,I/`dꃙpfBu~x *`8r cUhXf;`2DJ%-aib/,k$uTx~(}Sl(^ [*`!%,@ UT35QsxaO035s%'W㼁@:{U !5֍rኢ_Ƅezx;Bկ~%w$TKJ{ZŮbjFiC M׿~===WU!p Gdy *c|{Zo'`jWv?wpdU #`D*)T0U)!PjZ*V,ź8R.ͺ`Bn@”R m87G(&(dCP*D '?)n~8Iv˴" @P8{v#$ JUXi0Aq1ĎTK$Sw~WJR `CޘXUrx!i0*ACR" @j-.fj` &7k']V T-eײ~)-DŽ Zˀ"~vы2IvJwT yk q-X19v"ŋtnlO﫬拵c=o˩nQ{ bKe!;RC"vӸ뤔CPm, SMZ "}B# $>^f Rhrx;-\*L]ˑJd, ^PK+ϙ X7sxhokzYekLʴ**kk4kwWw عC|者`zzu=4qbIhr[fR83HE yx  0/lgao MPWt4if6_A|68T.!hR< J e !&'-s&v CD0{dՌ@($=_<;t5`|{8,hPA%G \5Y2L%bi$-O,l^O>NfXKH٤eAJޔI/6ńPqt^Eؤ&%))# 08+,UX`6!288e+'ƌ5Jح8?W[9f i;w6/ȓlrw$Nx+cԚ)TN1&LlXǨO0u b(vT]B6JKW4HS[WM\/GCj(Qq~U1 #IyyFf2"{r-BtxTŃ Jo?f f?~RJmHZ&%Q7{ mfڑP5[_k.X@̙;t.3eRJ(5]BۏZFOk)v:UӜTz5%+Εg(MIyMiRiP~z!cv]RQmT~K]+! *d +ڼQh¾MdjF>q$W 37WtL$ "w@XLWjOq#}G?ɘD B?Nt`B E[Zx['q̥p*Vlg(+J>><Rp@|PR [ ͹Q5M54USGN* @=c[>oPZ=yϠOW\Apv?OŁ64ϬeΞ{9H8u :$tsZTx] g V'_ηw{~TD (5!``Lx*ǼQP=VbZ I;rcE$$-H|1oT%|\<܂C}e|x( )"B' )BBEjQj:wl!~ @#!$?oaBT +s&jI8(S\UsCq۲WZe hTvW0hm0Z\[䘶L[0$,bD˰\ oRdӗoR6͝k+]浽}{})kP-.Mq+tvkS1Q{8a( ߛRF}ҎLAIE 8L{Ye|x-R>׵r{*b׎o.83 Gj7Ƿ@ @\jk47h8"*}a|Y͚YES^~o^j»1v?Ǚ;բvvy2݈r].d6 S٤{wn={'Q&ݏFQԼ-fq;v!/ABPn|"T7,yirkӍ~<qXkW)0wߍNʵn{^+v嘔ovnvz,im t24H˟YwOW5(@ xciJ1M{1#L|FP|g+1Zg{&8]n۶2yهuvHvWZ{g6K6='Y;ڱq n$\ƈC"9 \&-LDJhn!݃%Q8 vC?7y?_aZ݆u+^t#H0իiFE:x4'ƀ]?~p1vk˅ˏ@si1t)kf ٯfPfUH[QMYXx PbM_*3`Ή{NmeT.a`mZ%eՉR,[ 23uT狭hofmpn7Z Hz=٭t9vs)p+ ÔŃYڈ-؇hhhG#m+ k1TH[; 08b Ȁp|XKaZԅ堦B;xڰ; 3/<+1vu6b|)pFXxlBV6AEoY޺UW $ J Ԅ/~!T`&>#pW ~qj 7 OTJ` -H\9Upq4^kbIRXWƠ}c8I Cq@g/\?P {qxW 퀻?IQ0ȓa|_y*5\#`ʕTa VhhfSdFrU5pj>!Ztr3.v+/ճxS)pspm駟.8 ao #jw> /b_%؂T."Ql4E\pɪ*Qc rWv۶qZ<-`,ջxfBu𣔸Wa 5c٘3,䇻zv$c?K_<}i(ǥ7wаΨ47F%Ń}K/^u% 9n&2>5&pBV5uJUiN'=ʔqGg}ݖ`ZUɯf6^.GA!>+b؏I ^7 }Z0ҁܛ>5 vCp?(~!Lܪ DC(  w鬳R::uHQ7O}S.b9GU֎k]Ɓ#ڣ"  dmxf~p'8)~*?0]&p\~Vykc7G),~ʙgK``Y"ŠBd%ǎ`P n397InXZ{pJD(v]eNm-B{wLf :v_w/Ǹq~؉׵{KB r;Ǟְ vH#wNP[E8`3x!8^hcz$qՊcw0Rk'㾘2dJpgn)8ōKY崵x(5~ w 2`vq~-=Y pBJ*vv܃`qwи @@KDA3n #? Gޏ0!L0?wKX{'e!<^^;?֮STk7Ҕ95bj.\Xq1Y>_pWe>ȓ@p'W@`0}c'v=}Kт>BY+!ȹPPz@Pg^aԐ| ޝ]qwT#q n0k^49R,bs% oUj@z3C5 HtL%v}ؐ|]ט XW,͌nQ,@ g>.>Tf朗\%#~+V R߭EѭlXJ8q3{a[4sNky{ S e=썉cX|u9|w\ I#g L8P 07xcPf7 Z/vbTGqʅfN:N=oqnn*l@(/*6'6#Sh˗/] 1GR(6Ca!QW9x|_T;] [Ш(X{ Bz뭞8Ya +Ƴb 9>ˠ}$ Pry8m\+l"` g'M|L0xFh,:ep O lX{o(uׂGl t1ps(᠒ V7\~PkPrI`ôZxT AU}@ڡ4e,(1~ӞǺjաm!p͈2 (3?Wq`bpITa,2`l+W .CirBbQ~8㤰 [8rm( )R'N-=nϗ{W|FB5K7:Rˢul*ӡ4;D{"a:Fb[ Z9,k55`* e9E!X(p@EX*AM?~S̃X`snL ñVv-K2-6ٶHZ&@@q cs~4#j[`k:dp(ZDU҈FGHs [c_?4"2Cԟ+Vhu8?Z9>ީv-7+ݠ( X>@xp%A@## nᗍ!`2@V x=a)h v88x! @ @`J.jBpP1m"z*"P+D@`3Iװ)--] 2[0yJo Lp}Iipb/LђR=r!X9U gpѵ#m'g-n4i:|xy ItJ/\&YӣܩX_O7 :-Oe!ʢ3D%("抸zȠFY_ǚomE)՟hB: +)l/P-'4_( Y^vΰpDv ZyiI?~,F+MffRCY}2|bѼ%r'b>+(df,B>IRXI>qS <=x_.[=-;+7EiZJKi\}ttRH0=^U@NWq:c(K3.8i'`dviӎ&Ocަ=T0>|q=+鴣^TƤ.0,A^I ԴU茋/Iq&S즖4M:Ѹ ݼbzO2q_LjھVoA̦sfnfKt>ARQں5f1E:~eYD݂gNk\5kh0i 9?i@8/d3)J Қ7ޠ`, M (;i{sN;$" 4#֮MŞݭ=tISE^|e%EgFA$/c!Rh=Oͽ-9Z[ 0mx& CajMŧAR#F@{wҶT7j꨻}~q]SW{;UM/>I+&M1bfshj5-;Ls/=Qь4inA-T[1A(kayƐUҮvZv)T:zSRK+V拡e*u[ZSO BX-XL=oPjC'2v0y`kk)6(R1&OO&SXh$Lt'O)褦nhOg*CReĤ֝("L)Rcxi*9V(0UڱUc(|S|-ھ'M A0 &0r׊q4mt_[M>B̚2If5Qh>h) J j+3P0_$,l 4pNBR T-pHnR$MuQUp1Cք9dBT%⭛uLJi**"ELj%hr_wi!-ɡ%9T7J3jNa[8G՚!S yrc4(c ­s3ŋi붽B#R.E@ DSIa>'R34$,ǐ@N[hcIT0*C4klvsspTw޼̪Ff15Sh%j,ּ=V3}3WSέ4iL0p2b5P֤t|B k( : CY з]9d̊1qP2$LI)V`з8uLYtӸƩBX'^GCe Yʏ֊n[gM8tС9@GEx"x_9U)WQ 0;0lg < :ތNmm=ZVDֶrX˙$1_Ry(]@ @hV3s_x!a!؃VE#/ ƠQw@R @ @@ @!B @  @ @@ F<{y(J66vnsX\̃1P* ߣ Gw.% WoAI)>j7\ m~G[.߹b Wmr{ۻxx_ CZ cFb|WG9!r m (=v&1g, o..2<~R`0 ka0~g ;óVAK# |wr}2.5О?yؒ C^ @C\4513R3g nj>{5Xf@T-Vmzzz -r1:vS* \2pzOHJ#//79U_Uf1RWM n>LjpﱏK`sN+Bc|[V tvvښX\8}vuu1qWґՕDu>nEfh9vb0yfbv`ن.e ဦi1 Sl^vUSM0,3777SeeeY !oAo/Z߻wC &+<>}۩P].*n]lAX3S%@zX(of@s-H;% [4=@e 5`sCY(X:" aJ|)#CQ qqZTYǭƖ _(K+cX??_WƀC y9`|vpġ{2XpVe.ކw>mL[y݂mMw?(tmVmк;vڷ7PhMuw(e K)H8b)܍]PX^wK#BGOROF( .QtKR:RԽg'v֫Kx7J:iƭ޼J kIz5L/ZLSƓѱ/*R&RXqERSSK(i7Q\Z89B(,R}mſ۵RUib,I-mC !L[6IwwQHSG[;BpN΋t0>/ȿ;sn19W:y8/?m]hӺHOuВM]}]06қoo9?q)clj6&ۧѸz)4Ak5:Si4=OaAxamF'ё]>"FkwehfC5%۷'9+e<P:Ӡ9]G Hk!_Q dhδp`IBY=,LPCpv(!#_G0]ioEװD8NN wOS'PBXXéSwKKK>3 QEFhD!Ju[hHC&kv6w2Hqg!y9͂BYSK:֩ɓ'?4=֪ת}Y@,^R lsMt6A%L nw.s2ݝ`ۃn̡G2!_HfYAdE&KL)ldSS4n| 0(gidO=TߐK3losBc6<O"\if7üH+e7Ĺ%Pl5 3z4Dr ZYq/| V.Fj</10߻ ` {q)@1Oʞײ>n8eZ&)ɝKǍr Lb(I&0PكL އA tgaRQUi^Ժt*m>;Øt2GFӼwY3a,}=}#:M %b3VoL{mv.uYسz 0omlYӌLr#{Wڴ*Ξw⋪k41|mx6C@"F+)aaß93h8<{XHi==]\[ 0lIENDB`tipp10-2.1.0/release/help/en/img/h_training_numpad.png000066400000000000000000000374341274324046000225660ustar00rootroot00000000000000PNG  IHDR LtEXtSoftwareAdobe ImageReadyqe<>IDATx} ]Eow'IHB6 dSP?EGeq~7(* ,,Cl=twz_~Wn~ݗN;]xZn::T)VX0׮y绮 ,O&f2&>0&XqA2$ذQf&DoAi 34]ipfrg,%Eq,y }g2MGRkv'"=LFBjVeeƠ<-4 )D+A#]|¦_u{D{LyM!կduOvMv-ndw`H,Y`=EYFO0gO Ya~M5oϞ–1ܵ^S+++3u]:Qo {vu'>jדa{3a Iɰ^N<{oo .ƷmM$ 2xT9ݨ0ٞ jh$\%la MH[$ *"ѯꪫe{{7kTcy$j2 .lxgQңif<c x43x̤010L9:f9Z吣YRX#PRWMbo1H|~Rc28XNm 6vD4G7fxEH NG̩LSrϭnA2(]U%-B4GJk<#"HlR[Cdb$#f ̑pWWg\8tqIeE_Od[y%Ō8`۶-]}žX8xȀy(=9oow,z߶B#b7A!ZKina|b, OI3="->ѺCƄZoMTլ h>, bi1 ,dL-~僢oX4V\T##gd$ GbHgGO;Dthp]1Ìs-#v0mbfh p5@K^ obd9pw/1թu%ua^_q.KP\l8zoȐEW'%@iѝoLp`u-⧭B0Ȯ fupIЏvsg}`kmEIo[/u=qikV>3'q#\G1ySN"V` 9`~z&=hOr *#d cI$5a-w(R39Qd) )b઺Fn&'0EQzXr!X*.v=bY>>\R2 (/0tM48%"M#3VJ"aDs/ tht ^,'9]hJED`PIpWutHj:䌅5o\45:}}E䎔SY?q3|Yiv$3nek#6v<H,- {XAӡ w T4Rmm(q3PɵDbHL[^q3a)StBCGH0#,H:#SZdN)!'M3yi}\T^昇*gcFPBK,EIWԌAx(.ʒ3,+U /aؓ"fFs^,ez9ċ@8eb!*h?J#9wk4t¡;khɸ!~@+ɘɹ~!8O#qx,bU/tGB;" &?,sL.$5f).Pi Hd9:?1&'8g,h̹&;r1` {V`/}Akߨ~*X˲6΀ƒs-X)9ɎK`j86I GTN&ڹ~Tupx)sUcu,MMqJwڏczr647 J', 0O=݇=u5- /(b.:7ȣ¥0e$fΌj&z-ӻ&R-_PPn+( B((}CI2SK+F -hK4kRf9AHB^nCsngS00zjPQP f$M6FuPPPu< JahPkf̳V빪~2UPa8'h4k Cf -Q& !g(S!{|@ϧZUAadxD:#Ν;3uƜ9sY̅a]J:CRusQFaP,'!ؗ 3D.ݔ^vfB~'f0.z}0h>EuR3z[;zA|_/w=|qPQyrvۗmswPS]?o(;L|3EEP;C?%Yք?o>i\}rY x-}W-xw?ïx^t->E6i[0\yη?o9(.Kt\O-R}2@a^a# D-U'2F +4F/77j׬矃CmC;koąVĸzxg0+PڈO}[BG?=,ƿK$?^MW7v_]x=}}y?vk|G_~M|\Qod)6nG ǟ θnR\}*[Ă':(;wXmm] /^Ԡچu^AIW{;|^>OY"OQ?o~ၧw? |?-?1Z o}npQTYlk48‘N~3? 7oՅzEGË ΠZes8Jg X^ZqE7ŵFACu(;a ~D"2 ?/muta^y9眍j_H+X^܉g{yKkoؽ'> 2dvriË/.ڋ\[Y oۏW|پ|s}h-F< "'*"-9_͸Cz%~kZǿ9?rX1I9)cvǩ-ϟ?Ʀ\c)L_B9*?]8\l΢v?PKw]| HNDGLP恂x2L &t˷hz̬!-BהQAaƓa`?v"dq+)((@z2sAnI@1A L3AGW ~0sXAA82'`/UxA.U Q `6j/@gPPJA8ĞG9FAa6jDLDOY cL1 W8z`M<ɐ JCv,dB!nX1id2YxͨitTG0&%a)#X =7#h4Kx £cKt1"hxp$'mp8zmӶ]Ѩ0[MC6n\0qՌ,60)(F `aR&WB| <g0e`BT㔃BnOG(QRRz ʢ/q- .J###"[RkiF^Պj@J<*L1Cۂ@ `hhh ,ٴ>!Tzzz)䓞ȨWUd0:.]5hS l>w pœOzJKy$luͦPyjumVLtYO< ^{MD o>q-G:2IzL'N0/< S`Æ sAA~a b+PZZi@ڄZ&0T `Xli&*fn1~bx H+8Q\\ K+V *rڔD@hT$+W&5 !qk*nDA$W]u{11:fPQQ ld?`<ÑQB, UoNS!Q&;"@@& {ZvÏFoZ!I,Pɠ0@O_WOlnƢ&\,C&X dZЖjϩspڵkj*2% JCPZWŅFS a/+!=CXhX>@BQc mlrgZ.@@ӑÇU#E S?z [S">]V,LI4F,[o sA8Q>)F+r HUZ\x0ȇ@qN@Bۮ8 Wۮ!(\(]/8u$y7i)bcc 50{A=iLǼBH'N])'Ro"iC .`F}W +LNXwF١- u"Hn+it'avWA3 S9xt 4qȇLq !(i 2p=H9 檆S9Y7SzRnr^LhjSABbp#\K)_ s 8 j-,dGOAAK7x&4'JKgE Ӏ H -uw$ȀwuLܐ!?"E S i )puסUEpyܹXf 6nܨly&)B a&`ٲeBYCӁO<\p4fJOi&4 e+ AaM`: B*Ν;Cx JK/{=S<2f)=x "K]C~ RC`J!~~ҺEP#g >"?_~ۿL"yރt6$Dyo JD@3 LMl`!^!A{xqM֊4AAMMʇ0P (:s 9W@̜ I'/_{+Wĝw)f=䬅s"4uX{@K^3Qij*;;;b ̙37tQLeRhOP38R2 Dd$S  9=P^Ӧt.)"&ı*'[\iҦ;6eig4iqj ?܆VSPPpH؇DPPP&qB^S N:7\<)( A(y nFlٲuL#s=xꩧD&!(L1htt>1Xz̀4Y__/;Dg&~'B@K~!(LRLN6^4`X8W*gr"@TM7:u4Ί F# $Ĵ*%#I $ܴqJKd4iG9x%&2rR.M0OBSK #I_^^!(L +(L%,"FBD9h,܄W|(qP8K f->ړ"% ʇAAAafZs03Fvs!}uj#., x76W AuMzJҐ\ecfBewgg0qS>Xf{vgQ~ymR>gRNrlm?y$nrk^z -F]ew:>Z< P^V~xS<5ސ :"ukٌn$L̜m_最ƪ"CC< ׃ݛ_ǐ^9ǤSYOT?WBqQ1,;e~^l߄a=T'~Sq۰a\~pk*xjc7.RT66!ێ PYGGj*KށFzKٝm/ػo؇,hm LCqIFx?,Q ]=N=jxsz. G-K1$h;6D6l}Urue>jJDII#t.'Cd/ '>zv =!T5>lHģq/-a~h8`0gPC4cog }&JEU9F@ eϠ +\x֮{$q 򧦣w[-{F9o9oԙFA׌aof5?y0< ]^ hax /s_oJs]zMTs͇ybw)K"-Ƶϙ=؊OPƒ'u/ ݯCg>,\ 6r-kF1EV^ޯ:X~P֡o8p}׿9Qcnu٨ Zl߲=Xf/٠IeT98W7-(G]ujjPϫΙ@M]#ꫫ8 w~]jP#( LG/;o\r%;y}]j*I F#Gi%}&fјHx^"=%Xl1<(+-V66WW z7a~3hEU!˖.At2X Z͇_`ҥ< "!4գ"ȉreU5(9Apqx sVK6aNNL6vquw;J*Xܤr@E mBY,&'^Mϵ [yax F:N]]JnVZXyQ\? pbstrVhXEmЭG#Q!G²jqusg ,XKxgڋ_y Oكn~jt,X<}!PnhYzؽy(dQ^V+/SֈFhrƝ-K_;~iH:?g;?͛'F&Cen PYQIâ0]|Qy. d4ߤܬ޽k? LU0F |`*CAat3N]*CaQVa"nӬZ~7O\qZ_w҅+ϟ_-))@$ՔNE0<{pT4W˦brgrxYN< ,&ϡt$HNr aG(Oa7 u0mpwTc2kBEvd\ :| "Vjx&a$ka] qCKXyȾĬrv\u-޴8NǞ<&s7{ad^R@aX4RR@I H!8UmY+f kMiF&5cL,_Tv bRB ,3,r͎|+tJ(tc543Pޗ&LCBp,qGץk dT.Ty^&,wj t>tvtIρ4pכ17թ|L_Duojj:mw^MHz'vPC0ȡGJ @ݗ~Q>FjFrP+59fL3I wϟ 4žytqDNƚ}0Lfuzk'vI7|dE>vC9Nr$i{u-'5L՝iKwӯNS,9dMS<^xxyC||(ۇlGd8 S<4W  .G$R/'o O) ŭ3!脣CW/.lq^֭{Fc#r3 Qv"W6’N/cwz#q>l ='9HR{WqLA5dGIJ{HYuNBíL&XLkg,'GǫkעCBuN<.4CzpU埏0~u(jYAJjմ<҅C~4W{mò5“]w`P!.;w1}Y,X}P_Z ֺReʮC=ýĂai~-'駞7oX o `ëo0+Š"5r-B6 ~s6C\ Jxb,[^э/;KZkmÖWÛDO_ok> 0?V{wFo7& u>PUo?| VD]krIIIwo c8:/qDї;kZ;-F?2}\MՏDKRCr~=aX'&iR8OsN::}ˆ>=:+FΝuprq=%ڵ z%4T"5z Tﮮ :QĹy=DزV,C<1!4A^Ycbv$;i0qgKyIM/L[  6t݀ 7HiӜ5T7an3kxPͥpk ##TӇEʼnm]=["6 lT,ק|VYXZr4ƻ2$&>3Ytdk9Iqbܑ= rKM.qdx(O?줕 K9ވ9~J?DzdbFĎ "/d"W;B('uј=zv=V2Z-%-G"D'ۑI5LY7ii&7Z奵{|isl(5En 䁍Hcv0uw\QRRŒQ,C{!)(z2凷n`(بDf1]\Y&[f5*,8(ڂn}:{ޱ?YR^bpaE؂6NV~7唗nxUyuMKz~yY&cj6wӷ' ˱~dDGǾKMKQ<O6Ir!.4}]{+rDR 6I!#(UNcor`[Ixg^\6^Z&S#C\>WH8Ι5-d7GJ>4^xKrbc_L6 u [x6 oPZx#+dB$RYa"?f8!>&x C xl2ZB.=e; #q_qҘG hb?WEPEuǟPZHo}[7Z58y S j4ghķ"؍rw,lVV&EB5uߗ_JͬP(|/f{j#ʺbxtBî!+m NbIHtWA2YND- tbrs$2V⟪o_GIZ} S-(mo)x^ɠYB  @{11,^Dmd躮X BVsZ@G򘴖8ɅuZdX(ZWB]V#`\DldzwTrK0Z}Q13[ڼ['/5V/ b@J%~ Qڶv!x@SI 0R+ P-HmR=m!kGaQk*Zj5Q m,|)(M_^P|[g治pyDuej|;Jb#%SJ#Sڲ, ANXͽ:@&/Rè @-qictڪ_x 'rZYZVUw9҅>,δomj |4GifAvaVq?+U @ ;l'-nUmTW$x%SA*`ϭ"FҐƮ0^YiEdSl. gR|zVn_E^X+'ܖ$h`\j uX꾬Yj( 8t.n_baZ_5֝U@E:hSJ.ڛLH=c >d4I]N;{zցN&IPK_v Nl|e)L!!ȉzjLPOGE!ڽRǡ*#X_)0KN l< *M70!\6uQ8}#r4 shP.+)0S"?RBOI hhȨߝ{ޠn6B4__ 9 RѾeAA.L*>#'H 4nV#9 [2(И) /nVH Vcד)kBH?n b &U Ûi#}‹~]_LQJM0Ȋw+f bh9 YJFJ ~(Sn?cM`1 џ ÷sƲVE"`^6)@^ȀT4V=}A847cSYK˷2O! E%ӍDPKyi/v( Lɨ֩;LHuNk*.!Y p6o4'fJ.`qH@rmձvOlUKƲLo7}XʭbXMQ0a;U!n־э9:*@ "vLR\7yDC= :M4wK@b0ɬU , ABZ*2Y6Wdq|SaFPSNx߃)sE&Jd߰:'Jfص nA Ku|b(it# 0J`8)?=He oGDIU-8'kRZⱹmLVX6GLIhy9l j#ҨˠQa&4)l`Nj!}P/HP`:wZ qJjGQr ĵA,Keͨ$7Wj]2U`Z{yr'!jhs#/Qg uY tQ̼ГQ'A'2[lz6zLxU`^&9[!,PnWH.,QtgZc"!H1uRAy#o/|rgy g[k3!T}K, 07ݬ(r:LsWMi)BB:Ɓ]@(I\a$,isN^H[`U(TũW:F0W/jfZ!B塰l9YًJ" .4l%lan2M^zfdے`t=FnW)dv3*#N_i nTX Dat|pF99-YFyؖaKOm&* )CUG:+lF!;ax}CnXSХvʹш7u@+J ?zi]awёmL]# O' 6+cLj.H5GAGYGqB/VGVsUm\5un˘G;7 U}h Wlun~'&JP\h#ADcM$E<"P E"GoEdefit?z,"L!`%z0 `1G1/Fc==~=hx;MZ'c 2leUy,K1sԤ`;pX؜VlJk?_] = qlO H$xrtȎq~klUiGԙq,) x\(Ue$ ˌ>7'(Eʡ\T援G+"[dv jԇW'X8z2&`B(61MV'>pֱi,P:|T1J@qB,Y{ 2pc챟}EˁP[g5WcG8 ܙ@S4c^5h|HIENDB`tipp10-2.1.0/release/help/en/img/tt_logo.png000066400000000000000000000074351274324046000205450ustar00rootroot00000000000000PNG  IHDR ^ pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTEݪ###DDD"""ۇfffCCC!!!EEE BBBFFFeeeggg222$$$簾vvvUUU111333&&&www555yyyGGG444ddd%%%ttthhhcccxxxiiiTTT000uuu˄VVVAAA@@@zzzSSSHHH'''𜜜ʟ666WWW777|||jjj sss888qqq...```kkk>>> aaaIII???PPPҞ===XXX (((RRR{{{󂂂///2KlU&wIXzsvbOf8"9Lzcze*n"gک J>uTd)hMuwP'F>QpA&ب8NA=oqiG0]&MJiRi!u&W뼬wiԥaZ>2K@ti Ild[ew7 T~qr=Le+yDϖ뜭L~x*FRZى3Vׯ1%[^iRW?\rDpTI&]74H{yIENDB`tipp10-2.1.0/release/help/en/index.html000066400000000000000000000135451274324046000176100ustar00rootroot00000000000000 TIPP10 Manual

 
   Manual

for the Touch Typing Software TIPP10 Version 2.1
Last Modification: February 17, 2011
 

Introduction / Installation Training / Results General Settings / Other
1. Introduction
2. General
    2.1 TIPP10 Features
    2.2 System Requirements
    2.3 Users and Data
3. Installation
    3.1 Update
    3.2 Install in Windows
        3.2.1 Installable Version
        3.2.2 Portable Version
    3.3 Install in Mac OS
    3.4 Install in Linux
        3.4.1 (K)Ubuntu Linux
        3.4.2 OpenSuse
4. Ergonomics in the Workspace
 
5. Launching the Program
6. Training
    6.1 Lessons
        6.1.1 Training Lessons
        6.1.2 Open Lessons
        6.1.3 Own Lessons
    6.2 Lesson Parameters
        6.2.1 Duration of Lesson
        6.2.2 Response to Typing Errors
        6.2.3 Assistance
    6.3 Getting started with a Lesson
    6.4 Results
        6.4.1 Report
        6.4.2 Overview of Lessons
        6.4.3 Progress of Lessons
        6.4.4 Characters
        6.4.5 Fingers
 
7. General Settings
    7.1 Training
    7.2 Language
    7.3 Results
    7.4 Other
8. ABC Game
9. Technical Support
10. Licensing
11. Donations
12. About TIPP10
 

© 2006-2011 Tom Thielicke IT Solutions

tipp10-2.1.0/release/tipp10v2.template000066400000000000000000000320001274324046000173660ustar00rootroot00000000000000SQLite format 3@       h D ||@5[ Beispiel: WortdiktatEin kurzes Beispiel für ein Wortdiktat@5[Beispiel: SatzdiktatEin kurzes Beispiel für ein Satzdiktat 2.1.0 D!!Stableuser_charsuser_charsCREATE TABLE user_chars (user_char_unicode INTEGER PRIMARY KEY, user_char_target_errornum INTEGER, user_char_mistake_errornum INTEGER, user_char_occur_num INTEGER)Q--Utableuser_lesson_listuser_lesson_listCREATE TABLE user_lesson_list (user_lesson_id INTEGER PRIMARY KEY, user_lesson_lesson INTEGER, user_lesson_timelen INTEGER, user_lesson_tokenlen INTEGER, user_lesson_strokesnum INTEGER, user_lesson_errornum INTEGER, user_lesson_timestamp TEXT, user_lesson_type INTEGER, user_lesson_name TEXT)  &9s/#!indexown_content_indexown_content CREATE INDEX own_content_index ON own_content (content_id, content_lesson)##Utableown_contentown_contentCREATE TABLE own_content (content_id INTEGER PRIMARY KEY, content_text TEXT, content_lesson INTEGER)_tableown_listown_listCREATE TABLE own_list (own_id INTEGER PRIMARY KEY, own_name TEXT, own_description TEXT, own_unit INTEGER)]!!tabledb_versiondb_versionCREATE TABLE db_version (version INTEGER, soft_version TEXT)f-! indexuser_chars_indexuser_charsCREATE INDEX user_chars_index ON user_chars (user_char_unicode) =/{tmf_WOG?7/'wog_WOG?7/xxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSS RR QQ PP OO NN MM LL KK JJ II HH GG FF EE DD CC BB AA @@ ?? >> == << ' ^D Weiterhin besteht bei einem Satzdiktat auch keine so große Auswahl an Möglichkeiten, das Diktat intelligent zu erweitern.KC Ein Satzdiktat kann daher nicht besonders häufig aktualisiert werden.YB5 Dies ist einfach darin begründet, dass Sätze normalerweise länger sind als Worte.eAM Die Intelligenzfunktion liefert bei einem Wortdiktat bessere Resultate als bei einem Satzdiktat.@ 2. Sie möchten die Intelligenzfunktion nutzen, jedoch mit ganzen Sätzen und nicht nur Worten (siehe Beispiel Wortdiktat).? 1. Der wohl häufigste Fall: Sie möchten einfach nur einen Text vorgeben, der Ihnen dann, so wie vorgegeben, diktiert wird.V>/ Eigene Lektionen sollten in den folgenden Fällen als Satzdiktat geführt werden:O=! Jede Zeile wird, wie eingegeben, mit einem Zeilenumbruch am Ende diktiert..<a Dies ist ein Beispiel für ein Satzdiktat. $gmm\?"wj[E6qghder gNutzungfdie efür dgeeignetc)sind besondersb#Wortdiktatea/35 Schriftzeichen`!mindestens _nach^#automatisch ]erfolgt\/Ein Zeilenumbruch [diktiertZ+mit Leerzeichen Ygetrennt XwerdenW#des Diktats VZeilenUDieT!Wortdiktat SBeispielRA Hier nun die letzte Zeile.Q; Er kam, sah und siegte.P' Auf zum Atom.O% Mmmh lecker!N; Richtig: Werners ImbissM; Falsch: Werner's ImbissL# Apostroph:'K+ Und los geht's! J Hilf mir!I- Auf in die Oper.H! Sie weint. G Er betet.$FK Da dieses Beispiel bislang nicht besonders effektiv ist, was viele und kurze Sätze betrifft, sollen nachfolgend noch einige Beispielsätze aufgelistet werden:E# Wenn Sie die Intelligenzfunktion bei einem Satzdiktat also nutzen möchten, wird empfohlen, möglichst viele und kurze Sätze zu verwenden. i_TD:0x+diktiert werdenw/Tippfehler-Quotenvdenuvontabhängig sdannrdieq1aufgelistet werdenp/Wortkombinationen ooder nWortembestimmte lgezielt kkönnenjSoi3Intelligenzfunktiontipp10-2.1.0/sql/000077500000000000000000000000001274324046000134305ustar00rootroot00000000000000tipp10-2.1.0/sql/chartablesql.cpp000066400000000000000000000203151274324046000166020ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the CharTableSql class ** File name: chartablesql.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include #include #include "chartablesql.h" #include "def/defines.h" #include "def/errordefines.h" #include "widget/errormessage.h" #include "startsql.h" CharSqlModel::CharSqlModel(QWidget *parent) : QSqlQueryModel(parent) { // Remember the parent widget parentWidget = parent; } QVariant CharSqlModel::data(const QModelIndex &index, int role) const { QVariant value = QSqlQueryModel::data(index, role); int unicode; QString unicodeToChar; QString errorRatioString; double errorRatio; if (value.isValid() && role == Qt::DisplayRole) { // First column if (index.column() == 0) { // Read the unicode value unicode = value.toInt(); // Convert unicode to a char unicodeToChar = QString::QString(QChar(unicode)); //"\'" + QString::QString(QChar(unicode)) + "\'"; return unicodeToChar; } else { // Last column (error weight) if (index.column() == 4) { // If there is no error ratio (this happens if the denominator // of error weight calculation is zero if ((errorRatioString = value.toString()) == "") { errorRatioString = "0"; } errorRatio = errorRatioString.toDouble(); errorRatioString.sprintf("%.0f", errorRatio); // Append a percent sign return errorRatioString.append(tr(" %")); } } } // Change font of first column to bold if (role == Qt::FontRole && index.column() == 0) { QFont font; font = parentWidget->font(); font.setFamily("Courier New"); font.setPointSize(font.pointSize() + 2); font.setBold(true); return qVariantFromValue(font); } // Change font of first column to bold if (role == Qt::FontRole && index.column() == 4) { QFont font; font = parentWidget->font(); font.setBold(true); return qVariantFromValue(font); } return value; } CharTableSql::CharTableSql(QWidget *parent) : QWidget(parent) { previousColumnIndex = -1; // Create QModel object model = new CharSqlModel(this); // Column headers (see sql query) model->setHeaderData(0, Qt::Horizontal, tr("Schriftzeichen")); model->setHeaderData(1, Qt::Horizontal, tr("Soll-Fehler")); model->setHeaderData(2, Qt::Horizontal, tr("Ist-Fehler")); model->setHeaderData(3, Qt::Horizontal, tr("Vorkommen")); model->setHeaderData(4, Qt::Horizontal, tr("Fehlerquote")); model->setHeaderData(0, Qt::Horizontal, tr("Diese Spalte zeigt alle bislang\n" "eingegebenen Schriftzeichen"), Qt::ToolTipRole); model->setHeaderData(1, Qt::Horizontal, tr("Ein \"Soll-Fehler\" entsteht, wenn ein anderes\n" "Schriftzeichen eingegeben wurde als das hier\n" "vorgegebene"), Qt::ToolTipRole); model->setHeaderData(2, Qt::Horizontal, tr("Ein \"Ist-Fehler\" entsteht, wenn das Schriftzeichen\n" "trotz anderer Vorgabe eingegeben wurde"), Qt::ToolTipRole); model->setHeaderData(3, Qt::Horizontal, tr("Diese Spalte gibt an, wie oft das Schriftzeichen\n" "ingesamt diktiert wurde"), Qt::ToolTipRole); model->setHeaderData(4, Qt::Horizontal, tr("Die Fehlerquote zeigt, welche Schriftzeichen\n" "Ihnen am meisten Probleme bereiten.\n" "Die Fehlerquote errechnet sich aus dem\n" "Wert \"Soll-Fehler\" und dem Wert\n" "\"Vorkommen\"."), Qt::ToolTipRole); // Create the table view QTableView *view = new QTableView; view->setModel(model); // User should not be able to select a row view->setSelectionMode(QAbstractItemView::NoSelection); headerview = view->horizontalHeader(); // Set the sql query (every unicode, it's errors and an error weight) sortColumn(4); headerview->setStretchLastSection(true); headerview->setResizeMode(QHeaderView::Interactive); headerview->setSortIndicatorShown(true); // Resize the columns view->resizeColumnsToContents(); buttonReset = new QPushButton(tr("Schriftzeichen zuruecksetzen")); buttonReset->setFixedHeight(20); if (model->rowCount() == 0) { buttonReset->setEnabled(false); } // Set a horizonal layout QHBoxLayout *filterLayout = new QHBoxLayout; filterLayout->addStretch(1); filterLayout->addWidget(buttonReset); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(filterLayout); mainLayout->addWidget(view); // Pass layout to parent widget (this) this->setLayout(mainLayout); connect(headerview, SIGNAL(sectionClicked(int)), this, SLOT(sortColumn(int))); connect(buttonReset, SIGNAL(clicked()), this, SLOT(deleteUserChars())); } void CharTableSql::sortColumn(int columnindex) { // Select columnname from columnindex QString columnName; int isDesc; switch (columnindex) { case 0: columnName = "user_char_unicode"; break; case 1: columnName = "user_char_target_errornum"; break; case 2: columnName = "user_char_mistake_errornum"; break; case 3: columnName = "user_char_occur_num"; break; case 4: default: columnName = "(user_char_target_errornum * 100.0) / user_char_occur_num"; break; } if (previousColumnIndex != columnindex) { isDesc = 1; headerview->setSortIndicator(columnindex, Qt::DescendingOrder); } else { if (headerview->sortIndicatorOrder() == Qt::AscendingOrder) { isDesc = 0; } else { isDesc = 1; } } previousColumnIndex = columnindex; // Call new query setQueryOrder(columnName, isDesc); } void CharTableSql::setQueryOrder(QString columnname, int isdesc) { if (columnname != "") { QString descText; if (isdesc == 1) { descText = " DESC"; } else { descText = " ASC"; } sql = "SELECT user_char_unicode, user_char_target_errornum, " "user_char_mistake_errornum, user_char_occur_num, " "((user_char_target_errornum * 100.0) / user_char_occur_num) " "AS user_char_weighted FROM user_chars ORDER BY " + columnname + descText + ";"; } // Set the sql query (every unicode, it's errors and an error weight) model->setQuery(sql); } void CharTableSql::deleteUserChars() { switch (QMessageBox::question(this, APP_NAME, tr("Die aufgezeichneten Fehlerquoten beeinflussen die Intelligenzfunktion " "und damit auch die Auswahl der zu diktierenden Texte. " "Wenn die Fehlerquote eines bestimmten Zeichens uebermaessig hoch ist, " "kann es unter Umstaenden sinnvoll sein, die Liste zurueckzusetzen.\n\n" "Es werden nun alle aufgezeichneten Schriftzeichen geloescht.\n\n" "Wollen Sie den Vorgang wirklich " "fortsetzen?\n"), tr("&Ja"), tr("&Abbrechen"), 0, 1)) { case 0: StartSql *userSql = new StartSql(); if (!userSql->deleteUserChars()) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_ERRORS_FLUSH, TYPE_WARNING, CANCEL_OPERATION); return; } setQueryOrder("", 0); buttonReset->setEnabled(false); break; } } tipp10-2.1.0/sql/chartablesql.h000066400000000000000000000042431274324046000162510ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the CharTableSql class ** File name: chartablesql.h ** ****************************************************************/ #include #include #include #include #include #include #include #ifndef CHARSQLMODEL_H #define CHARSQLMODEL_H //! The CharSqlModel class provides a table model to format cells. /*! @author Tom Thielicke, s712715 @version 0.1.9 @date 21.06.2006 */ class CharSqlModel : public QSqlQueryModel { Q_OBJECT public: CharSqlModel(QWidget *parent = 0); QVariant data(const QModelIndex &item, int role) const; QWidget *parentWidget; }; #endif // CHARSQLMODEL_H #ifndef CHARTABLESQL_H #define CHARTABLESQL_H //! The CharTableSql class provides a table widget with all typed chars. /*! @author Tom Thielicke, s712715 @version 0.1.0 @date 21.06.2006 */ class CharTableSql : public QWidget { Q_OBJECT public: CharTableSql(QWidget *parent = 0); private slots: void sortColumn(int i); void deleteUserChars(); private: CharSqlModel *model; QHeaderView *headerview; QVariant data(const QModelIndex &item, int role) const; void setQueryOrder(QString columnname, int isdesc); int previousColumnIndex; QPushButton *buttonReset; QString sql; }; #endif // CHARTABLESQL_H tipp10-2.1.0/sql/connection.h000066400000000000000000000337511274324046000157510ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** File name: connection.h ** ****************************************************************/ #ifndef CONNECTION_H #define CONNECTION_H #include #include #include #include #include #include #include #include #include #include #include #include "def/defines.h" #include "def/errordefines.h" #include "widget/errormessage.h" #include "sql/startsql.h" // Database connection to SQLite static bool createConnection() { // Database exist bool dbExist = false; // Path do the database QString dbPath; // Path do the home database QString dbHomeTemp; QString dbFolderTemp; // Filename of the template database QString dbNameTemplate = APP_DB; // Filename of the user database QString dbNameUser = APP_USER_DB; // Connection to SQLite QSqlDatabase db; QList lessonId; QList lessonLesson; QList lessonTime; QList lessonToken; QList lessonStrokes; QList lessonErrors; QList lessonStamp; QList charUnicode; QList charTarget; QList charMistake; QList charOccur; int lessonCounter = 0; int charCounter = 0; int i; // Read user db path from settings, if not exist as argument #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("database"); dbPath = settings.value("pathpro", "").toString(); settings.endGroup(); // Prtable version if (APP_PORTABLE && dbPath != "") { dbPath = QCoreApplication::applicationDirPath() + "/portable/" + dbNameUser; } // Search for an old database if first programmstart or if user want to bool searchOldDb = false; if (searchOldDb) { searchOldDb = false; if (QFile::exists(QCoreApplication::applicationDirPath() + "/tipp10.db")) { if (QMessageBox::question(0, APP_NAME, QObject::tr("" "Es wurde eine alte TIPP10-Datenbank der Version 1 im\n" "Programmverzeichnis gefunden.\n\n" "Wollen Sie die persoenlichen Daten aus der alten Datenbank\n" "in die neue Datenbank dieser Version uebernehmen?\n"), QObject::tr("&Ja"), QObject::tr("&Nein"), 0, 1) == 0) { lessonId.clear(); lessonLesson.clear(); lessonTime.clear(); lessonToken.clear(); lessonStrokes.clear(); lessonErrors.clear(); lessonStamp.clear(); charUnicode.clear(); charTarget.clear(); charMistake.clear(); charOccur.clear(); //Transfer old data to new database now // Set database db.setDatabaseName(QCoreApplication::applicationDirPath() + "/tipp10.db"); // Open the database if (!db.open()) { // Error message ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_SQL_CONNECTION, TYPE_WARNING, CANCEL_NO); } else { QSqlQuery query; // Lessons done by the user if (query.exec("SELECT user_lesson_id, user_lesson_lesson, " "user_lesson_timelen, user_lesson_tokenlen, " "user_lesson_strokesnum, user_lesson_errornum, " "user_lesson_timestamp " "FROM user_lesson_list;")) { // Read all datasets to list items while (query.next()) { lessonId.append(query.value(0).toString()); lessonLesson.append(query.value(1).toString()); lessonTime.append(query.value(2).toString()); lessonToken.append(query.value(3).toString()); lessonStrokes.append(query.value(4).toString()); lessonErrors.append(query.value(5).toString()); lessonStamp.append(query.value(6).toString()); lessonCounter++; } // Char list of the user if (query.exec("SELECT user_char_unicode, user_char_target_errornum, " "user_char_mistake_errornum, user_char_occur_num " "FROM user_chars;")) { // Read all datasets to list items while (query.next()) { charUnicode.append(query.value(0).toString()); charTarget.append(query.value(1).toString()); charMistake.append(query.value(2).toString()); charOccur.append(query.value(3).toString()); charCounter++; } searchOldDb = true; } } } } } settings.beginGroup("general"); settings.setValue("check_db_update", false); settings.endGroup(); } // User path specified? if (dbPath != "") { // User path specified if (QFile::exists(dbPath)) { // User path and file exist dbExist = true; } else { // User file lost? // -> error message /*ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_SQL_DB_USER_EXIST, TYPE_INFO, CANCEL_NO, "Betroffener Pfad:\n" + dbPath);*/ // Try to create new databae in user path // Exist a database in the program dir? if (QFile::exists(QCoreApplication::applicationDirPath() + "/" + dbNameTemplate)) { //if (QFile::exists(":/" + dbNameTemplate)) { // A database exist in the program dir // -> copy database to user home dir QFile file(QCoreApplication::applicationDirPath() + "/" + dbNameTemplate); //QFile file(":/" + dbNameTemplate); if (file.copy(dbPath)) { QFile::setPermissions(dbPath, QFile::permissions(dbPath) | QFile::WriteUser); dbExist = true; } else { ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_SQL_DB_USER_COPY, TYPE_WARNING, CANCEL_NO, QObject::tr("Betroffener Kopierpfad:\n") + dbPath); } } else { // No database found in program dir ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_SQL_DB_APP_EXIST, TYPE_CRITICAL, CANCEL_PROGRAM, QObject::tr("Betroffener Pfad:\n") + dbPath); return false; } } } // No user path specified or file lost // (first program start oder registry was cleaned) if (!dbExist) { if (!APP_PORTABLE) { dbHomeTemp = QDir::homePath(); dbFolderTemp = "tipp10"; if (!QFile::exists(QDir::homePath() + "/" + dbFolderTemp + "/" + dbNameUser)) { dbFolderTemp = "TIPP10"; #if APP_WIN QSettings homeAppPath("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", QSettings::NativeFormat); dbHomeTemp = homeAppPath.value("AppData").toString(); #endif #if APP_MAC dbHomeTemp.append("/Library/Application Support"); #endif } dbPath = QDir::homePath() + "/" + dbFolderTemp + "/" + dbNameUser; } else { // Portable version dbHomeTemp = QCoreApplication::applicationDirPath(); dbFolderTemp = "portable"; dbPath = QCoreApplication::applicationDirPath() + "/portable/" + dbNameUser; } // Exist a database in user's home dir? if (!QFile::exists(dbPath)) { // Exist a database template in the program dir? dbPath = QCoreApplication::applicationDirPath() + "/" + dbNameTemplate; //dbPath = ":/" + dbNameTemplate; if (QFile::exists(dbPath)) { // A database template exist in the program dir // -> copy database to user home dir QDir dir(dbHomeTemp); dir.mkdir(dbFolderTemp); dir.cd(dbFolderTemp); QFile file(dbPath); if (file.copy(dir.path() + "/" + dbNameUser)) { QFile::setPermissions(dir.path() + "/" + dbNameUser, QFile::permissions(dir.path() + "/" + dbNameUser) | QFile::WriteUser); dbPath = dir.path() + "/" + dbNameUser; } else { ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_SQL_DB_APP_COPY, TYPE_CRITICAL, CANCEL_NO, QObject::tr("Betroffener Kopierpfad:\n") + dbPath); } } else { // No database found in program dir ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_SQL_DB_APP_EXIST, TYPE_CRITICAL, CANCEL_PROGRAM, QObject::tr("Betroffener Pfad:\n") + dbPath); return false; } } } // Check wether the database exists to avoid that it // will be created if it doesn't exist /*if (!QFile::exists(dbPath)) { // Error message ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_SQL_DB, TYPE_CRITICAL, CANCEL_PROGRAM); return false; }*/ if (QSqlDatabase::contains()) { db = QSqlDatabase::database(); db.close(); } else { db = QSqlDatabase::addDatabase("QSQLITE"); } // Set database db.setDatabaseName(dbPath); // Open the database if (!db.open()) { // Error message ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_SQL_CONNECTION, TYPE_CRITICAL, CANCEL_PROGRAM, QObject::tr("Betroffener Pfad:\n") + dbPath); return false; } // If necessary, write old data to new database if (searchOldDb) { QSqlQuery queryNew; if (lessonCounter != 0) { for (i = 0; i < lessonCounter; i++) { if (queryNew.exec("INSERT INTO user_lesson_list VALUES(NULL," + lessonLesson.first() + "," + lessonTime.takeFirst() + "," + lessonToken.takeFirst() + "," + lessonStrokes.takeFirst() + "," + lessonErrors.takeFirst() + ", '" + lessonStamp.takeFirst() + "', " "0, '" + QObject::tr("Uebungslektion") + " " + lessonLesson.first() + "');")) { } lessonLesson.removeFirst(); } } if (charCounter != 0) { for (i = 0; i < charCounter; i++) { if (queryNew.exec("INSERT INTO user_chars VALUES(" + charUnicode.takeFirst() + "," + charTarget.takeFirst() + "," + charMistake.takeFirst() + "," + charOccur.takeFirst() + ");")) { } } } if (lessonCounter != 0 || charCounter != 0) { QMessageBox::information(0, APP_NAME, QObject::tr("Ihre Daten wurden erfolgreich in die\n" "neue Datenbank uebertragen!\n")); } searchOldDb = false; } settings.beginGroup("database"); settings.setValue("pathpro", dbPath); settings.endGroup(); QSqlQuery queryUpdate; if (!queryUpdate.exec("SELECT * FROM db_version ORDER BY version DESC;")) { // Error message ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_DB_VERSION_READABLE, TYPE_CRITICAL, CANCEL_UPDATE); } else { if (!queryUpdate.first()) { // Error message ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_DB_VERSION_READABLE, TYPE_CRITICAL, CANCEL_UPDATE); } else { // Server DB version is 0 // -> software is too old to update if (queryUpdate.value(0).toInt() < (int) COMPILED_UPDATE_VERSION) { // Update the database QStringList updateFileName = QString(UPDATE_URL_SQL).split("/"); QFile sqlFile(":/update/" + updateFileName[updateFileName.count() - 1]); if (!sqlFile.open(QIODevice::ReadOnly | QIODevice::Text)) { // Error message ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_TEMP_FILE_CREATION, TYPE_CRITICAL, CANCEL_UPDATE); } // Go to the beginning of the version file sqlFile.seek(0); QTextStream in(&sqlFile); QString line; // Execute all sql command of the downloaded file while (!in.atEnd()) { line = in.readLine(); line = line.trimmed(); // Exclude comments and empty lines if (line != "" && !line.startsWith("//", Qt::CaseSensitive)) { // Without error handling, because DROP-Statements are allowed to // be invalid (there exist also a IF EXISTS statement in the SQLite // library which suppresses an error, but it didn't work when I try it) if (!queryUpdate.exec(line) && !line.startsWith("drop", Qt::CaseInsensitive)) { // Error message + failed sql string ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_UPDATE_SQL_EXECUTION, TYPE_CRITICAL, CANCEL_UPDATE, line); break; } } } StartSql *lessonSql = new StartSql(); if (!lessonSql->analyzeLessons("lesson")) { ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_ANALYZE_TABLE_FILL, TYPE_CRITICAL, CANCEL_UPDATE, line); } if (!lessonSql->analyzeLessons("open")) { ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_ANALYZE_TABLE_FILL, TYPE_CRITICAL, CANCEL_UPDATE, line); } if (!lessonSql->analyzeLessons("own")) { ErrorMessage *errorMessage = new ErrorMessage(); errorMessage->showMessage(ERR_ANALYZE_TABLE_FILL, TYPE_CRITICAL, CANCEL_UPDATE, line); } } } } return true; // If to connect directly to an online database // Example: database connection to MySql /*QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("http://www.domain.com"); db.setDatabaseName("dbname"); db.setUserName("user"); db.setPassword("pass");*/ } #endif // CONNECTION_H tipp10-2.1.0/sql/keyboardsql.cpp000066400000000000000000000115641274324046000164630ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the KeyboardSql class ** File name: keyboardsql.cpp ** ****************************************************************/ #include #include #include #include #include #include #include "keyboardsql.h" KeyboardSql::KeyboardSql(QString keyboardLayout) { // Set the keyboard layout layout = keyboardLayout; // Get finger text getFingerDescription(); } void KeyboardSql::getFingerDescription() { fingers << QObject::tr("Kleiner Finger links") << QObject::tr("Ringfinger links") << QObject::tr("Mittelfinger links") << QObject::tr("Zeigefinger links") << QObject::tr("Zeigefinger rechts") << QObject::tr("Mittelfinger rechts") << QObject::tr("Ringfinger rechts") << QObject::tr("Kleiner Finger rechts") << QObject::tr("Daumen"); } bool KeyboardSql::getKeyLayout(QChar givenchar, int *left, int *top, int *color, int *form, int *modifier, int *modifier2, int *finger, QString *status) { // Convert given char into properties of a key QString tableName = "keyboard_grids"; QSqlQuery query; if (query.exec("SELECT " + tableName + ".left, " + tableName + ".top, " + tableName + ".color, " + tableName + ".form, " + "keyboard_layouts.modifier1, " + "keyboard_layouts.modifier2, " + tableName + ".finger " + "FROM keyboard_layouts, " + tableName + " " + "WHERE keyboard_layouts.layout = '" + layout + "' " + "AND " + tableName + ".layout_country = '" + layout.left(2) + "' " + "AND " + tableName + ".key = keyboard_layouts.grid " + "AND keyboard_layouts.unicode = " + QString::number(givenchar.unicode()) + ";")) { if (query.first()) { *left = query.value(0).toInt(); *top = query.value(1).toInt(); *color = query.value(2).toInt(); *form = query.value(3).toInt(); *modifier = query.value(4).toInt(); *modifier2 = query.value(5).toInt(); *finger = query.value(6).toInt(); *status = fingers.at(query.value(6).toInt()); return true; } } return false; } bool KeyboardSql::getModifierLayout(int givenmodifier, int *left, int *top, int *color, int *form, int *finger, QString *status) { // Convert given id into properties of a key QString tableName = "keyboard_grids"; QSqlQuery query; if (query.exec("SELECT " + tableName + ".left, " + tableName + ".top, " + tableName + ".color, " + tableName + ".form, " + tableName + ".finger FROM " + tableName + " WHERE " + tableName + ".layout_country = '" + layout.left(2) + "' " + "AND " + tableName + ".key = " + QString::number(givenmodifier) + ";")) { if (query.first()) { *left = query.value(0).toInt(); *top = query.value(1).toInt(); *color = query.value(2).toInt(); *form = query.value(3).toInt(); *finger = query.value(4).toInt(); &status->prepend(fingers.at(query.value(4).toInt()) + " + "); return true; } } return false; } bool KeyboardSql::getNumLayout(QChar givenchar, int *left, int *top, int *color, int *form, int *finger, QString *status) { // Convert given char into properties of a key QString tableName = "numboard_grids"; QSqlQuery query; if (query.exec("SELECT " + tableName + ".left, " + tableName + ".top, " "" + tableName + ".color, " + tableName + ".form, " + tableName + ".finger " "FROM numboard_layouts, " + tableName + " " + "WHERE numboard_layouts.layout_country = '" + layout.left(2) + "' " + "AND numboard_layouts.layout_os = '" + layout.right(3) + "' " + "AND " + tableName + ".layout_country = '" + layout.left(2) + "' " + "AND " + tableName + ".layout_os = '" + layout.right(3) + "' " + "AND " + tableName + ".key = numboard_layouts.grid " + "AND numboard_layouts.unicode = " + QString::number(givenchar.unicode()) + ";")) { if (query.first()) { *left = query.value(0).toInt(); *top = query.value(1).toInt(); *color = query.value(2).toInt(); *form = query.value(3).toInt(); *finger = query.value(4).toInt(); *status = fingers.at(query.value(4).toInt()); return true; } } return false; } tipp10-2.1.0/sql/keyboardsql.h000066400000000000000000000111501274324046000161170ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the KeyboardSql class ** File name: keyboardsql.h ** ****************************************************************/ #ifndef KEYBOARDSQL_H #define KEYBOARDSQL_H #include #include #include //! The KeyboardSql class provides a key to layout convertion. /*! The KeyboardSql class is an database interface for a virtual keyboard. It can manage different layouts, standard is a windows keyboard layout. Over two functions, getKeyLayout() and getModifierLayout() it converts an unicode char or a given id into different layout values like coordinates, color and form data. @author Tom Thielicke, s712715 @version 0.1.1 @date 23.06.2006 */ class KeyboardSql { public: //! Constructor: sets the keyboard layout. /*! In this contructor the private QString variable opSystem is set. Standard value is "win", but other layouts are possible if corresponding tables exist. To change it, transmit the parameter op.Tables used for the keyboard layout are named character_list_, i.e. character_list_win. @param op The code of the keyboard layout table @see opSystem */ KeyboardSql(QString keyboardLayout = "us_qwerty_win"); //! Converts an unicode char into layout values of a key. /*! This function receives an unicode char, pointers to layout values which represent a key and a status text. The givenchar is selected in a sql query and the corresponding key layout values and a status text are transfered to the passed pointers. @param givenchar The char which is converted @param left The x ccordinate of the key @param top The y ccordinate of the key @param color The color of the key @param form The form of the key @param finger The finger code of the key @param modifier The id of the corresponding modifier key @param modifier2 The id of the corresponding second modifier key @param status The text for a status bar @see opSystem */ bool getKeyLayout(QChar givenchar, int *left, int *top, int *color, int *form, int *modifier, int *modifier2, int *finger, QString *status); //! Converts an table id into layout values of a key. /*! This function receives an id, pointers to layout values which represent a key and a status text. The id is selected in a sql query and the corresponding key layout values and a status text are transfered to the passed pointers. @param givenmodifier The id which is converted @param left The x ccordinate of the key @param top The y ccordinate of the key @param color The color of the key @param form The form of the key @param finger The finger code of the key @param status The text for a status bar @see opSystem */ bool getModifierLayout(int givenmodifier, int *left, int *top, int *color, int *form, int *finger, QString *status); //! Converts an unicode char into layout values of a key. /*! This function receives an unicode char, pointers to layout values which represent a key and a status text. The givenchar is selected in a sql query and the corresponding key layout values and a status text are transfered to the passed pointers. @param givenchar The char which is converted @param left The x ccordinate of the key @param top The y ccordinate of the key @param color The color of the key @param form The form of the key @param finger The finger code of the key @param status The text for a status bar @see opSystem */ bool getNumLayout(QChar givenchar, int *left, int *top, int *color, int *form, int *finger, QString *status); void getFingerDescription(); private: //! Holds identification string of the keyboard layout table. QString layout; QStringList fingers; }; #endif // KEYBOARDSQL_H tipp10-2.1.0/sql/lessontablesql.cpp000066400000000000000000000264121274324046000171740ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the LessonTableSql class ** File name: lessontablesql.h ** ****************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "lessontablesql.h" #include "widget/lessonprintdialog.h" #include "def/defines.h" LessonSqlModel::LessonSqlModel(int row, int type, QWidget *parent) : QSqlQueryModel(parent) { parentWidget = parent; lastIdInserted = row; lastTypeInserted = type; #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); language = settings.value("language_gui", "en").toString(); settings.endGroup(); } QVariant LessonSqlModel::data(const QModelIndex &index, int role) const { QVariant value = QSqlQueryModel::data(index, role); QDateTime timeStamp; double lessonGrade; QString lessonGradeString; int timeSec; double timeMin; double lessonCpm; QString lessonCpmString; double lessonRate; QString lessonRateString; static int coloredRow = -1; QString lessonName; if (value.isValid() && role == Qt::DisplayRole) { if (index.column() == 0) { // Expand lesson name lessonName = value.toString(); return lessonName; //.prepend(tr("Uebungslektion ")); } if (index.column() == 1) { // Convert time stamp into a readable format timeStamp = QDateTime::fromString(value.toString(), "yyyyMMddhhmmss"); return timeStamp.toString((language == "de" ? "dd.MM.yyyy hh:mm" : "MMM d, yyyy hh:mm ap")) + (language == "de" ? tr(" Uhr") : ""); } if (index.column() == 2) { // Show time length in seconds or minutes if ((timeSec = value.toInt()) < 60) { return QString::number(timeSec) + tr(" sek."); } else { timeMin = floor((timeSec / 60.0) / 0.1 + 0.5) * 0.1; return QString::number(timeMin) + tr(" min."); } } if (index.column() == 5) { // Rate lessonRate = value.toDouble(); lessonRateString.sprintf("%.0f", lessonRate); return lessonRateString + " %";; } if (index.column() == 6) { // There is never grade smaller than zero lessonCpm = value.toDouble(); lessonCpmString.sprintf("%.0f", lessonCpm); return lessonCpmString; } if (index.column() == 7) { // There is never grade smaller than zero if ((lessonGrade = value.toDouble()) < 0) { lessonGrade = 0; } lessonGradeString.sprintf("%.0f", lessonGrade); return lessonGradeString + (lessonGradeString == "1" ? tr(" Punkt") : tr(" Punkte")); } if (index.column() == 8 && value.toInt() == lastIdInserted) { // Current row has to be colored coloredRow = index.row(); return QString::number(coloredRow); } if (lastIdInserted == 0) { // No row is colored coloredRow = -1; } } if (role == Qt::FontRole && (index.column() == 0 || index.column() == 7)) { // Show the lesson number bold QFont font; font = parentWidget->font(); font.setBold(true); return qVariantFromValue(font); } /*if (role == Qt::BackgroundColorRole) { if (index.row() == coloredRow) { // Show the row with background color return qVariantFromValue(QColor(249, 126, 50)); } }*/ //if (role == Qt::TextColorRole return value; } LessonTableSql::LessonTableSql(int row, int type, QList charlist, QList mistakelist, QWidget *parent) : QWidget(parent) { mistakeList = mistakelist; charList = charlist; lessonRow = row; previousColumnIndex = -1; whereClausel = ""; #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif printVisible = false; // Create filter headline labelFilter = new QLabel(tr("Zeige: ")); comboFilter = new QComboBox(); comboFilter->insertItem(0, tr("Alle Lektionen")); comboFilter->insertItem(1, tr("Uebungslektionen")); comboFilter->insertItem(2, tr("Freie Lektionen")); comboFilter->insertItem(3, tr("Eigene Lektionen")); // Create QModel object model = new LessonSqlModel(row, type, this); setModelHeader(); //model->setSort(0, Qt::AscendingOrder); // Create the table view view = new QTableView; view->setModel(model); // User should not be able to select a row view->setSelectionMode(QAbstractItemView::NoSelection); // Hide the lesson id column headerview = view->horizontalHeader(); // Set the sql query (every lesson, it's properties and rating) sortColumn(-1); headerview->setStretchLastSection(true); headerview->setResizeMode(QHeaderView::Interactive); headerview->setSortIndicatorShown(true); // Resize the columns view->resizeColumnsToContents(); view->setColumnHidden(8, true); view->resizeColumnsToContents(); //view->setColumnHidden(8, true); // Set a horizonal layout QHBoxLayout *filterLayout = new QHBoxLayout; filterLayout->addStretch(1); filterLayout->addWidget(labelFilter); filterLayout->addWidget(comboFilter); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(filterLayout); mainLayout->addWidget(view); // Pass layout to parent widget (this) this->setLayout(mainLayout); connect(headerview, SIGNAL(sectionClicked(int)), this, SLOT(sortColumn(int))); connect(comboFilter, SIGNAL(activated(int)), this, SLOT(changeFilter(int))); } void LessonTableSql::sortColumn(int columnindex) { // Select columnname from columnindex switch (columnindex) { case 0: columnName = "user_lesson_lesson"; break; case 1: default: columnName = "user_lesson_timestamp"; columnindex = 1; break; case 2: columnName = "user_lesson_timelen"; break; case 3: columnName = "user_lesson_tokenlen"; break; case 4: columnName = "user_lesson_errornum"; break; case 5: columnName = "user_lesson_rate"; break; case 6: columnName = "user_lesson_cpm"; break; case 7: columnName = "user_lesson_grade"; break; } if (previousColumnIndex != columnindex) { isDesc = 1; headerview->setSortIndicator(columnindex, Qt::DescendingOrder); } else { if (headerview->sortIndicatorOrder() == Qt::AscendingOrder) { isDesc = 0; } else { isDesc = 1; } } previousColumnIndex = columnindex; if (columnindex != -1) { model->lastIdInserted = 0; } // Call new query setQueryOrder(columnName, isDesc); } void LessonTableSql::changeFilter(int rowindex) { // Select columnname from columnindex switch (rowindex) { case 0: whereClausel = ""; break; case 1: default: whereClausel = "WHERE user_lesson_type = 0 "; break; case 2: whereClausel = "WHERE user_lesson_type = 1 "; break; case 3: whereClausel = "WHERE user_lesson_type = 2 "; break; } model->lastIdInserted = 0; // Call new query setQueryOrder(columnName, isDesc); } void LessonTableSql::setQueryOrder(QString columnname, int isdesc) { QString descText; if (isdesc == 1) { descText = " DESC"; } else { descText = " ASC"; } model->clear(); // Set the sql query (every lesson, it's properties and rating) model->setQuery("SELECT user_lesson_name, user_lesson_timestamp, " "user_lesson_timelen, user_lesson_tokenlen, " "user_lesson_errornum, " "((user_lesson_errornum * 100.0) / " " user_lesson_strokesnum) AS user_lesson_rate, " "(user_lesson_strokesnum / " "(user_lesson_timelen / 60.0)) AS user_lesson_cpm, " "(((user_lesson_strokesnum - (20.0 * user_lesson_errornum)) / " "(user_lesson_timelen / 60.0)) * 0.4) AS user_lesson_grade, " "user_lesson_id FROM user_lesson_list " + whereClausel + "ORDER BY " + columnname + descText + ";"); setModelHeader(); } void LessonTableSql::setModelHeader() { // Column headers (see sql query) model->setHeaderData(0, Qt::Horizontal, tr("Lektion")); model->setHeaderData(1, Qt::Horizontal, tr("Zeitpunkt")); model->setHeaderData(2, Qt::Horizontal, tr("Dauer")); model->setHeaderData(3, Qt::Horizontal, tr("Zeichen")); model->setHeaderData(4, Qt::Horizontal, tr("Fehler")); model->setHeaderData(5, Qt::Horizontal, tr("Quote")); model->setHeaderData(6, Qt::Horizontal, tr("A/min")); model->setHeaderData(7, Qt::Horizontal, tr("Bewertung")); model->setHeaderData(0, Qt::Horizontal, tr("Diese Spalte zeigt die Namen\n" "der absolvierten Lektionen"), Qt::ToolTipRole); model->setHeaderData(1, Qt::Horizontal, tr("Startzeitpunkt der Lektion"), Qt::ToolTipRole); model->setHeaderData(2, Qt::Horizontal, tr("Dauer der Lektion insgesamt"), Qt::ToolTipRole); model->setHeaderData(3, Qt::Horizontal, tr("Anzahl der Schriftzeichen, die\n" "ingesamt diktiert wurden"), Qt::ToolTipRole); model->setHeaderData(4, Qt::Horizontal, tr("Anzahl der Tippfehler, die in\n" "der Lektion gemacht wurden"), Qt::ToolTipRole); model->setHeaderData(5, Qt::Horizontal, tr("Tippfehler in Abhaengigkeit von der\n" "Diktatlaenge (Tippfehler / Zeichen)\n" "Umso geringer die Fehlerquote, desto besser!"), Qt::ToolTipRole); model->setHeaderData(6, Qt::Horizontal, tr("\"A/min\" besagt, wie viele Schriftzeichen (Anschlaege)\n" "durchschnittlich pro Minute eingegeben wurden"), Qt::ToolTipRole); model->setHeaderData(7, Qt::Horizontal, tr("Die Bewertung der Leistung errechnet sich wie folgt:\n" "((Zeichen - (20 x Fehler)) / Dauer in Minuten) x 0.4\n \n" "Beachten Sie, dass langsames Tippen ohne Fehler\n" "eine bessere Bewertung hervorruft, als schnelles\n" "Tippen mit vielen Fehlern!"), Qt::ToolTipRole); } tipp10-2.1.0/sql/lessontablesql.h000066400000000000000000000052241274324046000166370ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the LessonTableSql class ** File name: lessontablesql.h ** ****************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #ifndef LESSONSQLMODEL_H #define LESSONSQLMODEL_H //! The LessonSqlModel class provides a table model to format cells. /*! @author Tom Thielicke, s712715 @version 0.0.7 @date 21.06.2006 */ class LessonSqlModel : public QSqlQueryModel { Q_OBJECT public: LessonSqlModel(int row, int type, QWidget *parent = 0); int lastIdInserted; private: int lastTypeInserted; QVariant data(const QModelIndex &item, int role) const; QWidget *parentWidget; QString language; }; #endif // LESSONSQLMODEL_H #ifndef LESSONTABLESQL_H #define LESSONTABLESQL_H //! The LessonTableSql class provides a table widget with lessons. /*! @author Tom Thielicke, s712715 @version 0.0.2 @date 16.06.2006 */ class LessonTableSql : public QWidget { Q_OBJECT public: LessonTableSql(int row, int type, QList charlist, QList mistakelist, QWidget *parent = 0); private slots: void sortColumn(int i); void changeFilter(int rowindex); private: void setModelHeader(); QLabel *labelFilter; QComboBox *comboFilter; LessonSqlModel *model; QTableView *view; QHeaderView *headerview; QVariant data(const QModelIndex &item, int role) const; void setQueryOrder(QString columnname, int isdesc); int previousColumnIndex; QString columnName; QString whereClausel; int isDesc; bool printVisible; QList charList; QList mistakeList; int lessonRow; }; #endif // LESSONTABLESQL_H tipp10-2.1.0/sql/startsql.cpp000066400000000000000000000502601274324046000160140ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the StartSql class ** File name: startsql.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include "startsql.h" #include "def/defines.h" // Konstruktor StartSql::StartSql() { } int StartSql::fillLessonList(QListWidget *listLesson, QList *arrayTraining, QString languageLesson) { // Clear the list first because this function is called not only once in // the contructor but also after a successful online update listLesson->clear(); arrayTraining->clear(); // Fill lesson list from SQLite lesson table QSqlQuery query; QString sqlString; QString lessonId; QString lessonName; QString lessonDescription; QListWidgetItem *currentItem; QIcon lessonIcon; int lessonCounter = 0; // SQL: all lessons sorted by id and a left joint to the number of // lessons done by the user sqlString = "SELECT lesson_list.lesson_id, lesson_list.lesson_name, " "lesson_list.lesson_description, " "COUNT(user_lesson_list.user_lesson_lesson) FROM lesson_list " "LEFT JOIN user_lesson_list ON lesson_list.lesson_id = " "user_lesson_list.user_lesson_lesson AND user_lesson_list.user_lesson_type = 0 " "WHERE lesson_list.lesson_language = '" + languageLesson + "' "; sqlString = sqlString.append("GROUP BY lesson_list.lesson_id;"); if (!query.exec(sqlString)) { return -1; } // Read all datasets to list items while (query.next()) { // ID of the lesson lessonId = query.value(0).toString(); // Name of the lesson lessonName = query.value(1).toString(); // Maybe a additional description lessonDescription = query.value(2).toString(); // Maybe a additional description -> show it in brackets if (query.value(2).toString() != "") { lessonName.append(" (" + lessonDescription + ")"); } // Show different icons depending on number of lessons done if (query.value(3).toInt() > 2) { // Lesson done multiple lessonIcon = QIcon(":/img/lesson_done_three.png"); } else { if (query.value(3).toInt() == 2) { // Lesson done multiple lessonIcon = QIcon(":/img/lesson_done_two.png"); } else { if (query.value(3).toInt() == 1) { // Lesson done once lessonIcon = QIcon(":/img/lesson_done_one.png"); } else { // Lesson never done lessonIcon = QIcon(":/img/lesson_done_none.png"); } } } // Add Item to the list currentItem = new QListWidgetItem(lessonIcon, lessonName, listLesson); currentItem->setToolTip(lessonDescription); arrayTraining->append(lessonId); lessonCounter++; } return lessonCounter; } int StartSql::fillOpenList(QListWidget *listOpen, QList *arrayOpen, QString themeId, QString languageLesson) { // Clear the list first because this function is called not only once in // the contructor but also after a successful online update listOpen->clear(); arrayOpen->clear(); // Fill lesson list from SQLite lesson table QSqlQuery query; QString lessonName; QString lessonDescription; QListWidgetItem *currentItem; QString lessonId; QIcon openIcon; int lessonCounter = 0; QString themeAll = "WHERE open_list.open_theme = " + themeId + " "; if (themeId == "0" || themeId == "") { themeAll = ""; } // SQL: all lessons sorted by id and a left joint to the number of // lessons done by the user if (!query.exec("SELECT open_list.open_id, open_list.open_name, " "open_list.open_description, " "COUNT(user_lesson_list.user_lesson_lesson) FROM open_list " "LEFT JOIN user_lesson_list ON open_list.open_id = " "user_lesson_list.user_lesson_lesson AND user_lesson_list.user_lesson_type = 1 " + themeAll + "GROUP BY open_list.open_name;")) { return -1; } // Read all datasets to list items while (query.next()) { // ID of the lesson lessonId = query.value(0).toString(); // Name of the lesson lessonName = query.value(1).toString(); // Maybe a additional description lessonDescription = query.value(2).toString(); // Show different icons depending on number of lessons done if (query.value(3).toInt() > 2) { // Lesson done multiple openIcon = QIcon(":/img/lesson_done_three.png"); } else { if (query.value(3).toInt() == 2) { // Lesson done multiple openIcon = QIcon(":/img/lesson_done_two.png"); } else { if (query.value(3).toInt() == 1) { // Lesson done once openIcon = QIcon(":/img/lesson_done_one.png"); } else { // Lesson never done openIcon = QIcon(":/img/lesson_done_none.png"); } } } // Add Item to the list currentItem = new QListWidgetItem(openIcon, lessonName, listOpen); currentItem->setToolTip(lessonDescription); arrayOpen->append(lessonId); lessonCounter++; } return lessonCounter; } int StartSql::fillOwnList(QListWidget *listOwn, QList *arrayOwn) { // Clear the list first because this function is called not only once in // the contructor but also after a successful online update listOwn->clear(); arrayOwn->clear(); // Fill lesson list from SQLite lesson table QSqlQuery query; QString lessonName; QString lessonDescription; QListWidgetItem *currentItem; QString lessonId; QIcon ownIcon; int lessonCounter = 0; // SQL: all lessons sorted by id and a left joint to the number of // lessons done by the user if (!query.exec("SELECT own_list.own_id, own_list.own_name, " "own_list.own_description, " "COUNT(user_lesson_list.user_lesson_lesson) FROM own_list " "LEFT JOIN user_lesson_list ON own_list.own_id = " "user_lesson_list.user_lesson_lesson AND user_lesson_list.user_lesson_type = 2 " "GROUP BY own_list.own_name;")) { return -1; } // Read all datasets to list items while (query.next()) { // ID of the lesson lessonId = query.value(0).toString(); // Name of the lesson lessonName = query.value(1).toString(); // Maybe a additional description lessonDescription = query.value(2).toString(); // Show different icons depending on number of lessons done if (query.value(3).toInt() > 2) { // Lesson done multiple ownIcon = QIcon(":/img/lesson_done_three.png"); } else { if (query.value(3).toInt() == 2) { // Lesson done multiple ownIcon = QIcon(":/img/lesson_done_two.png"); } else { if (query.value(3).toInt() == 1) { // Lesson done once ownIcon = QIcon(":/img/lesson_done_one.png"); } else { // Lesson never done ownIcon = QIcon(":/img/lesson_done_none.png"); } } } // Add Item to the list currentItem = new QListWidgetItem(ownIcon, lessonName, listOwn); currentItem->setToolTip(lessonDescription); arrayOwn->append(lessonId); lessonCounter++; } return lessonCounter; } int StartSql::fillThemes(QComboBox *comboTheme, QList *arrayThemes, QString languageLesson, QString textAll) { // Clear the list first because this function is called not only once in // the contructor but also after a successful online update comboTheme->clear(); arrayThemes->clear(); // Fill lesson list from SQLite lesson table QSqlQuery query; QString themeName; QString themeId; int themeCounter = 1; // SQL: all lessons sorted by id and a left joint to the number of // lessons done by the user if (!query.exec("SELECT open_themes.theme_id, open_themes.theme_name, " "open_themes.theme_description FROM open_themes " "GROUP BY open_themes.theme_id;")) { return -1; } comboTheme->insertItem(0, textAll); arrayThemes->append(0); // Read all datasets to list items while (query.next()) { // ID of the lesson themeId = query.value(0).toString(); // Name of the lesson themeName = query.value(1).toString(); // Add Item to the list comboTheme->insertItem(themeCounter, themeName); arrayThemes->append(themeId); themeCounter++; } return themeCounter; } bool StartSql::deleteUserLessonList() { QSqlQuery query; if (!query.exec("DELETE FROM user_lesson_list;")) { return false; } return true; } bool StartSql::deleteUserChars() { QSqlQuery query; if (!query.exec("DELETE FROM user_chars;")) { return false; } return true; } bool StartSql::deleteOwnLesson(QString lessonnumber) { QSqlQuery query; if (!query.exec("DELETE FROM user_lesson_list WHERE user_lesson_lesson = " + lessonnumber + " AND user_lesson_type = 2;")) { return false; } if (!query.exec("DELETE FROM own_content WHERE content_lesson = " + lessonnumber + ";")) { return false; } if (!query.exec("DELETE FROM own_list WHERE own_id = " + lessonnumber + ";")) { return false; } return true; } bool StartSql::updateOwnLesson(QString lessonnumber, QString lessonname, QString description, QStringList content, int unit) { QVariant lastLessonId; QSqlQuery query; QString lessonid = "0"; QString simplifiedContent = ""; int i; if (content.size() > 0) { if (lessonnumber != "-1" && lessonnumber != "-2") { // Update existing lesson // ---------------------- // First, delete all content of the lesson if (!query.exec("DELETE FROM own_content WHERE content_lesson = " + lessonnumber + ";")) { return false; } lessonid = lessonnumber; // Insert content name in the database if (!query.exec("UPDATE own_list SET own_name = '" + lessonname.replace(QChar(0x27), "''", Qt::CaseSensitive) + "', " "own_description = '" + description.replace(QChar(0x27), "''", Qt::CaseSensitive) + "', " "own_unit = " + QString::number(unit) + " WHERE own_id = " + lessonnumber + ";")) { return false; } } else { // Create new lesson // ----------------- // Insert content name in the database if (!query.exec("INSERT INTO own_list VALUES(NULL,'" + lessonname.replace(QChar(0x27), "''", Qt::CaseSensitive) + "','" + description.replace(QChar(0x27), "''", Qt::CaseSensitive) + "', " + QString::number(unit) + ");")) { return false; } lastLessonId = query.lastInsertId(); lessonid = QString::number(lastLessonId.toInt()); } // Write every line of lesson content to database for (i = 0; i < content.size(); i++) { //simplifiedContent = QString::QString( // content.at(i)).replace(QChar(0x27), "''", Qt::CaseSensitive).simplified(); simplifiedContent = trim(QString::QString( content.at(i)).replace(QChar(0x27), "''", Qt::CaseSensitive)); if (!query.exec("INSERT INTO own_content VALUES(NULL,'" + simplifiedContent + "'," + lessonid + ");")) { return false; } } } return true; } QString StartSql::trim(QString s) { if (s.size() == 0) { return ""; } int start = 0; int end = s.size() - 1; QChar *c = s.data(); if (c[start] != ' ' && c[end] != ' ') { return s; } while (start<=end && c[start] == ' ') { start++; } if (start <= end) { while (end && c[end] == ' ') { end--; } } int l = end - start + 1; if (l <= 0) { return ""; } return QString(c + start, l); } bool StartSql::ownLessonExist(QString lessonname) { QSqlQuery query; if (!query.exec("SELECT own_name " "FROM own_list " "WHERE own_name = '" + lessonname + "';")) { return false; } if (!query.first()) { return false; } else { return true; } } bool StartSql::getOwnLesson(QString lessonnumber, QLineEdit *lineLessonName, QLineEdit *lineLessonDescription, QTextEdit *lineLessonContent, QRadioButton *radioUnitSentence, QRadioButton *radioUnitWord) { QSqlQuery query; QString lessonName = ""; QString lessonDescription = ""; QString lessonContent = ""; int lessonUnit = 0; if (!query.exec("SELECT own_name, own_description, own_unit " "FROM own_list " "WHERE own_id = " + lessonnumber + ";")) { return false; } if (query.first()) { lessonName = query.value(0).toString(); lessonDescription = query.value(1).toString(); lessonUnit = query.value(2).toInt(); } if (!query.exec("SELECT content_text " "FROM own_content " "WHERE content_lesson = " + lessonnumber + " " "ORDER BY content_id;")) { return false; } // Read all datasets to list items while (query.next()) { // ID of the lesson lessonContent.append(query.value(0).toString() + "\n"); } // Fill out text lines lineLessonName->setText(lessonName); lineLessonDescription->setText(lessonDescription); lineLessonContent->setText(lessonContent); if (lessonUnit == 0) { radioUnitSentence->setChecked(true); radioUnitWord->setChecked(false); } else { radioUnitSentence->setChecked(false); radioUnitWord->setChecked(true); } return true; } bool StartSql::analyzeOwnLessons() { QSqlQuery mainQuery; QSqlQuery subQuery; QString queryString; QString indexString; QString lessonString; int lessonLen; QHash unicodeErrorHash; QHash unicodeErrorHashClean; int errorNum = 0; int rowsRead = 0; int totalRows = 0; int i; if (!mainQuery.exec("SELECT char_unicode FROM lesson_chars;")) { return false; } while (mainQuery.next()) { unicodeErrorHashClean[mainQuery.value(0).toInt()] = 0; errorNum++; } // 1. Delete current lessonanalysis table // (no error message, table could not exist) mainQuery.exec("DROP TABLE own_analysis;"); // 2a. Create new analysis table query with new error definitions as columns queryString = "CREATE TABLE own_analysis (analysis_content INTEGER primary key"; indexString = "CREATE INDEX own_analysis_index ON own_analysis (analysis_content"; QHashIterator hashIteratorClean(unicodeErrorHashClean); while (hashIteratorClean.hasNext()) { hashIteratorClean.next(); queryString += ", analysis_char_" + QString::number(hashIteratorClean.key()) + " INTEGER"; indexString += ", analysis_char_" + QString::number(hashIteratorClean.key()); //cout << i.key() << ": " << i.value() << endl; } queryString += ");"; indexString += ");"; // 2b. Execute new analysis table query if (!mainQuery.exec(queryString)) { return false; } // 2c. Execute new analysis table query if (!mainQuery.exec(indexString)) { return false; } // 3. Count number of lesson text if (!mainQuery.exec("SELECT COUNT(content_id) FROM own_content;")) { return false; } mainQuery.first(); totalRows = mainQuery.value(0).toInt(); // 4. Query all lesson text and analyze it if (!mainQuery.exec("SELECT content_id, content_text FROM own_content " "ORDER BY content_id;")) { return false; } while (mainQuery.next()) { unicodeErrorHash = unicodeErrorHashClean; lessonString = mainQuery.value(1).toString(); lessonLen = lessonString.length(); // Now count all error chars and put them into the hash table for (i = 0; i < lessonString.size(); i++) { if (unicodeErrorHash.contains(lessonString[i].unicode())) { unicodeErrorHash[lessonString[i].unicode()]++; } } queryString = "INSERT INTO own_analysis VALUES("; queryString += mainQuery.value(0).toString(); QHashIterator hashIterator(unicodeErrorHash); //hashIterator.toFront(); while (hashIterator.hasNext()) { hashIterator.next(); // Weighted number of chars (char ratio) to SQL string queryString += ", " + QString::number(((double) hashIterator.value() / (double) lessonLen) * 100.0, 'f', 2); } queryString += ");"; // Execute new analysis table query if (!subQuery.exec(queryString)) { return false; } rowsRead++; } return true; } bool StartSql::analyzeLessons(QString lessonType) { QSqlQuery mainQuery; QSqlQuery subQuery; QString queryString; QString indexString; QString lessonString; int lessonLen; QHash unicodeErrorHash; QHash unicodeErrorHashClean; int errorNum = 0; int rowsRead = 0; int totalRows = 0; int i; if (!mainQuery.exec("SELECT char_unicode FROM lesson_chars;")) { // Error message return false; } while (mainQuery.next()) { unicodeErrorHashClean[mainQuery.value(0).toInt()] = 0; errorNum++; } // 1. Delete current lessonanalysis table // (no error message, table could not exist) mainQuery.exec("DROP TABLE " + lessonType + "_analysis;"); // 2a. Create new analysis table query with new error definitions as columns queryString = "CREATE TABLE " + lessonType + "_analysis (analysis_content " "INTEGER primary key"; indexString = "CREATE INDEX " + lessonType + "_analysis_index ON " + lessonType + "_analysis (analysis_content"; QHashIterator hashIteratorClean(unicodeErrorHashClean); while (hashIteratorClean.hasNext()) { hashIteratorClean.next(); queryString += ", analysis_char_" + QString::number(hashIteratorClean.key()) + " INTEGER"; indexString += ", analysis_char_" + QString::number(hashIteratorClean.key()); //cout << i.key() << ": " << i.value() << endl; } queryString += ");"; indexString += ");"; // 2b. Execute new analysis table query if (!mainQuery.exec(queryString)) { return false; } // 2c. Execute new analysis table query if (!mainQuery.exec(indexString)) { return false; } // 3. Count number of lesson text if (!mainQuery.exec("SELECT COUNT(content_id) FROM " + lessonType + "_content;")) { return false; } mainQuery.first(); totalRows = mainQuery.value(0).toInt(); // 4. Query all lesson text and analyze it if (!mainQuery.exec("SELECT content_id, content_text FROM " + lessonType + "_content ORDER BY content_id;")) { return false; } while (mainQuery.next()) { unicodeErrorHash = unicodeErrorHashClean; lessonString = mainQuery.value(1).toString(); lessonLen = lessonString.length(); // Now count all error chars and put them into the hash table for (i = 0; i < lessonString.size(); i++) { if (unicodeErrorHash.contains(lessonString[i].unicode())) { unicodeErrorHash[lessonString[i].unicode()]++; } } queryString = "INSERT INTO " + lessonType + "_analysis VALUES("; queryString += mainQuery.value(0).toString(); QHashIterator hashIterator(unicodeErrorHash); //hashIterator.toFront(); while (hashIterator.hasNext()) { hashIterator.next(); // Weighted number of chars (char ratio) to SQL string queryString += ", " + QString::number(((double) hashIterator.value() / (double) lessonLen) * 100.0, 'f', 2); } queryString += ");"; // Execute new analysis table query if (!subQuery.exec(queryString)) { return false; } rowsRead++; } return true; } void StartSql::fillLanguage(QComboBox *combo, QString table, QString field) { combo->clear(); QSqlQuery query; if (!query.exec("SELECT " + table + "." + field + "_key, " "" + table + "." + field + "_label " "FROM " + table + " " "GROUP BY " + table + "." + field + "_id;")) { return; } int counter = 0; while (query.next()) { combo->insertItem(counter, query.value(1).toString(), QVariant(query.value(0).toString())); counter++; } } tipp10-2.1.0/sql/startsql.h000066400000000000000000000066201274324046000154620ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the StartSql class ** File name: startsql.h ** ****************************************************************/ #ifndef STARTSQL_H #define STARTSQL_H #include #include #include #include #include #include #include #include #include //! The StartSql class fills a list widget and resets user data . /*! The StartSql class provides 3 functions. The first, fillLessonList(), is to fill a list widget with a lesson list. The other two functions, deleteUserLessonList and deleteUserChars, are to reset user data tables. @author Tom Thielicke, s712715 @version 0.0.2 @date 27.06.2006 */ class StartSql { public: //! Constructor is empty. StartSql(); //! Converts an unicode char into layout values of a key. /*! This function fills a list widget with items of the table "lesson_list". If field "user_lesson_lesson" is bigger than 1 icon "lesson_done_multiple.png" is shown, otherwise icon "lesson_done_none.png" is shown. @param listLesson QListWidget which is filled @return bool Operation successful true/false @see opSystem */ int fillLessonList(QListWidget *listLesson, QList *arrayTraining, QString languageLesson); int fillOpenList(QListWidget *listOpen, QList *arrayOpen, QString themeId, QString languageLesson); int fillOwnList(QListWidget *listOwn, QList *arrayOwn); int fillThemes(QComboBox *comboTheme, QList *arrayThemes, QString languageLesson, QString textAll); void fillLanguage(QComboBox *combo, QString table, QString field); //! Deletes the complete content of table "user_lesson_list". bool deleteUserLessonList(); //! Deletes the complete content of table "user_lesson_list". bool deleteUserChars(); //! Deletes the complete content of table "user_lesson_list". bool deleteOwnLesson(QString lessonnumber); //! Updates the complete content of table "user_lesson_list". bool updateOwnLesson(QString lessonnumber, QString lessonname, QString description, QStringList content, int unit); bool getOwnLesson(QString lessonnumber, QLineEdit *lineLessonName, QLineEdit *lineLessonDescription, QTextEdit *lineLessonContent, QRadioButton *radioUnitSentence, QRadioButton *radioUnitWord); bool ownLessonExist(QString lessonname); bool analyzeOwnLessons(); bool analyzeLessons(QString lessonType); private: QString trim(QString s); }; #endif // STARTSQL_H tipp10-2.1.0/sql/trainingsql.cpp000066400000000000000000000362061274324046000164760ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the TrainingSql class ** File name: trainingsql.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include #include "trainingsql.h" #include "def/defines.h" // Konstruktor TrainingSql::TrainingSql(QString replace, QString regexp, QString layout) { setSynchron(SYNCHRON_DB_WHILE_TRAINING); queryCounter = 0; replaceSetting = replace; if (replaceSetting == "NULL") { replaceSetting = getKeyboardLayoutReplaceRoutine(layout); } regexpSetting = regexp; if (regexpSetting == "NULL") { regexpSetting = getKeyboardLayoutRegexpRoutine(layout); } } TrainingSql::~TrainingSql() { setSynchron(true); } int TrainingSql::getLessonUnit(int lesson, int type) { QSqlQuery query; int lessonUnit; QString tableName; QString sqlString; switch (type) { case 0: tableName = "lesson"; break; case 1: tableName = "open"; break; case 2: tableName = "own"; break; } sqlString = "SELECT " + tableName + "_list." + tableName + "_id, " + tableName + "_list." + tableName + "_unit FROM " + tableName + "_list WHERE " + tableName + "_list." + tableName + "_id = " + QString::number(lesson) + ";"; // Standard query to get the first lesson if (!query.exec(sqlString)) { return 0; } if (!query.first()) { return 0; } lessonUnit = query.value(1).toInt(); return lessonUnit; } void TrainingSql::setSynchron(bool synchron) { QSqlQuery query; QString queryString; if (synchron) { queryString = "PRAGMA synchronous=FULL;"; } else { queryString = "PRAGMA synchronous=OFF;"; } query.exec(queryString); } bool TrainingSql::updateUsertable(QChar unicodechar, QString columnname) { QSqlQuery query; //int sqlNum = 0; // First a simple select statement to check whether the unicode exists // already in table /*if (!query.exec("SELECT COUNT(uerrorunicode) FROM usererrors WHERE " "uerrorunicode = " + QString::number(unicodechar.unicode()) + ";")) { return false; }*/ // Now check the number of rows returned // Below commented is the full code to test wheter the current database // supports the feature "size()". // At the Moment a SQLite Driver Version 3.3.4 is in use - it doesn't // support the feature "size()". So we have to go to the end of the table // to count the number of rows returned as listet below after the commented // code. // This is slow - so change it if using an other database driver which // supports the feature! /*QSqlDatabase defaultDB = QSqlDatabase::database(); //defaultDB.driver()->hasFeature(QSqlDriver::Transactions); if (defaultDB.driver()->hasFeature(QSqlDriver::QuerySize)) { sqlNum = query.size(); } else { query.last(); sqlNum = query.at() + 1; }*/ // Slow function (look at the comment above) //sqlNum = query.at() + 1; /*query.first(); if (query.value(0).toInt() == 0) { // There is no data record with the current unicode // -> insert new data record if (!query.exec("INSERT INTO usererrors VALUES(" + QString::number(unicodechar.unicode()) + ",0,0,0);")) { return false; } }*/ // Now we keep save there is already a data record with the current unicode // -> update (increment) current data record QString charToString = QString::number(unicodechar.unicode()); //query.exec("INSERT INTO usererrors VALUES(" + temp + ",0,0,0);"); query.exec("BEGIN;"); query.exec("INSERT OR IGNORE INTO user_chars VALUES(" + charToString + ",0,0,0);"); query.exec("UPDATE user_chars SET " + columnname + "=" + columnname + "+1 WHERE user_char_unicode = " + charToString + ";"); if (!query.exec("COMMIT;")) { return false; } return true; } QString TrainingSql::createLesson(int lesson, int type, int unit, bool intelligence, bool useEszett, bool useUmlaut) { QSqlQuery query; QString sqlString = ""; QString tableName = ""; QString textOutput = ""; QString textOutputSub = ""; int counterToNewLine; switch (type) { case 0: tableName = "lesson_content"; break; case 1: tableName = "open_content"; break; case 2: tableName = "own_content"; break; } sqlString = "SELECT " + tableName + ".content_id, " + tableName + ".content_text FROM " + tableName + " WHERE " + tableName + ".content_lesson = " + QString::number(lesson) + " ORDER BY " + tableName + ".content_id;"; // Standard query to get the first lesson if (!query.exec(sqlString)) { return ""; } if (intelligence) { if (!query.first()) { return ""; } if (query.isNull(0)) { return ""; } lessonsDoneList.prepend(query.value(0).toInt()); textOutput = query.value(1).toString(); textOutput = replaceRoutine(textOutput, useEszett, useUmlaut, lesson, type); } else { counterToNewLine = 0; // Without intelligence while (query.next()) { textOutputSub = query.value(1).toString(); counterToNewLine += textOutputSub.length(); if (unit == 0 || (unit == 1 && counterToNewLine > NUM_TOKEN_UNTIL_NEW_LINE)) { textOutputSub.append(QChar(TOKEN_NEW_LINE)); counterToNewLine = 0; } else { textOutputSub.append(" "); counterToNewLine++; } textOutput.append(replaceRoutine(textOutputSub, useEszett, useUmlaut, lesson, type)); } } // return new lesson return textOutput; } QString TrainingSql::updateLesson(int lesson, int type, bool intelligence, bool useEszett, bool useUmlaut) { QSqlQuery query; QString errorUnicodeMaxFirst = ""; QString errorUnicodeMaxSecond = ""; QString errorUnicodeMaxThird = ""; QString errorUnicodeMaxFourth = ""; QString sqlString = ""; bool errorsExist = false; QString tableName = ""; QString analysisName = ""; QString textOutput = ""; QString textOutputSub = ""; queryCounter++; switch (type) { case 0: tableName = "lesson_content"; analysisName = "lesson_analysis"; break; case 1: tableName = "open_content"; analysisName = "open_analysis"; break; case 2: tableName = "own_content"; analysisName = "own_analysis"; break; } if (intelligence) { // Check if user errors exist and take the unicode with the // highest error ratio if (query.exec("SELECT user_char_unicode, (user_char_target_errornum * " "100) / user_char_occur_num AS user_char_weighted " "FROM user_chars " "WHERE user_char_unicode > 31 AND user_char_unicode < 255 " "ORDER BY user_char_weighted DESC;")) { if (query.first()) { errorsExist = true; errorUnicodeMaxFirst = query.value(0).toString(); if (query.next()) { errorUnicodeMaxSecond = query.value(0).toString(); if (query.next()) { errorUnicodeMaxThird = query.value(0).toString(); if (query.next()) { errorUnicodeMaxFourth = query.value(0).toString(); } } } } } else { // SQL exec error return ""; } sqlString = "SELECT " + tableName + ".content_id, " + tableName + ".content_text FROM " + tableName; if (errorsExist && (queryCounter % NUM_INTELLIGENT_QUERYS) != 0) { // User error exists // -> create lesson SQL string sorted by errorUnicodeMax sqlString.append(" LEFT JOIN " + analysisName + " ON " + tableName + ".content_id = " + analysisName + ".analysis_content AND "); if ((lesson % 100) != LAST_LESSON || type != 0) { sqlString.append(tableName + ".content_lesson = " + QString::number(lesson)); } else { // Last training lesson over all previous lessons sqlString.append("(" + tableName + ".content_lesson % 100) >= " + QString::number(BORDER_LESSON_IS_SENTENCE) + " AND (" + tableName + ".content_lesson % 100) <= " + QString::number(LAST_LESSON)); } sqlString.append(" AND (" + tableName + ".content_id % 1000) != 1 " "GROUP BY " + tableName + ".content_id"); if (errorUnicodeMaxFirst != "") { sqlString.append(" ORDER BY analysis_char_" + errorUnicodeMaxFirst + " DESC"); if (errorUnicodeMaxSecond != "") { sqlString.append(", analysis_char_" + errorUnicodeMaxSecond + " DESC"); } if (errorUnicodeMaxThird != "") { sqlString.append(", analysis_char_" + errorUnicodeMaxThird + " DESC"); } if (errorUnicodeMaxFourth != "") { sqlString.append(", analysis_char_" + errorUnicodeMaxFourth + " DESC"); } } sqlString.append(", Random();"); } else { // No user error exists // -> create standard lesson SQL string sorted by id sqlString.append(" WHERE"); sqlString.append(" (" + tableName + ".content_id % 1000) != 0"); if ((lesson % 100) != LAST_LESSON || type != 0) { sqlString.append(" AND " + tableName + ".content_lesson = " + QString::number(lesson)); } else { // Last training lesson over all previous lessons sqlString.append(" AND (" + tableName + ".content_lesson % 100) >= " + QString::number(BORDER_LESSON_IS_SENTENCE) + " AND (" + tableName + ".content_lesson % 100) <= " + QString::number(LAST_LESSON)); } sqlString.append(" ORDER BY Random();"); } //qDebug() << sqlString; // Execute SQL string created above if (query.exec(sqlString)) { // Find a lesson not occurs last time while (query.next()) { if (!lessonsDoneList.contains(query.value(0).toInt())) { // New unused lesson found // -> append to lessonsDoneList lessonsDoneList.prepend(query.value(0).toInt()); // Check if lessonsDoneList exceeds its maximum if (lessonsDoneList.size() > NUM_TEXT_UNTIL_REPEAT) { // lessonsDoneList exceeded -> remove last item lessonsDoneList.removeLast(); } textOutput = query.value(1).toString(); // return new lesson return replaceRoutine(textOutput, useEszett, useUmlaut, lesson, type); } } } else { // SQL exec error return ""; } // No unused lesson found // -> delete all items expect the first of lessonsDoneList while (lessonsDoneList.size() > 1) { lessonsDoneList.removeLast(); } return updateLesson(lesson, type, intelligence, useEszett, useUmlaut); } else { // Without intelligence sqlString = "SELECT " + tableName + ".content_id, " + tableName + ".content_text FROM " + tableName + " WHERE " + tableName + ".content_lesson = " + QString::number(lesson) + " ORDER BY " + tableName + ".content_id;"; // Standard query to get the first lesson if (!query.exec(sqlString)) { return ""; } while (query.next()) { textOutputSub = query.value(1).toString(); textOutputSub.append(QChar(TOKEN_NEW_LINE)); textOutput.append(replaceRoutine(textOutputSub, useEszett, useUmlaut, lesson, type)); } return textOutput; } } QVariant TrainingSql::saveLesson(int lesson, int timelen, int tokenlen, int charnum, int errornum, QDateTime timestamp, int type, QString name) { QSqlQuery query; QVariant lastRowId; QString lessonName; lessonName = name; if (!query.exec("INSERT INTO user_lesson_list VALUES(NULL," + QString::number(lesson) + "," + QString::number(timelen) + "," + QString::number(tokenlen) + "," + QString::number(charnum) + "," + QString::number(errornum) + ", '" + timestamp.toString("yyyyMMddhhmmss") + "', " + QString::number(type) + ", '" + lessonName + "');")) { return QVariant::Invalid; } lastRowId = query.lastInsertId(); return lastRowId; } QString TrainingSql::replaceRoutine(QString content, bool useEszett, bool useUmlaut, int lesson, int type) { // Tab char (an arrow) content.replace(QChar(0x9), QChar(TOKEN_TAB), Qt::CaseSensitive); // Eszett /*if (!useEszett) { content.replace(QChar(0x00df), "ss", Qt::CaseSensitive); } // Umlaut if (!useUmlaut) { content.replace(QChar(0x00df), "ss", Qt::CaseSensitive); content.replace(QChar(0x00e4), "ae", Qt::CaseSensitive); content.replace(QChar(0x00f6), "oe", Qt::CaseSensitive); content.replace(QChar(0x00fc), "ue", Qt::CaseSensitive); content.replace(QChar(0x00c4), "Ae", Qt::CaseSensitive); content.replace(QChar(0x00d6), "Oe", Qt::CaseSensitive); content.replace(QChar(0x00dc), "Ue", Qt::CaseSensitive); content.replace(QChar(0x20ac), "Eur", Qt::CaseSensitive); content.replace(QChar(0x00a7), "Par.", Qt::CaseSensitive); if ((lesson % 100) > LAST_LESSON && type == 0) { content.replace(QChar(0x002c), ".", Qt::CaseSensitive); } }*/ if (!useUmlaut) { if ((lesson % 100) > LAST_LESSON && type == 0) { content.replace(QChar(0x002c), ".", Qt::CaseSensitive); } } if (replaceSetting != "") { QStringList replaceList = replaceSetting.split(",", QString::SkipEmptyParts); QStringList searchReplace; for (int i = 0; i < replaceList.size(); ++i) { searchReplace = replaceList.at(i).split("=", QString::SkipEmptyParts); if (searchReplace.size() >= 2) { content.replace(searchReplace.at(0), searchReplace.at(1), Qt::CaseSensitive); } } } if (regexpSetting.left(2) == "[^") { regexpSetting = regexpSetting.left(2) + QChar(TOKEN_NEW_LINE) + QChar(TOKEN_TAB) + regexpSetting.mid(2); content.replace(QRegExp(regexpSetting), ""); } return content; } QString TrainingSql::getKeyboardLayoutReplaceRoutine(QString layout) { QSqlQuery query; QString replaceRoutine = ""; if (!query.exec("SELECT layout_replace " "FROM language_layouts " "WHERE layout_key = '" + layout + "';")) { return ""; } if (query.first()) { replaceRoutine = query.value(0).toString(); } return replaceRoutine; } QString TrainingSql::getKeyboardLayoutRegexpRoutine(QString layout) { QSqlQuery query; QString regexpRoutine = ""; if (!query.exec("SELECT layout_regexp " "FROM language_layouts " "WHERE layout_key = '" + layout + "';")) { return ""; } if (query.first()) { regexpRoutine = query.value(0).toString(); } return regexpRoutine; } tipp10-2.1.0/sql/trainingsql.h000066400000000000000000000075601274324046000161440ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the TrainingSql class ** File name: trainingsql.h ** ****************************************************************/ #ifndef TRAININGSQL_H #define TRAININGSQL_H #include #include #include //! The TrainingSql class provides lesson handling over database. /*! The TickerBoard class is an database interface for handling lessons while training. It can update the user tables and handles the lesson text by creating or updating it. @author Tom Thielicke, s712715 @version 0.0.6 @date 27.06.2006 */ class TrainingSql { public: //! Constructor, sets the synchron value of the database. TrainingSql(QString replace = "", QString regexp = "", QString layout = ""); //! Constructor, sets the database to synchron. ~TrainingSql(); int getLessonUnit(int lesson, int type); //! Increments the counter of the given char and column. /*! @param unicodechar The char which value is incremented @param columnname The column name which value is incremented @return bool Operation successful true/false */ bool updateUsertable(QChar unicodechar, QString columnname); //! Creates the first text of the given lesson number. /*! @param lesson Lesson number @param type Lesson type (0=Training, 1=Open, 2=Own) @param intelligence Use intelligence bool @param useEszett Use Eszett bool @return QString The lesson text @see lessonsDoneList */ QString createLesson(int lesson, int type, int unit, bool intelligence, bool useEszett, bool useUmlaut); //! Creates a new text of the given lesson number. /*! @param lesson Lesson number @param type Lesson type (0=Training, 1=Open, 2=Own) @param intelligence Use intelligence bool @param useEszett Use Eszett bool @return QString The lesson text @see lessonsDoneList */ QString updateLesson(int lesson, int type, bool intelligence, bool useEszett, bool useUmlaut); //! Saves lesson results of the user. /*! @param lesson Lesson number @param timelen Time length of lesson @param tokenlen Token length of lesson @param charnum Character number of lesson @param errornum Type error number of lesson @param timestamp Time stmp of lesson @return QVariant The row id that was insert */ QVariant saveLesson(int lesson, int timelen, int tokenlen, int charnum, int errornum, QDateTime timestamp, int type, QString name); //! Replaces varios chars in the text. QString replaceRoutine(QString content, bool useEszett, bool useUmlaut, int lesson, int type); QString getKeyboardLayoutReplaceRoutine(QString layout); QString getKeyboardLayoutRegexpRoutine(QString layout); private: //! Sets the synchron value of the database. /*! @param synchron Synchron true or false */ void setSynchron(bool synchron); //! Queue of text that was updated. QList lessonsDoneList; int queryCounter; QString replaceSetting; QString regexpSetting; }; #endif // TRAININGSQL_H tipp10-2.1.0/tipp10.desktop000066400000000000000000000002751274324046000153450ustar00rootroot00000000000000[Desktop Entry] Encoding=UTF-8 Name=TIPP10 Comment=Touch Typing Tutor Comment[de]=10-Finger-Schreibtrainer Exec=tipp10 Icon=tipp10.png Terminal=false Type=Application Categories=Education; tipp10-2.1.0/tipp10.png000066400000000000000000000023471274324046000144620ustar00rootroot00000000000000PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxWMoE})|p 8 NHqC.pWp |rEI@"@ "Y'&MƻN3==#zz{_իWU a^<RP)1w7u%]~٩nIA!T{[nw_}@=eJ z^zn^cKzzP3 pԬ&5@{$ h_+N7{ Ts?/砕9?oKg@gOK h&4xY=`"9^gK<ufA M-Bب:z к10z ӾP> <~gt>o)о&BzR?hX{{A'0pG@tdd6XSo&6ؘ0i[qmm vgAQg6_ <ӋDo3>f!!jG1hL<dc< e0ol8ʢM1PsL"u s{|t$@a)1|/*dv6XЧօ  \A=fvT0 τ3N7A<$ߓ!<N|#_vsmIENDB`tipp10-2.1.0/tipp10.pro000066400000000000000000000074231274324046000144760ustar00rootroot00000000000000###################################################################### # Project file for TIPP 10 # Copyright (c) 2006-2011, Tom Thielicke IT Solutions ###################################################################### TEMPLATE = app # MAC-Version: #ICON = img/tipp10.icns #QMAKE_MAC_SDK = /Developer/SDKs/MacOSX10.5.sdk #CONFIG += x86 ppc TRANSLATIONS = languages/tipp10_en.ts \ languages/tipp10_de.ts QMAKE_LFLAGS -= -mthreads DEPENDPATH += . INCLUDEPATH += . CONFIG += qt QT += sql QT += network RC_FILE += tipp10.rc RESOURCES += tipp10.qrc HEADERS += def/defines.h \ def/errordefines.h \ widget/mainwindow.h \ widget/startwidget.h \ widget/illustrationdialog.h \ widget/illustrationimage.h \ widget/trainingwidget.h \ widget/tickerboard.h \ widget/keyboard.h \ widget/numpad.h \ widget/statusbar.h \ widget/evaluationwidget.h \ widget/progressionwidget.h \ widget/fingerwidget.h \ widget/settingsdialog.h \ widget/settingspages.h \ widget/lessondialog.h \ widget/regexpdialog.h \ widget/downloaddialog.h \ widget/lessonprintdialog.h \ widget/lessonresult.h \ widget/updatedialog.h \ widget/helpbrowser.h \ widget/companylogo.h \ widget/errormessage.h \ widget/licensedialog.h \ widget/txtmessagedialog.h \ widget/checkversion.h \ sql/connection.h \ sql/lessontablesql.h \ sql/chartablesql.h \ sql/trainingsql.h \ sql/keyboardsql.h \ sql/startsql.h \ games/abcrainwidget.h \ games/charball.h SOURCES += main.cpp \ widget/mainwindow.cpp \ widget/startwidget.cpp \ widget/illustrationdialog.cpp \ widget/illustrationimage.cpp \ widget/trainingwidget.cpp \ widget/tickerboard.cpp \ widget/keyboard.cpp \ widget/numpad.cpp \ widget/statusbar.cpp \ widget/evaluationwidget.cpp \ widget/progressionwidget.cpp \ widget/fingerwidget.cpp \ widget/settingsdialog.cpp \ widget/settingspages.cpp \ widget/lessondialog.cpp \ widget/regexpdialog.cpp \ widget/downloaddialog.cpp \ widget/lessonprintdialog.cpp \ widget/lessonresult.cpp \ widget/updatedialog.cpp \ widget/helpbrowser.cpp \ widget/companylogo.cpp \ widget/errormessage.cpp \ widget/licensedialog.cpp \ widget/txtmessagedialog.cpp \ widget/checkversion.cpp \ sql/lessontablesql.cpp \ sql/chartablesql.cpp \ sql/trainingsql.cpp \ sql/keyboardsql.cpp \ sql/startsql.cpp \ games/abcrainwidget.cpp \ games/charball.cpp tipp10-2.1.0/tipp10.qrc000066400000000000000000000124371274324046000144640ustar00rootroot00000000000000 img/key0_0.png img/key0_1.png img/key0_2.png img/key0_3.png img/key0_4.png img/key0_5.png img/key0_6.png img/key0_7.png img/key0_8.png img/key0_9.png img/key1_0.png img/key1_1.png img/key1_2.png img/key1_3.png img/key1_4.png img/key1_5.png img/key1_6.png img/key1_7.png img/key1_8.png img/key1_9.png img/key2_0.png img/key2_1.png img/key2_2.png img/key2_3.png img/key2_4.png img/key2_5.png img/key2_6.png img/key2_7.png img/key2_8.png img/key2_9.png img/key3_0.png img/key3_1.png img/key3_2.png img/key3_3.png img/key3_4.png img/key3_5.png img/key3_6.png img/key3_7.png img/key3_8.png img/key3_9.png img/key4_0.png img/key4_1.png img/key4_2.png img/key4_3.png img/key4_4.png img/key4_5.png img/key4_6.png img/key4_7.png img/key4_8.png img/key4_9.png img/key0.png img/key1.png img/key2.png img/key3.png img/key4.png img/keyboardbg.png img/numpadbg.png img/keyboard_border.png img/de_qwertz_win.png img/de_qwertz_mac.png img/ch_qwertz_sg_win.png img/ch_qwertz_sg_mac.png img/ch_qwertz_sf_win.png img/ch_qwertz_sf_mac.png img/us_qwerty_win.png img/us_qwerty_mac.png img/de_neo_v1_win.png img/de_neo_v2_win.png img/de_dvorak_v1_win.png img/de_dvorak_v2_win.png img/de_ristome_win.png img/de_numpad_win.png img/de_numpad_mac.png img/ch_numpad_win.png img/ch_numpad_mac.png img/us_numpad_win.png img/us_numpad_mac.png img/statusbg.png img/tickerbg.png img/menu_settings.png img/menu_update.png img/menu_help.png img/menu_evaluation.png img/menu_new.png img/menu_import.png img/menu_export.png img/menu_download.png img/menu_edit.png img/menu_del.png img/menu_website.png img/lesson_done_one.png img/lesson_done_none.png img/lesson_done_two.png img/lesson_done_three.png img/lesson_done_multiple.png img/help_arrow_left.png img/help_arrow_right.png img/help_home.png img/tab_training.png img/tab_open.png img/tab_own.png img/config_1.png img/config_2.png img/config_3.png img/config_4.png img/menu_game.png games/img/pattern_0.png games/img/pattern_1.png games/img/pattern_2.png games/img/pattern_3.png games/img/pattern_4.png games/img/pattern_5.png games/img/pattern_6.png games/img/pattern_7.png games/img/pattern_8.png games/img/pattern_9.png games/img/pattern_10.png games/img/pattern_11.png games/img/pattern_12.png games/img/pattern_13.png games/img/pattern_14.png games/img/pattern_15.png languages/qt_de.qm languages/tipp10_en.qm languages/tipp10_de.qm img/de_illustration.png img/tt_logo.png img/en_illustration.png img/help_print.png img/logo_white.png img/logo_orange.png img/icon.png img/menu_donate.png update/sql.tipp10v210.utf tipp10-2.1.0/tipp10.rc000066400000000000000000000001001274324046000142630ustar00rootroot00000000000000IDI_ICON1 ICON DISCARDABLE "img/icon.ico" tipp10-2.1.0/update/000077500000000000000000000000001274324046000141135ustar00rootroot00000000000000tipp10-2.1.0/update/sql.tipp10v210.utf000066400000000000000000037446201274324046000171770ustar00rootroot00000000000000BEGIN TRANSACTION; // **************************************************************************** // DB Version // **************************************************************************** DROP TABLE db_version; CREATE TABLE db_version (version INTEGER, soft_version TEXT); INSERT INTO db_version VALUES(33,'2.1.0'); // **************************************************************************** // Remove old table defines // **************************************************************************** DROP TABLE character_list_mac; DROP INDEX character_list_mac_index; DROP TABLE character_list_win; DROP INDEX character_list_win_index; DROP TABLE character_list_ristome; DROP INDEX character_list_ristome_index; DROP TABLE character_list_dvorak; DROP INDEX character_list_dvorak_index; DROP TABLE character_list_neo; DROP INDEX character_list_neo_index; DROP TABLE character_list_de_mac; DROP INDEX character_list_de_mac_index; DROP TABLE character_list_de_win; DROP INDEX character_list_de_win_index; DROP TABLE character_list_ch_win_sg; DROP INDEX character_list_ch_win_sg_index; DROP TABLE character_list_ch_mac_sg; DROP INDEX character_list_ch_mac_sg_index; DROP TABLE character_list_ch_win_sf; DROP INDEX character_list_ch_win_sf_index; DROP TABLE character_list_ch_mac_sf; DROP INDEX character_list_ch_mac_sf_index; DROP TABLE character_list_us_win; DROP INDEX character_list_us_win_index; DROP TABLE character_list_us_mac; DROP INDEX character_list_us_mac_index; DROP TABLE character_list_neo_2; DROP INDEX character_list_neo_2_index; DROP TABLE key_layouts_us; DROP INDEX key_layouts_us_index; DROP TABLE key_layouts; DROP INDEX key_layouts_index; DROP TABLE num_layouts_win; DROP INDEX num_layouts_win_index; DROP TABLE num_layouts_mac; DROP INDEX num_layouts_mac_index; DROP TABLE numpad_list_win; DROP INDEX numpad_list_win_index; DROP TABLE numpad_list_mac; DROP INDEX numpad_list_mac_index; DROP TABLE lesson_themes; DROP INDEX lesson_themes_index; // **************************************************************************** // Languages (user interface) // **************************************************************************** DROP TABLE language_interfaces; CREATE TABLE language_interfaces (interface_id INTEGER PRIMARY KEY, interface_key TEXT, interface_label TEXT); INSERT INTO language_interfaces VALUES(1, 'de', 'Deutsch'); INSERT INTO language_interfaces VALUES(2, 'en', 'English'); DROP INDEX language_interfaces_index; CREATE INDEX language_interfaces_index ON language_interfaces (interface_id); // **************************************************************************** // Keyboard Layouts // **************************************************************************** DROP TABLE language_layouts; CREATE TABLE language_layouts (layout_id INTEGER PRIMARY KEY, layout_key TEXT, layout_label TEXT, layout_regexp TEXT, layout_replace TEXT); INSERT INTO language_layouts VALUES(1, 'de_qwertz_win', 'Deutschland | QWERTZ | Windows', '[^ A-Za-z0-9^!"$%&/{([)\]=}?\\`+*~#''\-_.:,;<>|@ ]*', ''); INSERT INTO language_layouts VALUES(2, 'de_qwertz_mac', 'Deutschland | QWERTZ | Macintosh', '[^ A-Za-z0-9^!"$%&/{([)\]=}?\\`+*~#''\-_.:,;<>|@ ]*', ''); INSERT INTO language_layouts VALUES(3, 'de_neo_v1_win', 'Deutschland | NEO Version 1', '[^ A-Za-z0-9^!"$%&/{([)\]=}?\\`+*~#''\-_.:,;<>|@ ]*', ''); INSERT INTO language_layouts VALUES(4, 'de_neo_v2_win', 'Deutschland | NEO Version 2', '[^ A-Za-z0-9^!"$%&/{([)\]=}?\\`+*~#''\-_.:,;<>|@ ]*', ''); INSERT INTO language_layouts VALUES(5, 'de_dvorak_v1_win', 'Deutschland | DVORAK Type I', '[^ A-Za-z0-9^!"$%&/{([)\]=}?\\`+*~#''\-_.:,;<>|@ ]*', ''); INSERT INTO language_layouts VALUES(6, 'de_ristome_win', 'Deutschland | RISTOME', '[^ A-Za-z0-9^!"$%&/{([)\]=}?\\`+*~#''\-_.:,;<>|@ ]*', ''); INSERT INTO language_layouts VALUES(7, 'ch_qwertz_sg_win', 'Schweiz | QWERTZ | SG | Windows', '[^ A-Za-z0-9^!"$%&/{([)\]=}?\\`+*~#''\-_.:,;<>|@ ]*', '=Ae,=Oe,=Ue,=ss'); INSERT INTO language_layouts VALUES(8, 'ch_qwertz_sg_mac', 'Schweiz | QWERTZ | SG | Macintosh', '[^ A-Za-z0-9^!"$%&/{([)\]=}?\\`+*~#''\-_.:,;<>|@ ]*', '=Ae,=Oe,=Ue,=ss'); INSERT INTO language_layouts VALUES(9, 'ch_qwertz_sf_win', 'Schweiz | QWERTZ | SF | Windows', '[^ A-Za-z0-9^!"$%&/{([)\]=}?\\`+*~#''\-_.:,;<>|@ ]*', '=Ae,=Oe,=Ue,=ss'); INSERT INTO language_layouts VALUES(10, 'ch_qwertz_sf_mac', 'Schweiz | QWERTZ | SF | Macintosh', '[^ A-Za-z0-9^!"$%&/{([)\]=}?\\`+*~#''\-_.:,;<>|@ ]*', '=Ae,=Oe,=Ue,=ss'); INSERT INTO language_layouts VALUES(11, 'us_qwerty_win', 'USA | QWERTY | Windows', '[^ A-Za-z0-9^!"$%&/{([)\]=}?\\`+*~#''\-_.:,;<>|@]*', '=ae,=oe,=ue,=Ae,=Oe,=Ue,=ss, =Eur,=paragraph,=degree'); INSERT INTO language_layouts VALUES(12, 'us_qwerty_mac', 'USA | QWERTY | Macintosh', '[^ A-Za-z0-9^!"$%&/{([)\]=}?\\`+*~#''\-_.:,;<>|@]*', '=ae,=oe,=ue,=Ae,=Oe,=Ue,=ss, =Eur,=paragraph,=degree'); DROP INDEX language_layouts_index; CREATE INDEX language_layouts_index ON language_layouts (layout_id); // **************************************************************************** // Lessons (per keyboard layout) // **************************************************************************** DROP TABLE language_lessons; CREATE TABLE language_lessons (lesson_id INTEGER PRIMARY KEY, lesson_key TEXT, lesson_label TEXT); INSERT INTO language_lessons VALUES(1, 'de_de_qwertz', 'Deutsch | QWERTZ'); INSERT INTO language_lessons VALUES(2, 'de_de_neo_v2', 'Deutsch | NEO Version 2'); INSERT INTO language_lessons VALUES(3, 'en_us_qwerty', 'English | QWERTY'); DROP INDEX language_lessons_index; CREATE INDEX language_lessons_index ON language_lessons (lesson_id); // **************************************************************************** // Key Positions // Incremental id, Unicode Decimal, Key Id of the Keyboard Grid, // Two Modifier Key Ids, Keyboard Layout: [country]_[layoutvars]_[win/mac] // **************************************************************************** DROP TABLE keyboard_layouts; CREATE TABLE keyboard_layouts (id INTEGER PRIMARY KEY, unicode INTEGER, grid INTEGER, modifier1 INTEGER, modifier2 INTEGER, layout TEXT); INSERT INTO keyboard_layouts VALUES(1000,32,57,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1001,97,31,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1002,98,20,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1003,99,19,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1004,100,22,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1005,101,35,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1006,102,38,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1007,103,45,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1008,104,36,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1009,105,33,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1010,106,24,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1011,107,47,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1012,108,30,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1013,109,46,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1014,110,32,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1015,111,18,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1016,112,16,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1017,113,15,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1018,114,17,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1019,115,37,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1020,116,21,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1021,117,34,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1022,118,44,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1023,119,23,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1024,120,43,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1025,121,39,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1026,122,29,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1027,65,31,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1028,66,20,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1029,67,19,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1030,68,22,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1031,69,35,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1032,70,38,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1033,71,45,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1034,72,36,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1035,73,33,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1036,74,24,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1037,75,47,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1038,76,30,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1039,77,46,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1040,78,32,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1041,79,18,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1042,80,16,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1043,81,15,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1044,82,17,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1045,83,37,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1046,84,21,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1047,85,34,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1048,86,44,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1049,87,23,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1050,88,43,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1051,89,39,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1052,90,29,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1053,252,49,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1054,228,48,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1055,246,25,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1056,220,49,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1057,196,48,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1058,214,25,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1059,44,51,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1060,59,51,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1061,46,52,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1062,58,52,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1063,223,50,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1064,63,50,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1065,45,11,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1066,95,11,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1067,49,1,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1068,33,1,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1069,50,2,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1070,34,2,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1071,51,3,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1072,167,3,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1073,52,4,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1074,36,4,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1075,53,5,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1076,37,5,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1077,54,6,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1078,38,6,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1079,55,7,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1080,47,7,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1081,56,8,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1082,40,8,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1083,57,9,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1084,41,9,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1085,48,10,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1086,61,10,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1087,180,12,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1088,96,12,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1089,43,26,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1090,42,26,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1091,35,40,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1092,39,40,41,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1093,94,0,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1094,176,0,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1095,60,42,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1096,62,42,53,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1097,178,2,58,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1098,179,3,58,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1099,123,7,58,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1100,91,8,58,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1101,93,9,58,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1102,125,10,58,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1103,92,50,58,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1104,126,26,58,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1105,124,42,58,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1106,64,15,58,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1107,8364,35,58,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1108,181,46,58,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1109,182,27,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1110,185,13,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(1111,8594,14,0,0,'de_ristome_win'); INSERT INTO keyboard_layouts VALUES(2000,32,57,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2001,97,29,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2002,98,48,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2003,99,22,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2004,100,34,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2005,101,31,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2006,102,20,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2007,103,21,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2008,104,35,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2009,105,33,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2010,106,45,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2011,107,46,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2012,108,24,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2013,109,49,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2014,110,37,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2015,111,30,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2016,112,18,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2017,113,44,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2018,114,23,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2019,115,38,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2020,116,36,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2021,117,32,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2022,118,51,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2023,119,50,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2024,120,47,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2025,121,19,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2026,122,52,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2027,65,29,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2028,66,48,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2029,67,22,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2030,68,34,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2031,69,31,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2032,70,20,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2033,71,21,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2034,72,35,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2035,73,33,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2036,74,45,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2037,75,46,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2038,76,24,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2039,77,49,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2040,78,37,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2041,79,30,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2042,80,18,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2043,81,44,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2044,82,23,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2045,83,38,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2046,84,36,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2047,85,32,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2048,86,51,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2049,87,50,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2050,88,47,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2051,89,19,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2052,90,52,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2053,252,15,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2054,228,42,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2055,246,43,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2056,220,15,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2057,196,42,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2058,214,43,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2059,44,16,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2060,59,16,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2061,46,17,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2062,58,17,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2063,223,25,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2064,63,25,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2065,45,39,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2066,95,39,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2067,49,1,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2068,33,1,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2069,50,2,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2070,34,2,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2071,51,3,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2072,167,3,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2073,52,4,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2074,36,4,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2075,53,5,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2076,37,5,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2077,54,6,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2078,38,6,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2079,55,7,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2080,47,7,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2081,56,8,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2082,40,8,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2083,57,9,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2084,41,9,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2085,48,10,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2086,61,10,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2087,180,12,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2088,96,12,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2089,43,26,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2090,42,26,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2091,35,40,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2092,39,40,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2093,94,0,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2094,176,0,53,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2095,60,11,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2096,62,11,41,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2097,178,2,58,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2098,179,3,58,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2099,123,7,58,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2100,91,8,58,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2101,93,9,58,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2102,125,10,58,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2103,92,25,58,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2104,126,26,58,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2105,124,11,58,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2106,64,44,58,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2107,8364,31,58,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2108,181,49,58,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2109,182,27,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2110,185,13,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(2111,8594,14,0,0,'de_dvorak_v1_win'); INSERT INTO keyboard_layouts VALUES(3000,32,57,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3001,97,31,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3002,98,48,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3003,99,18,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3004,100,38,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3005,101,32,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3006,102,23,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3007,103,22,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3008,104,21,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3009,105,30,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3010,106,24,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3011,107,20,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3012,108,17,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3013,109,49,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3014,110,35,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3015,111,33,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3016,112,46,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3017,113,15,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3018,114,36,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3019,115,34,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3020,116,37,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3021,117,29,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3022,118,16,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3023,119,19,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3024,120,52,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3025,121,39,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3026,122,47,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3027,65,31,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3028,66,48,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3029,67,18,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3030,68,38,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3031,69,32,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3032,70,23,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3033,71,22,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3034,72,21,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3035,73,30,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3036,74,24,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3037,75,20,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3038,76,17,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3039,77,49,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3040,78,35,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3041,79,33,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3042,80,46,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3043,81,15,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3044,82,36,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3045,83,34,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3046,84,37,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3047,85,29,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3048,86,16,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3049,87,19,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3050,88,52,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3051,89,39,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3052,90,47,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3053,252,44,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3054,228,45,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3055,246,43,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3056,220,44,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3057,196,45,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3058,214,43,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3059,44,50,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3060,59,50,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3061,46,51,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3062,58,51,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3063,223,25,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3064,63,25,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3065,45,11,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3066,95,11,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3067,49,1,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3068,33,1,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3069,50,2,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3070,34,2,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3071,51,3,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3072,167,3,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3073,52,4,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3074,36,4,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3075,53,5,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3076,37,5,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3077,54,6,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3078,38,6,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3079,55,7,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3080,47,7,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3081,56,8,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3082,40,8,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3083,57,9,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3084,41,9,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3085,48,10,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3086,61,10,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3087,180,12,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3088,96,12,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3089,43,26,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3090,42,26,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3091,35,40,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3092,39,40,41,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3093,94,0,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3094,176,0,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3095,60,42,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3096,62,42,53,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3097,178,2,58,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3098,179,3,58,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3099,123,7,58,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3100,91,8,58,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3101,93,9,58,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3102,125,10,58,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3103,92,25,58,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3104,126,26,58,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3105,124,42,58,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3106,64,15,58,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3107,8364,32,58,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3108,181,49,58,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3109,182,27,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3110,185,13,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(3111,8594,14,0,0,'de_neo_v1_win'); INSERT INTO keyboard_layouts VALUES(4000,32,57,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4001,97,29,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4002,98,47,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4003,99,45,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4004,100,31,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4005,101,17,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4006,102,32,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4007,103,33,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4008,104,34,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4009,105,22,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4010,106,35,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4011,107,36,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4012,108,37,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4013,109,49,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4014,110,48,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4015,111,23,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4016,112,24,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4017,113,15,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4018,114,18,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4019,115,30,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4020,116,19,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4021,117,21,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4022,118,46,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4023,119,16,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4024,120,44,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4025,121,43,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4026,122,20,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4027,65,29,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4028,66,47,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4029,67,45,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4030,68,31,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4031,69,17,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4032,70,32,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4033,71,33,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4034,72,34,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4035,73,22,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4036,74,35,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4037,75,36,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4038,76,37,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4039,77,49,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4040,78,48,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4041,79,23,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4042,80,24,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4043,81,15,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4044,82,18,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4045,83,30,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4046,84,19,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4047,85,21,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4048,86,46,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4049,87,16,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4050,88,44,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4051,89,43,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4052,90,20,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4053,252,25,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4054,228,39,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4055,246,38,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4056,220,25,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4057,196,39,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4058,214,38,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4059,44,50,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4060,59,50,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4061,46,51,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4062,58,51,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4063,223,11,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4064,63,11,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4065,45,52,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4066,95,52,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4067,49,1,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4068,33,1,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4069,50,2,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4070,34,2,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4071,51,3,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4072,167,3,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4073,52,4,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4074,36,4,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4075,53,5,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4076,37,5,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4077,54,6,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4078,38,6,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4079,55,7,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4080,47,7,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4081,56,8,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4082,40,8,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4083,57,9,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4084,41,9,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4085,48,10,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4086,61,10,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4087,180,12,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4088,96,12,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4089,43,26,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4090,42,26,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4091,35,40,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4092,39,40,41,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4093,94,0,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4094,176,0,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4095,60,42,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4096,62,42,53,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4097,178,2,55,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4098,179,3,55,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4099,123,8,55,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4100,91,5,55,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4101,93,6,55,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4102,125,9,55,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4103,92,7,55,41,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4104,126,48,55,57,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4105,124,42,55,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4106,64,37,55,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4107,8364,17,55,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4108,181,49,55,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4109,182,27,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4110,185,13,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(4111,8594,14,0,0,'de_qwertz_mac'); INSERT INTO keyboard_layouts VALUES(5000,32,57,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5001,97,29,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5002,98,47,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5003,99,45,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5004,100,31,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5005,101,17,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5006,102,32,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5007,103,33,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5008,104,34,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5009,105,22,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5010,106,35,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5011,107,36,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5012,108,37,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5013,109,49,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5014,110,48,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5015,111,23,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5016,112,24,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5017,113,15,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5018,114,18,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5019,115,30,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5020,116,19,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5021,117,21,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5022,118,46,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5023,119,16,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5024,120,44,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5025,121,43,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5026,122,20,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5027,65,29,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5028,66,47,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5029,67,45,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5030,68,31,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5031,69,17,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5032,70,32,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5033,71,33,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5034,72,34,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5035,73,22,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5036,74,35,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5037,75,36,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5038,76,37,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5039,77,49,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5040,78,48,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5041,79,23,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5042,80,24,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5043,81,15,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5044,82,18,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5045,83,30,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5046,84,19,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5047,85,21,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5048,86,46,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5049,87,16,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5050,88,44,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5051,89,43,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5052,90,20,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5053,252,25,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5054,228,39,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5055,246,38,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5056,220,25,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5057,196,39,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5058,214,38,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5059,44,50,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5060,59,50,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5061,46,51,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5062,58,51,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5063,223,11,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5064,63,11,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5065,45,52,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5066,95,52,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5067,49,1,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5068,33,1,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5069,50,2,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5070,34,2,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5071,51,3,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5072,167,3,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5073,52,4,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5074,36,4,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5075,53,5,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5076,37,5,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5077,54,6,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5078,38,6,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5079,55,7,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5080,47,7,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5081,56,8,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5082,40,8,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5083,57,9,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5084,41,9,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5085,48,10,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5086,61,10,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5087,180,12,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5088,96,12,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5089,43,26,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5090,42,26,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5091,35,40,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5092,39,40,41,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5093,94,0,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5094,176,0,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5095,60,42,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5096,62,42,53,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5097,178,2,58,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5098,179,3,58,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5099,123,7,54,56,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5100,91,8,54,56,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5101,93,9,54,56,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5102,125,10,54,56,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5103,92,11,54,56,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5104,126,26,54,56,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5105,124,42,58,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5106,64,15,58,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5107,8364,17,58,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5108,181,49,58,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5109,182,27,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5110,185,13,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(5111,8594,14,0,0,'de_qwertz_win'); INSERT INTO keyboard_layouts VALUES(6000,32,57,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6001,97,29,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6002,98,47,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6003,99,45,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6004,100,31,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6005,101,17,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6006,102,32,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6007,103,33,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6008,104,34,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6009,105,22,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6010,106,35,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6011,107,36,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6012,108,37,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6013,109,49,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6014,110,48,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6015,111,23,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6016,112,24,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6017,113,15,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6018,114,18,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6019,115,30,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6020,116,19,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6021,117,21,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6022,118,46,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6023,119,16,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6024,120,44,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6025,121,43,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6026,122,20,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6027,65,29,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6028,66,47,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6029,67,45,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6030,68,31,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6031,69,17,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6032,70,32,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6033,71,33,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6034,72,34,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6035,73,22,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6036,74,35,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6037,75,36,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6038,76,37,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6039,77,49,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6040,78,48,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6041,79,23,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6042,80,24,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6043,81,15,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6044,82,18,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6045,83,30,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6046,84,19,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6047,85,21,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6048,86,46,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6049,87,16,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6050,88,44,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6051,89,43,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6052,90,20,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6053,252,25,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6054,228,39,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6055,246,38,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6056,232,25,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6057,224,39,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6058,233,38,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6059,44,50,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6060,59,50,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6061,46,51,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6062,58,51,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6063,39,11,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6064,63,11,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6065,45,52,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6066,95,52,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6067,49,1,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6068,43,1,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6069,50,2,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6070,34,2,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6071,51,3,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6072,42,3,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6073,52,4,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6074,199,4,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6075,53,5,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6076,37,5,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6077,54,6,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6078,38,6,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6079,55,7,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6080,47,7,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6081,56,8,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6082,40,8,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6083,57,9,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6084,41,9,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6085,48,10,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6086,61,10,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6087,94,12,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6088,96,12,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6089,168,26,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6090,33,26,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6091,36,40,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6092,163,40,41,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6093,167,0,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6094,176,0,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6095,60,42,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6096,62,42,53,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6097,124,1,58,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6098,64,2,58,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6099,35,3,58,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6100,172,6,58,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6101,166,7,54,56,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6102,162,8,54,56,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6103,180,11,54,56,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6104,126,12,54,56,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6105,91,25,54,56,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6106,93,26,54,56,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6107,123,39,54,56,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6108,125,40,54,56,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6109,8364,17,58,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6110,92,42,58,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6111,8594,14,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6112,182,27,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(6113,185,13,0,0,'ch_qwertz_sg_win'); INSERT INTO keyboard_layouts VALUES(7000,32,57,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7001,97,29,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7002,98,47,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7003,99,45,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7004,100,31,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7005,101,17,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7006,102,32,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7007,103,33,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7008,104,34,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7009,105,22,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7010,106,35,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7011,107,36,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7012,108,37,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7013,109,49,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7014,110,48,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7015,111,23,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7016,112,24,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7017,113,15,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7018,114,18,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7019,115,30,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7020,116,19,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7021,117,21,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7022,118,46,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7023,119,16,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7024,120,44,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7025,121,43,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7026,122,20,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7027,65,29,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7028,66,47,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7029,67,45,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7030,68,31,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7031,69,17,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7032,70,32,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7033,71,33,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7034,72,34,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7035,73,22,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7036,74,35,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7037,75,36,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7038,76,37,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7039,77,49,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7040,78,48,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7041,79,23,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7042,80,24,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7043,81,15,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7044,82,18,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7045,83,30,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7046,84,19,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7047,85,21,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7048,86,46,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7049,87,16,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7050,88,44,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7051,89,43,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7052,90,20,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7053,252,25,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7054,228,39,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7055,246,38,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7056,232,25,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7057,224,39,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7058,233,38,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7059,44,50,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7060,59,50,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7061,46,51,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7062,58,51,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7063,39,11,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7064,63,11,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7065,45,52,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7066,95,52,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7067,49,1,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7068,43,1,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7069,50,2,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7070,34,2,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7071,51,3,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7072,42,3,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7073,52,4,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7074,199,4,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7075,53,5,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7076,37,5,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7077,54,6,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7078,38,6,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7079,55,7,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7080,47,7,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7081,56,8,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7082,40,8,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7083,57,9,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7084,41,9,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7085,48,10,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7086,61,10,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7087,94,12,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7088,96,12,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7089,168,26,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7090,33,26,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7091,36,40,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7092,163,40,41,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7093,167,0,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7094,176,0,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7095,60,42,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7096,62,42,53,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7097,124,1,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7098,64,33,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7099,35,3,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7100,172,6,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7101,166,7,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7102,162,8,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7103,180,11,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7104,126,12,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7105,91,25,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7106,93,26,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7107,123,39,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7108,125,40,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7109,8364,17,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7110,92,42,55,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7111,8594,14,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7112,182,27,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(7113,185,13,0,0,'ch_qwertz_sg_mac'); INSERT INTO keyboard_layouts VALUES(8000,32,57,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8001,97,29,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8002,98,47,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8003,99,45,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8004,100,31,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8005,101,17,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8006,102,32,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8007,103,33,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8008,104,34,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8009,105,22,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8010,106,35,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8011,107,36,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8012,108,37,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8013,109,49,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8014,110,48,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8015,111,23,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8016,112,24,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8017,113,15,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8018,114,18,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8019,115,30,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8020,116,19,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8021,117,21,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8022,118,46,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8023,119,16,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8024,120,44,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8025,121,43,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8026,122,20,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8027,65,29,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8028,66,47,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8029,67,45,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8030,68,31,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8031,69,17,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8032,70,32,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8033,71,33,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8034,72,34,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8035,73,22,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8036,74,35,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8037,75,36,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8038,76,37,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8039,77,49,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8040,78,48,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8041,79,23,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8042,80,24,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8043,81,15,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8044,82,18,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8045,83,30,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8046,84,19,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8047,85,21,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8048,86,46,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8049,87,16,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8050,88,44,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8051,89,43,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8052,90,20,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8053,232,25,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8054,224,39,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8055,233,38,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8056,252,25,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8057,228,39,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8058,246,38,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8059,44,50,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8060,59,50,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8061,46,51,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8062,58,51,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8063,39,11,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8064,63,11,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8065,45,52,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8066,95,52,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8067,49,1,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8068,43,1,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8069,50,2,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8070,34,2,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8071,51,3,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8072,42,3,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8073,52,4,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8074,199,4,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8075,53,5,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8076,37,5,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8077,54,6,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8078,38,6,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8079,55,7,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8080,47,7,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8081,56,8,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8082,40,8,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8083,57,9,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8084,41,9,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8085,48,10,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8086,61,10,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8087,94,12,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8088,96,12,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8089,168,26,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8090,33,26,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8091,36,40,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8092,163,40,41,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8093,167,0,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8094,176,0,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8095,60,42,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8096,62,42,53,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8097,124,1,58,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8098,64,2,58,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8099,35,3,58,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8100,172,6,58,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8101,166,7,54,56,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8102,162,8,54,56,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8103,180,11,54,56,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8104,126,12,54,560,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8105,91,25,54,56,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8106,93,26,54,56,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8107,123,39,54,56,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8108,125,40,54,56,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8109,8364,17,58,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8110,92,42,58,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8111,8594,14,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8112,182,27,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(8113,185,13,0,0,'ch_qwertz_sf_win'); INSERT INTO keyboard_layouts VALUES(9000,32,57,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9001,97,29,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9002,98,47,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9003,99,45,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9004,100,31,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9005,101,17,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9006,102,32,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9007,103,33,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9008,104,34,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9009,105,22,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9010,106,35,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9011,107,36,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9012,108,37,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9013,109,49,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9014,110,48,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9015,111,23,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9016,112,24,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9017,113,15,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9018,114,18,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9019,115,30,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9020,116,19,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9021,117,21,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9022,118,46,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9023,119,16,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9024,120,44,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9025,121,43,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9026,122,20,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9027,65,29,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9028,66,47,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9029,67,45,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9030,68,31,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9031,69,17,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9032,70,32,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9033,71,33,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9034,72,34,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9035,73,22,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9036,74,35,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9037,75,36,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9038,76,37,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9039,77,49,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9040,78,48,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9041,79,23,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9042,80,24,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9043,81,15,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9044,82,18,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9045,83,30,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9046,84,19,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9047,85,21,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9048,86,46,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9049,87,16,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9050,88,44,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9051,89,43,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9052,90,20,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9053,232,25,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9054,224,39,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9055,233,38,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9056,252,25,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9057,228,39,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9058,246,38,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9059,44,50,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9060,59,50,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9061,46,51,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9062,58,51,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9063,39,11,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9064,63,11,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9065,45,52,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9066,95,52,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9067,49,1,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9068,43,1,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9069,50,2,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9070,34,2,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9071,51,3,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9072,42,3,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9073,52,4,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9074,199,4,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9075,53,5,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9076,37,5,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9077,54,6,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9078,38,6,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9079,55,7,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9080,47,7,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9081,56,8,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9082,40,8,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9083,57,9,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9084,41,9,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9085,48,10,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9086,61,10,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9087,94,12,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9088,96,12,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9089,168,26,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9090,33,26,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9091,36,40,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9092,163,40,41,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9093,167,0,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9094,176,0,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9095,60,42,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9096,62,42,53,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9097,124,1,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9098,64,33,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9099,35,3,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9100,172,6,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9101,166,7,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9102,162,8,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9103,180,11,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9104,126,12,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9105,91,25,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9106,93,26,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9107,123,39,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9108,125,40,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9109,8364,17,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9110,92,42,55,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9111,8594,14,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9112,182,27,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(9113,185,13,0,0,'ch_qwertz_sf_mac'); INSERT INTO keyboard_layouts VALUES(10000,32,57,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10001,97,29,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10002,98,47,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10003,99,45,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10004,100,31,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10005,101,17,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10006,102,32,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10007,103,33,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10008,104,34,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10009,105,22,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10010,106,35,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10011,107,36,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10012,108,37,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10013,109,49,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10014,110,48,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10015,111,23,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10016,112,24,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10017,113,15,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10018,114,18,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10019,115,30,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10020,116,19,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10021,117,21,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10022,118,46,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10023,119,16,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10024,120,44,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10025,121,20,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10026,122,43,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10027,65,29,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10028,66,47,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10029,67,45,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10030,68,31,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10031,69,17,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10032,70,32,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10033,71,33,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10034,72,34,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10035,73,22,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10036,74,35,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10037,75,36,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10038,76,37,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10039,77,49,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10040,78,48,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10041,79,23,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10042,80,24,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10043,81,15,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10044,82,18,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10045,83,30,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10046,84,19,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10047,85,21,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10048,86,46,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10049,87,16,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10050,88,44,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10051,89,20,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10052,90,43,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10053,91,25,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10054,39,39,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10055,59,38,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10056,123,25,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10057,34,39,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10058,58,38,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10059,44,50,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10060,60,50,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10061,46,51,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10062,62,51,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10063,45,11,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10064,95,11,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10065,47,52,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10066,63,52,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10067,49,1,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10068,33,1,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10069,50,2,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10070,64,2,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10071,51,3,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10072,35,3,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10073,52,4,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10074,36,4,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10075,53,5,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10076,37,5,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10077,54,6,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10078,94,6,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10079,55,7,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10080,38,7,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10081,56,8,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10082,42,8,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10083,57,9,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10084,40,9,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10085,48,10,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10086,41,10,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10087,61,12,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10088,43,12,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10089,93,26,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10090,125,26,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10091,92,42,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10092,124,42,41,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10093,96,0,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10094,126,0,53,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10109,182,27,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10110,185,13,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(10111,8594,14,0,0,'us_qwerty_win'); INSERT INTO keyboard_layouts VALUES(11000,32,57,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11001,97,29,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11002,98,47,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11003,99,45,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11004,100,31,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11005,101,17,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11006,102,32,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11007,103,33,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11008,104,34,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11009,105,22,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11010,106,35,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11011,107,36,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11012,108,37,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11013,109,49,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11014,110,48,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11015,111,23,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11016,112,24,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11017,113,15,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11018,114,18,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11019,115,30,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11020,116,19,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11021,117,21,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11022,118,46,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11023,119,16,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11024,120,44,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11025,121,20,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11026,122,43,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11027,65,29,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11028,66,47,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11029,67,45,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11030,68,31,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11031,69,17,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11032,70,32,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11033,71,33,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11034,72,34,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11035,73,22,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11036,74,35,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11037,75,36,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11038,76,37,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11039,77,49,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11040,78,48,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11041,79,23,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11042,80,24,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11043,81,15,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11044,82,18,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11045,83,30,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11046,84,19,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11047,85,21,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11048,86,46,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11049,87,16,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11050,88,44,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11051,89,20,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11052,90,43,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11053,91,25,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11054,39,39,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11055,59,38,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11056,123,25,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11057,34,39,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11058,58,38,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11059,44,50,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11060,60,50,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11061,46,51,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11062,62,51,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11063,45,11,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11064,95,11,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11065,47,52,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11066,63,52,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11067,49,1,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11068,33,1,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11069,50,2,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11070,64,2,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11071,51,3,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11072,35,3,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11073,52,4,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11074,36,4,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11075,53,5,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11076,37,5,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11077,54,6,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11078,94,6,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11079,55,7,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11080,38,7,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11081,56,8,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11082,42,8,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11083,57,9,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11084,40,9,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11085,48,10,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11086,41,10,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11087,61,12,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11088,43,12,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11089,93,26,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11090,125,26,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11091,92,42,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11092,124,42,41,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11093,96,0,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11094,126,0,53,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11109,182,27,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11110,185,13,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(11111,8594,14,0,0,'us_qwerty_mac'); INSERT INTO keyboard_layouts VALUES(12000,32,57,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12001,97,31,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12002,98,48,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12003,99,18,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12004,100,38,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12005,101,32,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12006,102,23,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12007,103,22,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12008,104,21,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12009,105,30,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12010,113,24,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12011,107,20,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12012,108,17,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12013,109,49,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12014,110,35,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12015,111,33,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12016,112,46,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12017,120,15,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12018,114,36,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12019,115,34,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12020,116,37,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12021,117,29,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12022,118,16,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12023,119,19,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12024,106,52,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12025,121,39,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12026,122,47,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12027,65,31,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12028,66,48,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12029,67,18,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12030,68,38,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12031,69,32,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12032,70,23,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12033,71,22,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12034,72,21,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12035,73,30,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12036,81,24,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12037,75,20,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12038,76,17,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12039,77,49,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12040,78,35,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12041,79,33,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12042,80,46,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12043,88,15,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12044,82,36,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12045,83,34,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12046,84,37,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12047,85,29,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12048,86,16,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12049,87,19,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12050,74,52,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12051,89,39,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12052,90,47,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12053,252,43,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12054,228,45,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12055,246,44,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12056,214,44,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12057,196,45,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12058,220,43,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12059,44,50,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12061,46,51,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12063,223,25,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12065,45,11,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12066,95,11,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12067,49,1,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12068,176,1,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12069,50,2,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12070,167,2,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12071,51,3,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12073,52,4,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12074,187,4,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12075,53,5,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12076,171,5,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12077,54,6,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12078,8364,6,53,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12079,55,7,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12080,36,7,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12081,56,8,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12083,57,9,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12085,48,10,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12087,180,12,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12088,96,12,41,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12089,126,26,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12093,94,0,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12109,182,27,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12110,185,13,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12111,8594,14,0,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12112,64,39,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12113,95,16,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12114,91,17,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12115,93,18,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12116,94,19,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12117,33,20,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12118,60,21,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12119,62,22,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12120,61,23,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12121,38,24,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12123,92,29,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12124,47,30,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12125,123,31,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12126,125,32,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12127,42,33,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12128,63,34,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12129,40,35,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12130,41,36,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12131,45,37,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12132,58,38,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12133,35,43,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12134,36,44,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12135,124,45,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12136,126,46,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12137,96,47,40,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12138,43,48,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12139,37,49,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12140,34,50,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12141,39,51,28,0,'de_neo_v2_win'); INSERT INTO keyboard_layouts VALUES(12142,59,52,28,0,'de_neo_v2_win'); DROP INDEX keyboard_layouts_index; CREATE INDEX keyboard_layouts_index ON keyboard_layouts (id, unicode, grid, layout); // **************************************************************************** // Keyboard Grids (the arrangement of the keys differs per country) // Incremental id, Key Id (see template), Left Coordinate, Top Coordinate, // Color Id of the Key (see defines), // Form Id of the Key, Finger Id of the Key, // Country (first two letters of the Keyboard Layout!) // **************************************************************************** DROP TABLE keyboard_grids; CREATE TABLE keyboard_grids (id INTEGER PRIMARY KEY, key INTEGER, left INTEGER, top INTEGER, color INTEGER, form INTEGER, finger INTEGER, layout_country TEXT); INSERT INTO keyboard_grids VALUES(0,0,10,15,4,0,0,'us'); INSERT INTO keyboard_grids VALUES(1,1,50,15,4,0,0,'us'); INSERT INTO keyboard_grids VALUES(2,2,90,15,4,0,0,'us'); INSERT INTO keyboard_grids VALUES(3,3,130,15,3,0,1,'us'); INSERT INTO keyboard_grids VALUES(4,4,170,15,2,0,2,'us'); INSERT INTO keyboard_grids VALUES(5,5,210,15,1,0,3,'us'); INSERT INTO keyboard_grids VALUES(6,6,250,15,1,0,3,'us'); INSERT INTO keyboard_grids VALUES(7,7,290,15,1,0,4,'us'); INSERT INTO keyboard_grids VALUES(8,8,330,15,1,0,4,'us'); INSERT INTO keyboard_grids VALUES(9,9,370,15,2,0,5,'us'); INSERT INTO keyboard_grids VALUES(10,10,410,15,3,0,6,'us'); INSERT INTO keyboard_grids VALUES(11,11,450,15,4,0,7,'us'); INSERT INTO keyboard_grids VALUES(12,12,490,15,4,0,7,'us'); INSERT INTO keyboard_grids VALUES(13,13,530,15,4,5,7,'us'); INSERT INTO keyboard_grids VALUES(14,14,10,55,4,6,0,'us'); INSERT INTO keyboard_grids VALUES(15,15,70,55,4,0,0,'us'); INSERT INTO keyboard_grids VALUES(16,16,110,55,3,0,1,'us'); INSERT INTO keyboard_grids VALUES(17,17,150,55,2,0,2,'us'); INSERT INTO keyboard_grids VALUES(18,18,190,55,1,0,3,'us'); INSERT INTO keyboard_grids VALUES(19,19,230,55,1,0,3,'us'); INSERT INTO keyboard_grids VALUES(20,20,270,55,1,0,4,'us'); INSERT INTO keyboard_grids VALUES(21,21,310,55,1,0,4,'us'); INSERT INTO keyboard_grids VALUES(22,22,350,55,2,0,5,'us'); INSERT INTO keyboard_grids VALUES(23,23,390,55,3,0,6,'us'); INSERT INTO keyboard_grids VALUES(24,24,430,55,4,0,7,'us'); INSERT INTO keyboard_grids VALUES(25,25,470,55,4,0,7,'us'); INSERT INTO keyboard_grids VALUES(26,26,510,55,4,0,7,'us'); INSERT INTO keyboard_grids VALUES(27,27,520,95,4,7,7,'us'); INSERT INTO keyboard_grids VALUES(28,28,10,95,4,5,0,'us'); INSERT INTO keyboard_grids VALUES(29,29,80,95,4,0,0,'us'); INSERT INTO keyboard_grids VALUES(30,30,120,95,3,0,1,'us'); INSERT INTO keyboard_grids VALUES(31,31,160,95,2,0,2,'us'); INSERT INTO keyboard_grids VALUES(32,32,200,95,1,0,3,'us'); INSERT INTO keyboard_grids VALUES(33,33,240,95,1,0,3,'us'); INSERT INTO keyboard_grids VALUES(34,34,280,95,1,0,4,'us'); INSERT INTO keyboard_grids VALUES(35,35,320,95,1,0,4,'us'); INSERT INTO keyboard_grids VALUES(36,36,360,95,2,0,5,'us'); INSERT INTO keyboard_grids VALUES(37,37,400,95,3,0,6,'us'); INSERT INTO keyboard_grids VALUES(38,38,440,95,4,0,7,'us'); INSERT INTO keyboard_grids VALUES(39,39,480,95,4,0,7,'us'); INSERT INTO keyboard_grids VALUES(41,41,10,135,4,7,0,'us'); INSERT INTO keyboard_grids VALUES(42,42,550,55,4,1,7,'us'); INSERT INTO keyboard_grids VALUES(43,43,100,135,4,0,0,'us'); INSERT INTO keyboard_grids VALUES(44,44,140,135,3,0,1,'us'); INSERT INTO keyboard_grids VALUES(45,45,180,135,2,0,2,'us'); INSERT INTO keyboard_grids VALUES(46,46,220,135,1,0,3,'us'); INSERT INTO keyboard_grids VALUES(47,47,260,135,1,0,3,'us'); INSERT INTO keyboard_grids VALUES(48,48,300,135,1,0,4,'us'); INSERT INTO keyboard_grids VALUES(49,49,340,135,1,0,4,'us'); INSERT INTO keyboard_grids VALUES(50,50,380,135,2,0,5,'us'); INSERT INTO keyboard_grids VALUES(51,51,420,135,3,0,6,'us'); INSERT INTO keyboard_grids VALUES(52,52,460,135,4,0,7,'us'); INSERT INTO keyboard_grids VALUES(53,53,500,135,4,2,7,'us'); INSERT INTO keyboard_grids VALUES(54,54,10,175,4,6,0,'us'); INSERT INTO keyboard_grids VALUES(55,55,70,175,4,0,0,'us'); INSERT INTO keyboard_grids VALUES(56,56,110,175,3,6,1,'us'); INSERT INTO keyboard_grids VALUES(57,57,170,175,1,3,8,'us'); INSERT INTO keyboard_grids VALUES(58,58,440,175,3,6,6,'us'); INSERT INTO keyboard_grids VALUES(59,59,500,175,4,0,7,'us'); INSERT INTO keyboard_grids VALUES(60,60,540,175,4,6,7,'us'); INSERT INTO keyboard_grids VALUES(100,0,10,15,4,0,0,'de'); INSERT INTO keyboard_grids VALUES(101,1,50,15,4,0,0,'de'); INSERT INTO keyboard_grids VALUES(102,2,90,15,4,0,0,'de'); INSERT INTO keyboard_grids VALUES(103,3,130,15,3,0,1,'de'); INSERT INTO keyboard_grids VALUES(104,4,170,15,2,0,2,'de'); INSERT INTO keyboard_grids VALUES(105,5,210,15,1,0,3,'de'); INSERT INTO keyboard_grids VALUES(106,6,250,15,1,0,3,'de'); INSERT INTO keyboard_grids VALUES(107,7,290,15,1,0,4,'de'); INSERT INTO keyboard_grids VALUES(108,8,330,15,1,0,4,'de'); INSERT INTO keyboard_grids VALUES(109,9,370,15,2,0,5,'de'); INSERT INTO keyboard_grids VALUES(110,10,410,15,3,0,6,'de'); INSERT INTO keyboard_grids VALUES(111,11,450,15,4,0,7,'de'); INSERT INTO keyboard_grids VALUES(112,12,490,15,4,0,7,'de'); INSERT INTO keyboard_grids VALUES(113,13,530,15,4,5,7,'de'); INSERT INTO keyboard_grids VALUES(114,14,10,55,4,6,0,'de'); INSERT INTO keyboard_grids VALUES(115,15,70,55,4,0,0,'de'); INSERT INTO keyboard_grids VALUES(116,16,110,55,3,0,1,'de'); INSERT INTO keyboard_grids VALUES(117,17,150,55,2,0,2,'de'); INSERT INTO keyboard_grids VALUES(118,18,190,55,1,0,3,'de'); INSERT INTO keyboard_grids VALUES(119,19,230,55,1,0,3,'de'); INSERT INTO keyboard_grids VALUES(120,20,270,55,1,0,4,'de'); INSERT INTO keyboard_grids VALUES(121,21,310,55,1,0,4,'de'); INSERT INTO keyboard_grids VALUES(122,22,350,55,2,0,5,'de'); INSERT INTO keyboard_grids VALUES(123,23,390,55,3,0,6,'de'); INSERT INTO keyboard_grids VALUES(124,24,430,55,4,0,7,'de'); INSERT INTO keyboard_grids VALUES(125,25,470,55,4,0,7,'de'); INSERT INTO keyboard_grids VALUES(126,26,510,55,4,0,7,'de'); INSERT INTO keyboard_grids VALUES(127,27,550,55,4,4,7,'de'); INSERT INTO keyboard_grids VALUES(128,28,10,95,4,5,0,'de'); INSERT INTO keyboard_grids VALUES(129,29,80,95,4,0,0,'de'); INSERT INTO keyboard_grids VALUES(130,30,120,95,3,0,1,'de'); INSERT INTO keyboard_grids VALUES(131,31,160,95,2,0,2,'de'); INSERT INTO keyboard_grids VALUES(132,32,200,95,1,0,3,'de'); INSERT INTO keyboard_grids VALUES(133,33,240,95,1,0,3,'de'); INSERT INTO keyboard_grids VALUES(134,34,280,95,1,0,4,'de'); INSERT INTO keyboard_grids VALUES(135,35,320,95,1,0,4,'de'); INSERT INTO keyboard_grids VALUES(136,36,360,95,2,0,5,'de'); INSERT INTO keyboard_grids VALUES(137,37,400,95,3,0,6,'de'); INSERT INTO keyboard_grids VALUES(138,38,440,95,4,0,7,'de'); INSERT INTO keyboard_grids VALUES(139,39,480,95,4,0,7,'de'); INSERT INTO keyboard_grids VALUES(140,40,520,95,4,0,7,'de'); INSERT INTO keyboard_grids VALUES(141,41,10,135,4,1,0,'de'); INSERT INTO keyboard_grids VALUES(142,42,60,135,4,0,0,'de'); INSERT INTO keyboard_grids VALUES(143,43,100,135,4,0,0,'de'); INSERT INTO keyboard_grids VALUES(144,44,140,135,3,0,1,'de'); INSERT INTO keyboard_grids VALUES(145,45,180,135,2,0,2,'de'); INSERT INTO keyboard_grids VALUES(146,46,220,135,1,0,3,'de'); INSERT INTO keyboard_grids VALUES(147,47,260,135,1,0,3,'de'); INSERT INTO keyboard_grids VALUES(148,48,300,135,1,0,4,'de'); INSERT INTO keyboard_grids VALUES(149,49,340,135,1,0,4,'de'); INSERT INTO keyboard_grids VALUES(150,50,380,135,2,0,5,'de'); INSERT INTO keyboard_grids VALUES(151,51,420,135,3,0,6,'de'); INSERT INTO keyboard_grids VALUES(152,52,460,135,4,0,7,'de'); INSERT INTO keyboard_grids VALUES(153,53,500,135,4,2,7,'de'); INSERT INTO keyboard_grids VALUES(154,54,10,175,4,6,0,'de'); INSERT INTO keyboard_grids VALUES(155,55,70,175,4,0,0,'de'); INSERT INTO keyboard_grids VALUES(156,56,110,175,3,6,1,'de'); INSERT INTO keyboard_grids VALUES(157,57,170,175,1,3,8,'de'); INSERT INTO keyboard_grids VALUES(158,58,440,175,3,6,6,'de'); INSERT INTO keyboard_grids VALUES(159,59,500,175,4,0,7,'de'); INSERT INTO keyboard_grids VALUES(160,60,540,175,4,6,7,'de'); INSERT INTO keyboard_grids VALUES(200,0,10,15,4,0,0,'ch'); INSERT INTO keyboard_grids VALUES(201,1,50,15,4,0,0,'ch'); INSERT INTO keyboard_grids VALUES(202,2,90,15,4,0,0,'ch'); INSERT INTO keyboard_grids VALUES(203,3,130,15,3,0,1,'ch'); INSERT INTO keyboard_grids VALUES(204,4,170,15,2,0,2,'ch'); INSERT INTO keyboard_grids VALUES(205,5,210,15,1,0,3,'ch'); INSERT INTO keyboard_grids VALUES(206,6,250,15,1,0,3,'ch'); INSERT INTO keyboard_grids VALUES(207,7,290,15,1,0,4,'ch'); INSERT INTO keyboard_grids VALUES(208,8,330,15,1,0,4,'ch'); INSERT INTO keyboard_grids VALUES(209,9,370,15,2,0,5,'ch'); INSERT INTO keyboard_grids VALUES(210,10,410,15,3,0,6,'ch'); INSERT INTO keyboard_grids VALUES(211,11,450,15,4,0,7,'ch'); INSERT INTO keyboard_grids VALUES(212,12,490,15,4,0,7,'ch'); INSERT INTO keyboard_grids VALUES(213,13,530,15,4,5,7,'ch'); INSERT INTO keyboard_grids VALUES(214,14,10,55,4,6,0,'ch'); INSERT INTO keyboard_grids VALUES(215,15,70,55,4,0,0,'ch'); INSERT INTO keyboard_grids VALUES(216,16,110,55,3,0,1,'ch'); INSERT INTO keyboard_grids VALUES(217,17,150,55,2,0,2,'ch'); INSERT INTO keyboard_grids VALUES(218,18,190,55,1,0,3,'ch'); INSERT INTO keyboard_grids VALUES(219,19,230,55,1,0,3,'ch'); INSERT INTO keyboard_grids VALUES(220,20,270,55,1,0,4,'ch'); INSERT INTO keyboard_grids VALUES(221,21,310,55,1,0,4,'ch'); INSERT INTO keyboard_grids VALUES(222,22,350,55,2,0,5,'ch'); INSERT INTO keyboard_grids VALUES(223,23,390,55,3,0,6,'ch'); INSERT INTO keyboard_grids VALUES(224,24,430,55,4,0,7,'ch'); INSERT INTO keyboard_grids VALUES(225,25,470,55,4,0,7,'ch'); INSERT INTO keyboard_grids VALUES(226,26,510,55,4,0,7,'ch'); INSERT INTO keyboard_grids VALUES(227,27,550,55,4,4,7,'ch'); INSERT INTO keyboard_grids VALUES(228,28,10,95,4,5,0,'ch'); INSERT INTO keyboard_grids VALUES(229,29,80,95,4,0,0,'ch'); INSERT INTO keyboard_grids VALUES(230,30,120,95,3,0,1,'ch'); INSERT INTO keyboard_grids VALUES(231,31,160,95,2,0,2,'ch'); INSERT INTO keyboard_grids VALUES(232,32,200,95,1,0,3,'ch'); INSERT INTO keyboard_grids VALUES(233,33,240,95,1,0,3,'ch'); INSERT INTO keyboard_grids VALUES(234,34,280,95,1,0,4,'ch'); INSERT INTO keyboard_grids VALUES(235,35,320,95,1,0,4,'ch'); INSERT INTO keyboard_grids VALUES(236,36,360,95,2,0,5,'ch'); INSERT INTO keyboard_grids VALUES(237,37,400,95,3,0,6,'ch'); INSERT INTO keyboard_grids VALUES(238,38,440,95,4,0,7,'ch'); INSERT INTO keyboard_grids VALUES(239,39,480,95,4,0,7,'ch'); INSERT INTO keyboard_grids VALUES(240,40,520,95,4,0,7,'ch'); INSERT INTO keyboard_grids VALUES(241,41,10,135,4,1,0,'ch'); INSERT INTO keyboard_grids VALUES(242,42,60,135,4,0,0,'ch'); INSERT INTO keyboard_grids VALUES(243,43,100,135,4,0,0,'ch'); INSERT INTO keyboard_grids VALUES(244,44,140,135,3,0,1,'ch'); INSERT INTO keyboard_grids VALUES(245,45,180,135,2,0,2,'ch'); INSERT INTO keyboard_grids VALUES(246,46,220,135,1,0,3,'ch'); INSERT INTO keyboard_grids VALUES(247,47,260,135,1,0,3,'ch'); INSERT INTO keyboard_grids VALUES(248,48,300,135,1,0,4,'ch'); INSERT INTO keyboard_grids VALUES(249,49,340,135,1,0,4,'ch'); INSERT INTO keyboard_grids VALUES(250,50,380,135,2,0,5,'ch'); INSERT INTO keyboard_grids VALUES(251,51,420,135,3,0,6,'ch'); INSERT INTO keyboard_grids VALUES(252,52,460,135,4,0,7,'ch'); INSERT INTO keyboard_grids VALUES(253,53,500,135,4,2,7,'ch'); INSERT INTO keyboard_grids VALUES(254,54,10,175,4,6,0,'ch'); INSERT INTO keyboard_grids VALUES(255,55,70,175,4,0,0,'ch'); INSERT INTO keyboard_grids VALUES(256,56,110,175,3,6,1,'ch'); INSERT INTO keyboard_grids VALUES(257,57,170,175,1,3,8,'ch'); INSERT INTO keyboard_grids VALUES(258,58,440,175,3,6,6,'ch'); INSERT INTO keyboard_grids VALUES(259,59,500,175,4,0,7,'ch'); INSERT INTO keyboard_grids VALUES(260,60,540,175,4,6,7,'ch'); DROP INDEX keyboard_grids_index; CREATE INDEX keyboard_grids_index ON keyboard_grids (key, layout_country); // **************************************************************************** // Numboard Layouts // Incremental id, Unicode Decimal, Key Id of the Keyboard Grid, // Layout Country, Layout OS [win/mac] // **************************************************************************** DROP TABLE numboard_layouts; CREATE TABLE numboard_layouts (id INTEGER PRIMARY KEY, unicode INTEGER, grid INTEGER, layout_country TEXT, layout_os TEXT); INSERT INTO numboard_layouts VALUES(1,47,1,'de','win'); INSERT INTO numboard_layouts VALUES(2,42,2,'de','win'); INSERT INTO numboard_layouts VALUES(3,45,3,'de','win'); INSERT INTO numboard_layouts VALUES(4,55,4,'de','win'); INSERT INTO numboard_layouts VALUES(5,56,5,'de','win'); INSERT INTO numboard_layouts VALUES(6,57,6,'de','win'); INSERT INTO numboard_layouts VALUES(7,43,7,'de','win'); INSERT INTO numboard_layouts VALUES(8,52,8,'de','win'); INSERT INTO numboard_layouts VALUES(9,53,9,'de','win'); INSERT INTO numboard_layouts VALUES(10,54,10,'de','win'); INSERT INTO numboard_layouts VALUES(12,49,12,'de','win'); INSERT INTO numboard_layouts VALUES(13,50,13,'de','win'); INSERT INTO numboard_layouts VALUES(14,51,14,'de','win'); INSERT INTO numboard_layouts VALUES(15,182,15,'de','win'); INSERT INTO numboard_layouts VALUES(16,48,16,'de','win'); INSERT INTO numboard_layouts VALUES(17,44,17,'de','win'); INSERT INTO numboard_layouts VALUES(18,46,17,'de','win'); INSERT INTO numboard_layouts VALUES(21,61,1,'de','mac'); INSERT INTO numboard_layouts VALUES(22,47,2,'de','mac'); INSERT INTO numboard_layouts VALUES(23,42,3,'de','mac'); INSERT INTO numboard_layouts VALUES(24,55,4,'de','mac'); INSERT INTO numboard_layouts VALUES(25,56,5,'de','mac'); INSERT INTO numboard_layouts VALUES(26,57,6,'de','mac'); INSERT INTO numboard_layouts VALUES(27,45,7,'de','mac'); INSERT INTO numboard_layouts VALUES(28,52,8,'de','mac'); INSERT INTO numboard_layouts VALUES(29,53,9,'de','mac'); INSERT INTO numboard_layouts VALUES(30,54,10,'de','mac'); INSERT INTO numboard_layouts VALUES(31,43,11,'de','mac'); INSERT INTO numboard_layouts VALUES(32,49,12,'de','mac'); INSERT INTO numboard_layouts VALUES(33,50,13,'de','mac'); INSERT INTO numboard_layouts VALUES(34,51,14,'de','mac'); INSERT INTO numboard_layouts VALUES(35,182,15,'de','mac'); INSERT INTO numboard_layouts VALUES(36,48,16,'de','mac'); INSERT INTO numboard_layouts VALUES(37,44,17,'de','mac'); INSERT INTO numboard_layouts VALUES(38,46,17,'de','mac'); INSERT INTO numboard_layouts VALUES(41,47,1,'us','win'); INSERT INTO numboard_layouts VALUES(42,42,2,'us','win'); INSERT INTO numboard_layouts VALUES(43,45,3,'us','win'); INSERT INTO numboard_layouts VALUES(44,55,4,'us','win'); INSERT INTO numboard_layouts VALUES(45,56,5,'us','win'); INSERT INTO numboard_layouts VALUES(46,57,6,'us','win'); INSERT INTO numboard_layouts VALUES(47,43,7,'us','win'); INSERT INTO numboard_layouts VALUES(48,52,8,'us','win'); INSERT INTO numboard_layouts VALUES(49,53,9,'us','win'); INSERT INTO numboard_layouts VALUES(50,54,10,'us','win'); INSERT INTO numboard_layouts VALUES(52,49,12,'us','win'); INSERT INTO numboard_layouts VALUES(53,50,13,'us','win'); INSERT INTO numboard_layouts VALUES(54,51,14,'us','win'); INSERT INTO numboard_layouts VALUES(55,182,15,'us','win'); INSERT INTO numboard_layouts VALUES(56,48,16,'us','win'); INSERT INTO numboard_layouts VALUES(57,44,17,'us','win'); INSERT INTO numboard_layouts VALUES(58,46,17,'us','win'); INSERT INTO numboard_layouts VALUES(61,61,1,'us','mac'); INSERT INTO numboard_layouts VALUES(62,47,2,'us','mac'); INSERT INTO numboard_layouts VALUES(63,42,3,'us','mac'); INSERT INTO numboard_layouts VALUES(64,55,4,'us','mac'); INSERT INTO numboard_layouts VALUES(65,56,5,'us','mac'); INSERT INTO numboard_layouts VALUES(66,57,6,'us','mac'); INSERT INTO numboard_layouts VALUES(67,45,7,'us','mac'); INSERT INTO numboard_layouts VALUES(68,52,8,'us','mac'); INSERT INTO numboard_layouts VALUES(69,53,9,'us','mac'); INSERT INTO numboard_layouts VALUES(70,54,10,'us','mac'); INSERT INTO numboard_layouts VALUES(71,43,11,'us','mac'); INSERT INTO numboard_layouts VALUES(72,49,12,'us','mac'); INSERT INTO numboard_layouts VALUES(73,50,13,'us','mac'); INSERT INTO numboard_layouts VALUES(74,51,14,'us','mac'); INSERT INTO numboard_layouts VALUES(75,182,15,'us','mac'); INSERT INTO numboard_layouts VALUES(76,48,16,'us','mac'); INSERT INTO numboard_layouts VALUES(77,44,17,'us','mac'); INSERT INTO numboard_layouts VALUES(78,46,17,'us','mac'); INSERT INTO numboard_layouts VALUES(81,47,1,'ch','win'); INSERT INTO numboard_layouts VALUES(82,42,2,'ch','win'); INSERT INTO numboard_layouts VALUES(83,45,3,'ch','win'); INSERT INTO numboard_layouts VALUES(84,55,4,'ch','win'); INSERT INTO numboard_layouts VALUES(85,56,5,'ch','win'); INSERT INTO numboard_layouts VALUES(86,57,6,'ch','win'); INSERT INTO numboard_layouts VALUES(87,43,7,'ch','win'); INSERT INTO numboard_layouts VALUES(88,52,8,'ch','win'); INSERT INTO numboard_layouts VALUES(89,53,9,'ch','win'); INSERT INTO numboard_layouts VALUES(90,54,10,'ch','win'); INSERT INTO numboard_layouts VALUES(92,49,12,'ch','win'); INSERT INTO numboard_layouts VALUES(93,50,13,'ch','win'); INSERT INTO numboard_layouts VALUES(94,51,14,'ch','win'); INSERT INTO numboard_layouts VALUES(95,182,15,'ch','win'); INSERT INTO numboard_layouts VALUES(96,48,16,'ch','win'); INSERT INTO numboard_layouts VALUES(97,44,17,'ch','win'); INSERT INTO numboard_layouts VALUES(98,46,17,'ch','win'); INSERT INTO numboard_layouts VALUES(101,61,1,'ch','mac'); INSERT INTO numboard_layouts VALUES(102,47,2,'ch','mac'); INSERT INTO numboard_layouts VALUES(103,42,3,'ch','mac'); INSERT INTO numboard_layouts VALUES(104,55,4,'ch','mac'); INSERT INTO numboard_layouts VALUES(105,56,5,'ch','mac'); INSERT INTO numboard_layouts VALUES(106,57,6,'ch','mac'); INSERT INTO numboard_layouts VALUES(107,45,7,'ch','mac'); INSERT INTO numboard_layouts VALUES(108,52,8,'ch','mac'); INSERT INTO numboard_layouts VALUES(109,53,9,'ch','mac'); INSERT INTO numboard_layouts VALUES(110,54,10,'ch','mac'); INSERT INTO numboard_layouts VALUES(111,43,11,'ch','mac'); INSERT INTO numboard_layouts VALUES(112,49,12,'ch','mac'); INSERT INTO numboard_layouts VALUES(113,50,13,'ch','mac'); INSERT INTO numboard_layouts VALUES(114,51,14,'ch','mac'); INSERT INTO numboard_layouts VALUES(115,182,15,'ch','mac'); INSERT INTO numboard_layouts VALUES(116,48,16,'ch','mac'); INSERT INTO numboard_layouts VALUES(117,44,17,'ch','mac'); INSERT INTO numboard_layouts VALUES(118,46,17,'ch','mac'); DROP INDEX numboard_layouts_index; CREATE INDEX numboard_layouts_index ON numboard_layouts (id, unicode, layout_country, layout_os); // **************************************************************************** // Numboard Grids (the arrangement of the keys differs per country AND OS!) // Incremental id, Key Id (see template), Left Coordinate, Top Coordinate, // Color Id of the Key (see defines), // Form Id of the Key, Finger Id of the Key, // Layout Country (first 2 letters of the Keyboard Layout!), // Layout OS (last 3 letters of the Keyboard Layout!) // **************************************************************************** DROP TABLE numboard_grids; CREATE TABLE numboard_grids (id INTEGER PRIMARY KEY, key INTEGER, left INTEGER, top INTEGER, color INTEGER, form INTEGER, finger INTEGER, layout_country TEXT, layout_os TEXT); INSERT INTO numboard_grids VALUES(0,0,10,15,1,0,4,'de','win'); INSERT INTO numboard_grids VALUES(1,1,50,15,2,0,5,'de','win'); INSERT INTO numboard_grids VALUES(2,2,90,15,3,0,6,'de','win'); INSERT INTO numboard_grids VALUES(3,3,130,15,4,0,7,'de','win'); INSERT INTO numboard_grids VALUES(4,4,10,55,1,0,4,'de','win'); INSERT INTO numboard_grids VALUES(5,5,50,55,2,0,5,'de','win'); INSERT INTO numboard_grids VALUES(6,6,90,55,3,0,6,'de','win'); INSERT INTO numboard_grids VALUES(7,7,130,55,4,9,7,'de','win'); INSERT INTO numboard_grids VALUES(8,8,10,95,1,0,4,'de','win'); INSERT INTO numboard_grids VALUES(9,9,50,95,2,0,5,'de','win'); INSERT INTO numboard_grids VALUES(10,10,90,95,3,0,6,'de','win'); INSERT INTO numboard_grids VALUES(12,12,10,135,1,0,4,'de','win'); INSERT INTO numboard_grids VALUES(13,13,50,135,2,0,5,'de','win'); INSERT INTO numboard_grids VALUES(14,14,90,135,3,0,6,'de','win'); INSERT INTO numboard_grids VALUES(15,15,130,135,4,9,7,'de','win'); INSERT INTO numboard_grids VALUES(16,16,10,175,1,7,8,'de','win'); INSERT INTO numboard_grids VALUES(17,17,90,175,3,0,6,'de','win'); INSERT INTO numboard_grids VALUES(20,0,10,15,1,0,4,'de','mac'); INSERT INTO numboard_grids VALUES(21,1,50,15,2,0,5,'de','mac'); INSERT INTO numboard_grids VALUES(22,2,90,15,3,0,6,'de','mac'); INSERT INTO numboard_grids VALUES(23,3,130,15,4,0,7,'de','mac'); INSERT INTO numboard_grids VALUES(24,4,10,55,1,0,4,'de','mac'); INSERT INTO numboard_grids VALUES(25,5,50,55,2,0,5,'de','mac'); INSERT INTO numboard_grids VALUES(26,6,90,55,3,0,6,'de','mac'); INSERT INTO numboard_grids VALUES(27,7,130,55,4,0,7,'de','mac'); INSERT INTO numboard_grids VALUES(28,8,10,95,1,0,4,'de','mac'); INSERT INTO numboard_grids VALUES(29,9,50,95,2,0,5,'de','mac'); INSERT INTO numboard_grids VALUES(30,10,90,95,3,0,6,'de','mac'); INSERT INTO numboard_grids VALUES(31,11,130,95,4,0,7,'de','mac'); INSERT INTO numboard_grids VALUES(32,12,10,135,1,0,4,'de','mac'); INSERT INTO numboard_grids VALUES(33,13,50,135,2,0,5,'de','mac'); INSERT INTO numboard_grids VALUES(34,14,90,135,3,0,6,'de','mac'); INSERT INTO numboard_grids VALUES(35,15,130,135,4,9,7,'de','mac'); INSERT INTO numboard_grids VALUES(36,16,10,175,1,7,8,'de','mac'); INSERT INTO numboard_grids VALUES(37,17,90,175,3,0,6,'de','mac'); INSERT INTO numboard_grids VALUES(40,0,10,15,1,0,4,'us','win'); INSERT INTO numboard_grids VALUES(41,1,50,15,2,0,5,'us','win'); INSERT INTO numboard_grids VALUES(42,2,90,15,3,0,6,'us','win'); INSERT INTO numboard_grids VALUES(43,3,130,15,4,0,7,'us','win'); INSERT INTO numboard_grids VALUES(44,4,10,55,1,0,4,'us','win'); INSERT INTO numboard_grids VALUES(45,5,50,55,2,0,5,'us','win'); INSERT INTO numboard_grids VALUES(46,6,90,55,3,0,6,'us','win'); INSERT INTO numboard_grids VALUES(47,7,130,55,4,9,7,'us','win'); INSERT INTO numboard_grids VALUES(48,8,10,95,1,0,4,'us','win'); INSERT INTO numboard_grids VALUES(49,9,50,95,2,0,5,'us','win'); INSERT INTO numboard_grids VALUES(50,10,90,95,3,0,6,'us','win'); INSERT INTO numboard_grids VALUES(52,12,10,135,1,0,4,'us','win'); INSERT INTO numboard_grids VALUES(53,13,50,135,2,0,5,'us','win'); INSERT INTO numboard_grids VALUES(54,14,90,135,3,0,6,'us','win'); INSERT INTO numboard_grids VALUES(55,15,130,135,4,9,7,'us','win'); INSERT INTO numboard_grids VALUES(56,16,10,175,1,7,8,'us','win'); INSERT INTO numboard_grids VALUES(57,17,90,175,3,0,6,'us','win'); INSERT INTO numboard_grids VALUES(60,0,10,15,1,0,4,'us','mac'); INSERT INTO numboard_grids VALUES(61,1,50,15,2,0,5,'us','mac'); INSERT INTO numboard_grids VALUES(62,2,90,15,3,0,6,'us','mac'); INSERT INTO numboard_grids VALUES(63,3,130,15,4,0,7,'us','mac'); INSERT INTO numboard_grids VALUES(64,4,10,55,1,0,4,'us','mac'); INSERT INTO numboard_grids VALUES(65,5,50,55,2,0,5,'us','mac'); INSERT INTO numboard_grids VALUES(66,6,90,55,3,0,6,'us','mac'); INSERT INTO numboard_grids VALUES(67,7,130,55,4,0,7,'us','mac'); INSERT INTO numboard_grids VALUES(68,8,10,95,1,0,4,'us','mac'); INSERT INTO numboard_grids VALUES(69,9,50,95,2,0,5,'us','mac'); INSERT INTO numboard_grids VALUES(70,10,90,95,3,0,6,'us','mac'); INSERT INTO numboard_grids VALUES(71,11,130,95,4,0,7,'us','mac'); INSERT INTO numboard_grids VALUES(72,12,10,135,1,0,4,'us','mac'); INSERT INTO numboard_grids VALUES(73,13,50,135,2,0,5,'us','mac'); INSERT INTO numboard_grids VALUES(74,14,90,135,3,0,6,'us','mac'); INSERT INTO numboard_grids VALUES(75,15,130,135,4,9,7,'us','mac'); INSERT INTO numboard_grids VALUES(76,16,10,175,1,7,8,'us','mac'); INSERT INTO numboard_grids VALUES(77,17,90,175,3,0,6,'us','mac'); INSERT INTO numboard_grids VALUES(80,0,10,15,1,0,4,'ch','win'); INSERT INTO numboard_grids VALUES(81,1,50,15,2,0,5,'ch','win'); INSERT INTO numboard_grids VALUES(82,2,90,15,3,0,6,'ch','win'); INSERT INTO numboard_grids VALUES(83,3,130,15,4,0,7,'ch','win'); INSERT INTO numboard_grids VALUES(84,4,10,55,1,0,4,'ch','win'); INSERT INTO numboard_grids VALUES(85,5,50,55,2,0,5,'ch','win'); INSERT INTO numboard_grids VALUES(86,6,90,55,3,0,6,'ch','win'); INSERT INTO numboard_grids VALUES(87,7,130,55,4,9,7,'ch','win'); INSERT INTO numboard_grids VALUES(88,8,10,95,1,0,4,'ch','win'); INSERT INTO numboard_grids VALUES(89,9,50,95,2,0,5,'ch','win'); INSERT INTO numboard_grids VALUES(90,10,90,95,3,0,6,'ch','win'); INSERT INTO numboard_grids VALUES(92,12,10,135,1,0,4,'ch','win'); INSERT INTO numboard_grids VALUES(93,13,50,135,2,0,5,'ch','win'); INSERT INTO numboard_grids VALUES(94,14,90,135,3,0,6,'ch','win'); INSERT INTO numboard_grids VALUES(95,15,130,135,4,9,7,'ch','win'); INSERT INTO numboard_grids VALUES(96,16,10,175,1,7,8,'ch','win'); INSERT INTO numboard_grids VALUES(97,17,90,175,3,0,6,'ch','win'); INSERT INTO numboard_grids VALUES(100,0,10,15,1,0,4,'ch','mac'); INSERT INTO numboard_grids VALUES(101,1,50,15,2,0,5,'ch','mac'); INSERT INTO numboard_grids VALUES(102,2,90,15,3,0,6,'ch','mac'); INSERT INTO numboard_grids VALUES(103,3,130,15,4,0,7,'ch','mac'); INSERT INTO numboard_grids VALUES(104,4,10,55,1,0,4,'ch','mac'); INSERT INTO numboard_grids VALUES(105,5,50,55,2,0,5,'ch','mac'); INSERT INTO numboard_grids VALUES(106,6,90,55,3,0,6,'ch','mac'); INSERT INTO numboard_grids VALUES(107,7,130,55,4,0,7,'ch','mac'); INSERT INTO numboard_grids VALUES(108,8,10,95,1,0,4,'ch','mac'); INSERT INTO numboard_grids VALUES(109,9,50,95,2,0,5,'ch','mac'); INSERT INTO numboard_grids VALUES(110,10,90,95,3,0,6,'ch','mac'); INSERT INTO numboard_grids VALUES(111,11,130,95,4,0,7,'ch','mac'); INSERT INTO numboard_grids VALUES(112,12,10,135,1,0,4,'ch','mac'); INSERT INTO numboard_grids VALUES(113,13,50,135,2,0,5,'ch','mac'); INSERT INTO numboard_grids VALUES(114,14,90,135,3,0,6,'ch','mac'); INSERT INTO numboard_grids VALUES(115,15,130,135,4,9,7,'ch','mac'); INSERT INTO numboard_grids VALUES(116,16,10,175,1,7,8,'ch','mac'); INSERT INTO numboard_grids VALUES(117,17,90,175,3,0,6,'ch','mac'); DROP INDEX numboard_grids_index; CREATE INDEX numboard_grids_index ON numboard_grids (key, layout_country, layout_os); // **************************************************************************** // Decimal Unicodes of the chars which flow in the intelligence // **************************************************************************** DROP TABLE lesson_chars; CREATE TABLE lesson_chars (char_unicode INTEGER PRIMARY KEY); INSERT INTO lesson_chars VALUES(32); INSERT INTO lesson_chars VALUES(33); INSERT INTO lesson_chars VALUES(34); INSERT INTO lesson_chars VALUES(35); INSERT INTO lesson_chars VALUES(36); INSERT INTO lesson_chars VALUES(37); INSERT INTO lesson_chars VALUES(38); INSERT INTO lesson_chars VALUES(39); INSERT INTO lesson_chars VALUES(40); INSERT INTO lesson_chars VALUES(41); INSERT INTO lesson_chars VALUES(42); INSERT INTO lesson_chars VALUES(43); INSERT INTO lesson_chars VALUES(44); INSERT INTO lesson_chars VALUES(45); INSERT INTO lesson_chars VALUES(46); INSERT INTO lesson_chars VALUES(47); INSERT INTO lesson_chars VALUES(48); INSERT INTO lesson_chars VALUES(49); INSERT INTO lesson_chars VALUES(50); INSERT INTO lesson_chars VALUES(51); INSERT INTO lesson_chars VALUES(52); INSERT INTO lesson_chars VALUES(53); INSERT INTO lesson_chars VALUES(54); INSERT INTO lesson_chars VALUES(55); INSERT INTO lesson_chars VALUES(56); INSERT INTO lesson_chars VALUES(57); INSERT INTO lesson_chars VALUES(58); INSERT INTO lesson_chars VALUES(59); INSERT INTO lesson_chars VALUES(60); INSERT INTO lesson_chars VALUES(61); INSERT INTO lesson_chars VALUES(62); INSERT INTO lesson_chars VALUES(63); INSERT INTO lesson_chars VALUES(64); INSERT INTO lesson_chars VALUES(65); INSERT INTO lesson_chars VALUES(66); INSERT INTO lesson_chars VALUES(67); INSERT INTO lesson_chars VALUES(68); INSERT INTO lesson_chars VALUES(69); INSERT INTO lesson_chars VALUES(70); INSERT INTO lesson_chars VALUES(71); INSERT INTO lesson_chars VALUES(72); INSERT INTO lesson_chars VALUES(73); INSERT INTO lesson_chars VALUES(74); INSERT INTO lesson_chars VALUES(75); INSERT INTO lesson_chars VALUES(76); INSERT INTO lesson_chars VALUES(77); INSERT INTO lesson_chars VALUES(78); INSERT INTO lesson_chars VALUES(79); INSERT INTO lesson_chars VALUES(80); INSERT INTO lesson_chars VALUES(81); INSERT INTO lesson_chars VALUES(82); INSERT INTO lesson_chars VALUES(83); INSERT INTO lesson_chars VALUES(84); INSERT INTO lesson_chars VALUES(85); INSERT INTO lesson_chars VALUES(86); INSERT INTO lesson_chars VALUES(87); INSERT INTO lesson_chars VALUES(88); INSERT INTO lesson_chars VALUES(89); INSERT INTO lesson_chars VALUES(90); INSERT INTO lesson_chars VALUES(91); INSERT INTO lesson_chars VALUES(92); INSERT INTO lesson_chars VALUES(93); INSERT INTO lesson_chars VALUES(94); INSERT INTO lesson_chars VALUES(95); INSERT INTO lesson_chars VALUES(96); INSERT INTO lesson_chars VALUES(97); INSERT INTO lesson_chars VALUES(98); INSERT INTO lesson_chars VALUES(99); INSERT INTO lesson_chars VALUES(100); INSERT INTO lesson_chars VALUES(101); INSERT INTO lesson_chars VALUES(102); INSERT INTO lesson_chars VALUES(103); INSERT INTO lesson_chars VALUES(104); INSERT INTO lesson_chars VALUES(105); INSERT INTO lesson_chars VALUES(106); INSERT INTO lesson_chars VALUES(107); INSERT INTO lesson_chars VALUES(108); INSERT INTO lesson_chars VALUES(109); INSERT INTO lesson_chars VALUES(110); INSERT INTO lesson_chars VALUES(111); INSERT INTO lesson_chars VALUES(112); INSERT INTO lesson_chars VALUES(113); INSERT INTO lesson_chars VALUES(114); INSERT INTO lesson_chars VALUES(115); INSERT INTO lesson_chars VALUES(116); INSERT INTO lesson_chars VALUES(117); INSERT INTO lesson_chars VALUES(118); INSERT INTO lesson_chars VALUES(119); INSERT INTO lesson_chars VALUES(120); INSERT INTO lesson_chars VALUES(121); INSERT INTO lesson_chars VALUES(122); INSERT INTO lesson_chars VALUES(123); INSERT INTO lesson_chars VALUES(124); INSERT INTO lesson_chars VALUES(125); INSERT INTO lesson_chars VALUES(126); INSERT INTO lesson_chars VALUES(127); INSERT INTO lesson_chars VALUES(128); INSERT INTO lesson_chars VALUES(129); INSERT INTO lesson_chars VALUES(130); INSERT INTO lesson_chars VALUES(131); INSERT INTO lesson_chars VALUES(132); INSERT INTO lesson_chars VALUES(133); INSERT INTO lesson_chars VALUES(134); INSERT INTO lesson_chars VALUES(135); INSERT INTO lesson_chars VALUES(136); INSERT INTO lesson_chars VALUES(137); INSERT INTO lesson_chars VALUES(138); INSERT INTO lesson_chars VALUES(139); INSERT INTO lesson_chars VALUES(140); INSERT INTO lesson_chars VALUES(141); INSERT INTO lesson_chars VALUES(142); INSERT INTO lesson_chars VALUES(143); INSERT INTO lesson_chars VALUES(144); INSERT INTO lesson_chars VALUES(145); INSERT INTO lesson_chars VALUES(146); INSERT INTO lesson_chars VALUES(147); INSERT INTO lesson_chars VALUES(148); INSERT INTO lesson_chars VALUES(149); INSERT INTO lesson_chars VALUES(150); INSERT INTO lesson_chars VALUES(151); INSERT INTO lesson_chars VALUES(152); INSERT INTO lesson_chars VALUES(153); INSERT INTO lesson_chars VALUES(154); INSERT INTO lesson_chars VALUES(155); INSERT INTO lesson_chars VALUES(156); INSERT INTO lesson_chars VALUES(157); INSERT INTO lesson_chars VALUES(158); INSERT INTO lesson_chars VALUES(159); INSERT INTO lesson_chars VALUES(160); INSERT INTO lesson_chars VALUES(161); INSERT INTO lesson_chars VALUES(162); INSERT INTO lesson_chars VALUES(163); INSERT INTO lesson_chars VALUES(164); INSERT INTO lesson_chars VALUES(165); INSERT INTO lesson_chars VALUES(166); INSERT INTO lesson_chars VALUES(167); INSERT INTO lesson_chars VALUES(168); INSERT INTO lesson_chars VALUES(169); INSERT INTO lesson_chars VALUES(170); INSERT INTO lesson_chars VALUES(171); INSERT INTO lesson_chars VALUES(172); INSERT INTO lesson_chars VALUES(173); INSERT INTO lesson_chars VALUES(174); INSERT INTO lesson_chars VALUES(175); INSERT INTO lesson_chars VALUES(176); INSERT INTO lesson_chars VALUES(177); INSERT INTO lesson_chars VALUES(178); INSERT INTO lesson_chars VALUES(179); INSERT INTO lesson_chars VALUES(180); INSERT INTO lesson_chars VALUES(181); INSERT INTO lesson_chars VALUES(182); INSERT INTO lesson_chars VALUES(183); INSERT INTO lesson_chars VALUES(184); INSERT INTO lesson_chars VALUES(185); INSERT INTO lesson_chars VALUES(186); INSERT INTO lesson_chars VALUES(187); INSERT INTO lesson_chars VALUES(188); INSERT INTO lesson_chars VALUES(189); INSERT INTO lesson_chars VALUES(190); INSERT INTO lesson_chars VALUES(191); INSERT INTO lesson_chars VALUES(192); INSERT INTO lesson_chars VALUES(193); INSERT INTO lesson_chars VALUES(194); INSERT INTO lesson_chars VALUES(195); INSERT INTO lesson_chars VALUES(196); INSERT INTO lesson_chars VALUES(197); INSERT INTO lesson_chars VALUES(198); INSERT INTO lesson_chars VALUES(199); INSERT INTO lesson_chars VALUES(200); INSERT INTO lesson_chars VALUES(201); INSERT INTO lesson_chars VALUES(202); INSERT INTO lesson_chars VALUES(203); INSERT INTO lesson_chars VALUES(204); INSERT INTO lesson_chars VALUES(205); INSERT INTO lesson_chars VALUES(206); INSERT INTO lesson_chars VALUES(207); INSERT INTO lesson_chars VALUES(208); INSERT INTO lesson_chars VALUES(209); INSERT INTO lesson_chars VALUES(210); INSERT INTO lesson_chars VALUES(211); INSERT INTO lesson_chars VALUES(212); INSERT INTO lesson_chars VALUES(213); INSERT INTO lesson_chars VALUES(214); INSERT INTO lesson_chars VALUES(215); INSERT INTO lesson_chars VALUES(216); INSERT INTO lesson_chars VALUES(217); INSERT INTO lesson_chars VALUES(218); INSERT INTO lesson_chars VALUES(219); INSERT INTO lesson_chars VALUES(220); INSERT INTO lesson_chars VALUES(221); INSERT INTO lesson_chars VALUES(222); INSERT INTO lesson_chars VALUES(223); INSERT INTO lesson_chars VALUES(224); INSERT INTO lesson_chars VALUES(225); INSERT INTO lesson_chars VALUES(226); INSERT INTO lesson_chars VALUES(227); INSERT INTO lesson_chars VALUES(228); INSERT INTO lesson_chars VALUES(229); INSERT INTO lesson_chars VALUES(230); INSERT INTO lesson_chars VALUES(231); INSERT INTO lesson_chars VALUES(232); INSERT INTO lesson_chars VALUES(233); INSERT INTO lesson_chars VALUES(234); INSERT INTO lesson_chars VALUES(235); INSERT INTO lesson_chars VALUES(236); INSERT INTO lesson_chars VALUES(237); INSERT INTO lesson_chars VALUES(238); INSERT INTO lesson_chars VALUES(239); INSERT INTO lesson_chars VALUES(240); INSERT INTO lesson_chars VALUES(241); INSERT INTO lesson_chars VALUES(242); INSERT INTO lesson_chars VALUES(243); INSERT INTO lesson_chars VALUES(244); INSERT INTO lesson_chars VALUES(245); INSERT INTO lesson_chars VALUES(246); INSERT INTO lesson_chars VALUES(247); INSERT INTO lesson_chars VALUES(248); INSERT INTO lesson_chars VALUES(249); INSERT INTO lesson_chars VALUES(250); INSERT INTO lesson_chars VALUES(251); INSERT INTO lesson_chars VALUES(252); INSERT INTO lesson_chars VALUES(253); INSERT INTO lesson_chars VALUES(254); INSERT INTO lesson_chars VALUES(255); INSERT INTO lesson_chars VALUES(8364); INSERT INTO lesson_chars VALUES(8564); DROP INDEX lesson_chars_index; CREATE INDEX lesson_chars_index ON lesson_chars (char_unicode); // **************************************************************************** // List of the Training Lessons // **************************************************************************** DROP TABLE lesson_list; CREATE TABLE lesson_list (lesson_id INTEGER PRIMARY KEY, lesson_name TEXT, lesson_description TEXT, lesson_code INTEGER, lesson_language TEXT); INSERT INTO lesson_list VALUES(1,'Lektion 1','asdf jkl',1,'de_de_qwertz'); INSERT INTO lesson_list VALUES(2,'Lektion 2','en',2,'de_de_qwertz'); INSERT INTO lesson_list VALUES(3,'Lektion 3','ri',3,'de_de_qwertz'); INSERT INTO lesson_list VALUES(4,'Lektion 4','th',4,'de_de_qwertz'); INSERT INTO lesson_list VALUES(5,'Lektion 5','cu',5,'de_de_qwertz'); INSERT INTO lesson_list VALUES(6,'Lektion 6','Groschreibung',6,'de_de_qwertz'); INSERT INTO lesson_list VALUES(7,'Lektion 7','gG.:',7,'de_de_qwertz'); INSERT INTO lesson_list VALUES(8,'Lektion 8','oOmM',8,'de_de_qwertz'); INSERT INTO lesson_list VALUES(9,'Lektion 9','bBwW',9,'de_de_qwertz'); INSERT INTO lesson_list VALUES(10,'Lektion 10','zZ,;',10,'de_de_qwertz'); INSERT INTO lesson_list VALUES(11,'Lektion 11','vVpP',11,'de_de_qwertz'); INSERT INTO lesson_list VALUES(12,'Lektion 12','',12,'de_de_qwertz'); INSERT INTO lesson_list VALUES(13,'Lektion 13','?qQ',13,'de_de_qwertz'); INSERT INTO lesson_list VALUES(14,'Lektion 14','yYxX-_',14,'de_de_qwertz'); INSERT INTO lesson_list VALUES(15,'Lektion 15','Sonderzeichen 1',15,'de_de_qwertz'); INSERT INTO lesson_list VALUES(16,'Lektion 16','Ziffern',16,'de_de_qwertz'); INSERT INTO lesson_list VALUES(17,'Lektion 17','Sonderzeichen 2',17,'de_de_qwertz'); INSERT INTO lesson_list VALUES(18,'Lektion 18','Alle Zeichen',18,'de_de_qwertz'); INSERT INTO lesson_list VALUES(19,'Lektion 19','Ziffernblock 1',19,'de_de_qwertz'); INSERT INTO lesson_list VALUES(20,'Lektion 20','Ziffernblock 2',20,'de_de_qwertz'); INSERT INTO lesson_list VALUES(101,'Lesson 1','asdf jkl;',1,'en_us_qwerty'); INSERT INTO lesson_list VALUES(102,'Lesson 2','eo',2,'en_us_qwerty'); INSERT INTO lesson_list VALUES(103,'Lesson 3','ti',3,'en_us_qwerty'); INSERT INTO lesson_list VALUES(104,'Lesson 4','nr',4,'en_us_qwerty'); INSERT INTO lesson_list VALUES(105,'Lesson 5','hc',5,'en_us_qwerty'); INSERT INTO lesson_list VALUES(106,'Lesson 6','Capitalization',6,'en_us_qwerty'); INSERT INTO lesson_list VALUES(107,'Lesson 7','wW.,',7,'en_us_qwerty'); INSERT INTO lesson_list VALUES(108,'Lesson 8','gG',8,'en_us_qwerty'); INSERT INTO lesson_list VALUES(109,'Lesson 9','bBuU',9,'en_us_qwerty'); INSERT INTO lesson_list VALUES(110,'Lesson 10','yYmM',10,'en_us_qwerty'); INSERT INTO lesson_list VALUES(111,'Lesson 11','vVpP',11,'en_us_qwerty'); INSERT INTO lesson_list VALUES(112,'Lesson 12','xX?',12,'en_us_qwerty'); INSERT INTO lesson_list VALUES(113,'Lesson 13','qQ!',13,'en_us_qwerty'); INSERT INTO lesson_list VALUES(114,'Lesson 14','zZ()-',14,'en_us_qwerty'); INSERT INTO lesson_list VALUES(115,'Lesson 15','Special Chars 1',15,'en_us_qwerty'); INSERT INTO lesson_list VALUES(116,'Lesson 16','Numerics',16,'en_us_qwerty'); INSERT INTO lesson_list VALUES(117,'Lesson 17','Special Chars 2',17,'en_us_qwerty'); INSERT INTO lesson_list VALUES(118,'Lesson 18','All Characters',18,'en_us_qwerty'); INSERT INTO lesson_list VALUES(119,'Lesson 19','Numpad 1',19,'en_us_qwerty'); INSERT INTO lesson_list VALUES(120,'Lesson 20','Numpad 2',20,'en_us_qwerty'); INSERT INTO lesson_list VALUES(201,'Lektion 1','uiae nrtd',1,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(202,'Lektion 2','sl',2,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(203,'Lektion 3','hc',3,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(204,'Lektion 4','go',4,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(205,'Lektion 5','m',5,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(206,'Lektion 6','Groschreibung',6,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(207,'Lektion 7','wW.,',7,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(208,'Lektion 8','bBzZ',8,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(209,'Lektion 9','fFpP',9,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(210,'Lektion 10','kKvV',10,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(211,'Lektion 11','',11,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(212,'Lektion 12','xX?',12,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(213,'Lektion 13','jJyY',13,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(214,'Lektion 14','qQ@!:',14,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(215,'Lektion 15','Sonderzeichen 1',15,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(216,'Lektion 16','Ziffern',16,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(217,'Lektion 17','Sonderzeichen 2',17,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(218,'Lektion 18','Alle Zeichen',18,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(219,'Lektion 19','Ziffernblock 1',19,'de_de_neo_v2'); INSERT INTO lesson_list VALUES(220,'Lektion 20','Ziffernblock 2',20,'de_de_neo_v2'); DROP INDEX lesson_list_index; CREATE INDEX lesson_list_index ON lesson_list (lesson_id); // **************************************************************************** // List of the Themes for the Open Lessons // **************************************************************************** DROP TABLE open_themes; CREATE TABLE open_themes (theme_id INTEGER PRIMARY KEY, theme_name TEXT, theme_description TEXT); INSERT INTO open_themes VALUES(200, 'Englisch', 'Englisch'); INSERT INTO open_themes VALUES(400, 'Lyrik', 'Lyrik'); INSERT INTO open_themes VALUES(600, 'Kinder & Schule', 'Kinder & Schule'); INSERT INTO open_themes VALUES(800, 'Gesundheit', 'Gesundheit'); INSERT INTO open_themes VALUES(1000, 'Technik', 'Technik'); INSERT INTO open_themes VALUES(1200, 'Wissenswertes', 'Wissenswertes'); DROP INDEX open_themes_index; CREATE INDEX open_themes_index ON open_themes (theme_id); // **************************************************************************** // List of the Open Lessons // **************************************************************************** DROP TABLE open_list; CREATE TABLE open_list (open_id INTEGER PRIMARY KEY, open_name TEXT, open_description TEXT, open_theme INTEGER, open_unit INTEGER); INSERT INTO open_list VALUES(1,'Tastaturgeschichte','Eine Geschichte ber die Computertastatur (TIPP10, 2006)', 1200, 0); INSERT INTO open_list VALUES(2,'C++ Beispielklasse','Eine Beispielklasse in der Programmiersprache C++ (TIPP10, 2006)', 1000, 0); INSERT INTO open_list VALUES(3,'Die Spinne','Eine Kurzgeschichte (Christian Frchtegott Gellert, 1746)', 400, 0); INSERT INTO open_list VALUES(4,'Groer Lrm','Eine Fabel (Franz Kafka, 1912)', 400, 0); INSERT INTO open_list VALUES(5,'Stammtischregeln','Regeln fr meinen Stammtisch (Peter Altenberg, 1924)', 400, 0); INSERT INTO open_list VALUES(6,'Die 20 hufigsten Wrter','Eine bung der 20 hufigsten deutschen Wrter', 1200, 1); INSERT INTO open_list VALUES(7,'Das ABC','Eine bung der Buchstaben a-Z', 600, 1); INSERT INTO open_list VALUES(8,'Deutsch-Englisch',' Verschiedene Stze in Deutsch und Englisch (Macplanet, 2008)', 200, 0); INSERT INTO open_list VALUES(9,'Das Kartenspiel',' Ein Gedicht (Joachim Ringelnatz, 1928)', 400, 0); INSERT INTO open_list VALUES(10,'Die Affen',' Ein Gedicht (Wilhelm Busch, 1904)', 400, 0); INSERT INTO open_list VALUES(11,'Der Asket',' Ein Gedicht (Wilhelm Busch, 1904)', 400, 0); INSERT INTO open_list VALUES(12,'Thomas Edisons Vater','Eine Kindergeschichte fr Eltern (TIPP10, 2008)',400,0); INSERT INTO open_list VALUES(13,'Du hast sie, Herr...','Ein Gedicht (Theodor Storm, 1864)',400,0); INSERT INTO open_list VALUES(14,'Der kleine Br','Warum der kleine Br im Winter nicht mit dem kleinen Luchs spielen kann (TIPP10, 2008)',600,0); INSERT INTO open_list VALUES(15,'Der kleine Luchs','Warum die Sterne auf die Erde kommen um im Wald zu tanzen (TIPP10, 2008)',600,0); INSERT INTO open_list VALUES(16,'Europische Union','Unsere Nachbarstaaten und ihre Hauptstdte (TIPP10, 2008)',600,0); INSERT INTO open_list VALUES(17,'Englisch fr Kids','Kurze bersetzungen zum ben (TIPP10, 2008)',600,0); INSERT INTO open_list VALUES(18,'Mathe fr Kids','Die vier Grundrechenarten (TIPP10, 2008)',600,0); INSERT INTO open_list VALUES(19,'Animals','Stories around the kangaroo, the owl & the pigeon (Unknown)',600,0); INSERT INTO open_list VALUES(20,'Tsunamis','ber die Entstehung der riesigen Flutwellen (TIPP10, 2008)',1200,0); INSERT INTO open_list VALUES(21,'Das Gelbe vom Ei?','Ist das Hhnerei tatschlich der ergiebigste Proteinlieferant? (TIPP10, 2008)',800,0); INSERT INTO open_list VALUES(22,'Oscar luft und luft','Amputierter Lufer kann mit Hochleistungssportlern mithalten (TIPP10, 2008)',800,0); INSERT INTO open_list VALUES(23,'Tomatensaft','Wie der Tomatensaft das Fliegen lernte (TIPP10, 2008)',800,0); INSERT INTO open_list VALUES(24,'Bionik','Erkenntnisse aus der Natur fr die technische Entwicklung (TIPP10, 2008)',1000,0); INSERT INTO open_list VALUES(25,'Der Turmbau zu Babel','Vom Kampf um die Vorherrschaft ber den Wolken (TIPP10, 2008)',1000,0); INSERT INTO open_list VALUES(26,'Hoffnung fr Bewegung','Ein Roboteranzug aus Japan hilft Menschen mit Bewegungseinschrnkungen (TIPP10, 2008)',1000,0); INSERT INTO open_list VALUES(27,'Knig von Hawaii','Wie Knig Kalakaua half, die Kultur Hawaiis vor der Auslschung zu bewahren (TIPP10, 2008)',1200,0); INSERT INTO open_list VALUES(28,'Von sop bis Lessin','ber die Ursprnge der Fabel (TIPP10, 2008)',1200,0); INSERT INTO open_list VALUES(29,'Gong Xi Fa Cai!','Oder: Alles Gute zum Chinesischen Neujahrsfest! (TIPP10, 2008)',1200,0); INSERT INTO open_list VALUES(30,'Application','Englischsprachiges Bewerbungsschreiben (TIPP10, 2008)',200,0); INSERT INTO open_list VALUES(31,'Conversation 1','Asking the way (TIPP10, 2008)',200,0); INSERT INTO open_list VALUES(32,'Conversation 2','Where are you from? (TIPP10, 2008)',200,0); INSERT INTO open_list VALUES(33,'Grasshopper and Ant','A fable (Aesop)',200,0); INSERT INTO open_list VALUES(34,'The Old Oaken Bucket','A poem (Samuel Woodworth, 1817)',200,0); INSERT INTO open_list VALUES(35,'Gespenstergeschichte','Eine Gespenstergeschichte (Johann Wolfgang von Goethe, 1749)',400,0); INSERT INTO open_list VALUES(36,'Der Geier','Eine Kurzgeschichte (Franz Kafka, 1920)',400,0); INSERT INTO open_list VALUES(37,'Das Karussell','Ein Gedicht - Jardin du Luxembourg (Rainer Maria Rilke, 1906)',400,0); INSERT INTO open_list VALUES(38,'Begriffsstutziger Priester','Wie ein gottesfrchtiger Mann es versumt, den Wald vor lauter Bumen zu sehen (TIPP10, 2008)',400,0); DROP INDEX open_list_index; CREATE INDEX open_list_index ON open_list (open_id); // **************************************************************************** // Content of the Training Lessons // **************************************************************************** DROP TABLE lesson_content; CREATE TABLE lesson_content (content_id INTEGER PRIMARY KEY, content_text TEXT, content_lesson INTEGER); INSERT INTO lesson_content VALUES(101001,'asdf jkl',1); INSERT INTO lesson_content VALUES(101002,'falls',1); INSERT INTO lesson_content VALUES(101003,'skala',1); INSERT INTO lesson_content VALUES(101004,'kls',1); INSERT INTO lesson_content VALUES(101005,'flak',1); INSERT INTO lesson_content VALUES(101006,'das',1); INSERT INTO lesson_content VALUES(101007,'als',1); INSERT INTO lesson_content VALUES(101008,'las',1); INSERT INTO lesson_content VALUES(101009,'fad',1); INSERT INTO lesson_content VALUES(101010,'fall',1); INSERT INTO lesson_content VALUES(101011,'alf',1); INSERT INTO lesson_content VALUES(101012,'saal',1); INSERT INTO lesson_content VALUES(101013,'kalk',1); INSERT INTO lesson_content VALUES(101014,'salsa',1); INSERT INTO lesson_content VALUES(101015,'dass',1); INSERT INTO lesson_content VALUES(101016,'fass',1); INSERT INTO lesson_content VALUES(101017,'kafka',1); INSERT INTO lesson_content VALUES(101018,'lass',1); INSERT INTO lesson_content VALUES(101019,'jl',1); INSERT INTO lesson_content VALUES(101020,'ls',1); INSERT INTO lesson_content VALUES(101021,'dsl',1); INSERT INTO lesson_content VALUES(101022,'l',1); INSERT INTO lesson_content VALUES(101023,'all',1); INSERT INTO lesson_content VALUES(101024,'ja',1); INSERT INTO lesson_content VALUES(101025,'da',1); INSERT INTO lesson_content VALUES(101026,'as',1); INSERT INTO lesson_content VALUES(101027,'dj',1); INSERT INTO lesson_content VALUES(101028,'la',1); INSERT INTO lesson_content VALUES(102001,'enen nene',2); INSERT INTO lesson_content VALUES(102002,'enden',2); INSERT INTO lesson_content VALUES(102003,'jenen',2); INSERT INTO lesson_content VALUES(102004,'kenne',2); INSERT INTO lesson_content VALUES(102005,'den',2); INSERT INTO lesson_content VALUES(102006,'denken',2); INSERT INTO lesson_content VALUES(102007,'senden',2); INSERT INTO lesson_content VALUES(102008,'senken',2); INSERT INTO lesson_content VALUES(102009,'lenken',2); INSERT INTO lesson_content VALUES(102010,'jens',2); INSERT INTO lesson_content VALUES(102011,'elan',2); INSERT INTO lesson_content VALUES(102012,'senf',2); INSERT INTO lesson_content VALUES(102013,'len',2); INSERT INTO lesson_content VALUES(102014,'allen',2); INSERT INTO lesson_content VALUES(102015,'danke',2); INSERT INTO lesson_content VALUES(102016,'dekan',2); INSERT INTO lesson_content VALUES(102017,'faden',2); INSERT INTO lesson_content VALUES(102018,'nadel',2); INSERT INTO lesson_content VALUES(102019,'laken',2); INSERT INTO lesson_content VALUES(102020,'lsen',2); INSERT INTO lesson_content VALUES(102021,'laden',2); INSERT INTO lesson_content VALUES(102022,'fassen',2); INSERT INTO lesson_content VALUES(102023,'lassen',2); INSERT INTO lesson_content VALUES(102024,'fallen',2); INSERT INTO lesson_content VALUES(102025,'klaffen',2); INSERT INTO lesson_content VALUES(102026,'allenfalls',2); INSERT INTO lesson_content VALUES(102027,'denen',2); INSERT INTO lesson_content VALUES(102028,'kennen',2); INSERT INTO lesson_content VALUES(102029,'nennen',2); INSERT INTO lesson_content VALUES(102030,'denn',2); INSERT INTO lesson_content VALUES(102031,'ende',2); INSERT INTO lesson_content VALUES(102032,'jene',2); INSERT INTO lesson_content VALUES(102033,'enkel',2); INSERT INTO lesson_content VALUES(102034,'essen',2); INSERT INTO lesson_content VALUES(102035,'denke',2); INSERT INTO lesson_content VALUES(102036,'jenes',2); INSERT INTO lesson_content VALUES(102037,'knne',2); INSERT INTO lesson_content VALUES(102038,'jeden',2); INSERT INTO lesson_content VALUES(102039,'lesen',2); INSERT INTO lesson_content VALUES(102040,'nasen',2); INSERT INTO lesson_content VALUES(102041,'dessen',2); INSERT INTO lesson_content VALUES(102042,'essens',2); INSERT INTO lesson_content VALUES(102043,'ffnen',2); INSERT INTO lesson_content VALUES(102044,'landen',2); INSERT INTO lesson_content VALUES(102045,'fanden',2); INSERT INTO lesson_content VALUES(102046,'fallendes',2); INSERT INTO lesson_content VALUES(102047,'jedenfalls',2); INSERT INTO lesson_content VALUES(102048,'knnen',2); INSERT INTO lesson_content VALUES(102049,'seele',2); INSERT INTO lesson_content VALUES(102050,'dann',2); INSERT INTO lesson_content VALUES(102051,'es',2); INSERT INTO lesson_content VALUES(102052,'an',2); INSERT INTO lesson_content VALUES(102053,'kann',2); INSERT INTO lesson_content VALUES(102054,'je',2); INSERT INTO lesson_content VALUES(102055,'jede',2); INSERT INTO lesson_content VALUES(102056,'jedes',2); INSERT INTO lesson_content VALUES(102057,'edles',2); INSERT INTO lesson_content VALUES(102058,'des',2); INSERT INTO lesson_content VALUES(102059,'ans',2); INSERT INTO lesson_content VALUES(102060,'elf',2); INSERT INTO lesson_content VALUES(102061,'and',2); INSERT INTO lesson_content VALUES(102062,'alle',2); INSERT INTO lesson_content VALUES(102063,'fand',2); INSERT INTO lesson_content VALUES(102064,'dank',2); INSERT INTO lesson_content VALUES(102065,'sank',2); INSERT INTO lesson_content VALUES(103001,'riri irir',3); INSERT INTO lesson_content VALUES(103002,'frei',3); INSERT INTO lesson_content VALUES(103003,'drei',3); INSERT INTO lesson_content VALUES(103004,'rein',3); INSERT INTO lesson_content VALUES(103005,'rief',3); INSERT INTO lesson_content VALUES(103006,'drin',3); INSERT INTO lesson_content VALUES(103007,'einer',3); INSERT INTO lesson_content VALUES(103008,'kreis',3); INSERT INTO lesson_content VALUES(103009,'darin',3); INSERT INTO lesson_content VALUES(103010,'reise',3); INSERT INTO lesson_content VALUES(103011,'risse',3); INSERT INTO lesson_content VALUES(103012,'freie',3); INSERT INTO lesson_content VALUES(103013,'reine',3); INSERT INTO lesson_content VALUES(103014,'realisieren',3); INSERT INTO lesson_content VALUES(103015,'deiner',3); INSERT INTO lesson_content VALUES(103016,'dieser',3); INSERT INTO lesson_content VALUES(103017,'kinder',3); INSERT INTO lesson_content VALUES(103018,'lieder',3); INSERT INTO lesson_content VALUES(103019,'seiner',3); INSERT INTO lesson_content VALUES(103020,'keiner',3); INSERT INTO lesson_content VALUES(103021,'leider',3); INSERT INTO lesson_content VALUES(103022,'friede',3); INSERT INTO lesson_content VALUES(103023,'freien',3); INSERT INTO lesson_content VALUES(103024,'rinnen',3); INSERT INTO lesson_content VALUES(103025,'kreise',3); INSERT INTO lesson_content VALUES(103026,'leiser',3); INSERT INTO lesson_content VALUES(103027,'feiern',3); INSERT INTO lesson_content VALUES(103028,'nieder',3); INSERT INTO lesson_content VALUES(103029,'innere',3); INSERT INTO lesson_content VALUES(103030,'reinen',3); INSERT INTO lesson_content VALUES(103031,'reisen',3); INSERT INTO lesson_content VALUES(103032,'riefen',3); INSERT INTO lesson_content VALUES(103033,'derlei',3); INSERT INTO lesson_content VALUES(103034,'inneren',3); INSERT INTO lesson_content VALUES(103035,'kleiner',3); INSERT INTO lesson_content VALUES(103036,'kindern',3); INSERT INTO lesson_content VALUES(103037,'frieden',3); INSERT INTO lesson_content VALUES(103038,'liefern',3); INSERT INTO lesson_content VALUES(103039,'radikal',3); INSERT INTO lesson_content VALUES(103040,'einander',3); INSERT INTO lesson_content VALUES(103041,'niederen',3); INSERT INTO lesson_content VALUES(103042,'friedens',3); INSERT INTO lesson_content VALUES(103043,'allerlei',3); INSERT INTO lesson_content VALUES(103044,'kleinere',3); INSERT INTO lesson_content VALUES(103045,'radikale',3); INSERT INTO lesson_content VALUES(103046,'kleineren',3); INSERT INTO lesson_content VALUES(103047,'radikalen',3); INSERT INTO lesson_content VALUES(103048,'kassieren',3); INSERT INTO lesson_content VALUES(103049,'aneinander',3); INSERT INTO lesson_content VALUES(103050,'dir',3); INSERT INTO lesson_content VALUES(103051,'irre',3); INSERT INTO lesson_content VALUES(103052,'freier',3); INSERT INTO lesson_content VALUES(103053,'erinnere',3); INSERT INTO lesson_content VALUES(103054,'erinnern',3); INSERT INTO lesson_content VALUES(103055,'keinerlei',3); INSERT INTO lesson_content VALUES(103056,'definieren',3); INSERT INTO lesson_content VALUES(103057,'kandidieren',3); INSERT INTO lesson_content VALUES(103058,'in',3); INSERT INTO lesson_content VALUES(103059,'er',3); INSERT INTO lesson_content VALUES(103060,'derer',3); INSERT INTO lesson_content VALUES(103061,'die',3); INSERT INTO lesson_content VALUES(103062,'der',3); INSERT INTO lesson_content VALUES(103063,'nie',3); INSERT INTO lesson_content VALUES(103064,'ein',3); INSERT INTO lesson_content VALUES(103065,'sie',3); INSERT INTO lesson_content VALUES(103066,'ins',3); INSERT INTO lesson_content VALUES(103067,'redner',3); INSERT INTO lesson_content VALUES(103068,'rinnen',3); INSERT INTO lesson_content VALUES(103069,'dar',3); INSERT INTO lesson_content VALUES(103070,'irren',3); INSERT INTO lesson_content VALUES(103071,'klarer',3); INSERT INTO lesson_content VALUES(103072,'anderer',3); INSERT INTO lesson_content VALUES(103073,'frdern',3); INSERT INTO lesson_content VALUES(104001,'thth htht',4); INSERT INTO lesson_content VALUES(104002,'hast',4); INSERT INTO lesson_content VALUES(104003,'hrt',4); INSERT INTO lesson_content VALUES(104004,'hart',4); INSERT INTO lesson_content VALUES(104005,'halt',4); INSERT INTO lesson_content VALUES(104006,'halte',4); INSERT INTO lesson_content VALUES(104007,'hielt',4); INSERT INTO lesson_content VALUES(104008,'hrte',4); INSERT INTO lesson_content VALUES(104009,'stehe',4); INSERT INTO lesson_content VALUES(104010,'fehlt',4); INSERT INTO lesson_content VALUES(104011,'sieht',4); INSERT INTO lesson_content VALUES(104012,'kehrt',4); INSERT INTO lesson_content VALUES(104013,'hilft',4); INSERT INTO lesson_content VALUES(104014,'lehnt',4); INSERT INTO lesson_content VALUES(104015,'harte',4); INSERT INTO lesson_content VALUES(104016,'dreht',4); INSERT INTO lesson_content VALUES(104017,'lehrt',4); INSERT INTO lesson_content VALUES(104018,'hinter',4); INSERT INTO lesson_content VALUES(104019,'halten',4); INSERT INTO lesson_content VALUES(104020,'inhalt',4); INSERT INTO lesson_content VALUES(104021,'stehen',4); INSERT INTO lesson_content VALUES(104022,'lehnte',4); INSERT INTO lesson_content VALUES(104023,'harten',4); INSERT INTO lesson_content VALUES(104024,'hinten',4); INSERT INTO lesson_content VALUES(104025,'fehlte',4); INSERT INTO lesson_content VALUES(104026,'kehrte',4); INSERT INTO lesson_content VALUES(104027,'drehte',4); INSERT INTO lesson_content VALUES(104028,'harter',4); INSERT INTO lesson_content VALUES(104029,'hielten',4); INSERT INTO lesson_content VALUES(104030,'handelt',4); INSERT INTO lesson_content VALUES(104031,'inhalte',4); INSERT INTO lesson_content VALUES(104032,'erhielt',4); INSERT INTO lesson_content VALUES(104033,'seither',4); INSERT INTO lesson_content VALUES(104034,'fehlten',4); INSERT INTO lesson_content VALUES(104035,'lehnten',4); INSERT INTO lesson_content VALUES(104036,'freiheit',4); INSERT INTO lesson_content VALUES(104037,'handelte',4); INSERT INTO lesson_content VALUES(104038,'kindheit',4); INSERT INTO lesson_content VALUES(104039,'dahinter',4); INSERT INTO lesson_content VALUES(104040,'erhalten',4); INSERT INTO lesson_content VALUES(104041,'stehende',4); INSERT INTO lesson_content VALUES(104042,'heiraten',4); INSERT INTO lesson_content VALUES(104043,'krankheit',4); INSERT INTO lesson_content VALUES(104044,'stehenden',4); INSERT INTO lesson_content VALUES(104045,'ersehnten',4); INSERT INTO lesson_content VALUES(104046,'erhielten',4); INSERT INTO lesson_content VALUES(104047,'riesenhaft',4); INSERT INTO lesson_content VALUES(104048,'feinheiten',4); INSERT INTO lesson_content VALUES(104049,'innehalten',4); INSERT INTO lesson_content VALUES(104050,'ihrerseits',4); INSERT INTO lesson_content VALUES(104051,'herstellen',4); INSERT INTO lesson_content VALUES(104052,'anhaltende',4); INSERT INTO lesson_content VALUES(104053,'krankheiten',4); INSERT INTO lesson_content VALUES(104054,'anstehenden',4); INSERT INTO lesson_content VALUES(104055,'anhaltenden',4); INSERT INTO lesson_content VALUES(104056,'hinterlassen',4); INSERT INTO lesson_content VALUES(104057,'hintereinander',4); INSERT INTO lesson_content VALUES(104058,'hat',4); INSERT INTO lesson_content VALUES(104059,'hatte',4); INSERT INTO lesson_content VALUES(104060,'steht',4); INSERT INTO lesson_content VALUES(104061,'hatten',4); INSERT INTO lesson_content VALUES(104062,'erhht',4); INSERT INTO lesson_content VALUES(104063,'dasteht',4); INSERT INTO lesson_content VALUES(104064,'erhhte',4); INSERT INTO lesson_content VALUES(104065,'strahlt',4); INSERT INTO lesson_content VALUES(104066,'hieltest',4); INSERT INTO lesson_content VALUES(104067,'erhhten',4); INSERT INTO lesson_content VALUES(104068,'enthalten',4); INSERT INTO lesson_content VALUES(104069,'entstehen',4); INSERT INTO lesson_content VALUES(104070,'hinterher',4); INSERT INTO lesson_content VALUES(104071,'ernsthaft',4); INSERT INTO lesson_content VALUES(104072,'festhalten',4); INSERT INTO lesson_content VALUES(104073,'ernsthafte',4); INSERT INTO lesson_content VALUES(104074,'stillstehen',4); INSERT INTO lesson_content VALUES(104075,'enthaltenen',4); INSERT INTO lesson_content VALUES(104076,'hattest',4); INSERT INTO lesson_content VALUES(104077,'entsteht',4); INSERT INTO lesson_content VALUES(104078,'theaterkarte',4); INSERT INTO lesson_content VALUES(104079,'hher stehenden',4); INSERT INTO lesson_content VALUES(104080,'tat',4); INSERT INTO lesson_content VALUES(104081,'statt',4); INSERT INTO lesson_content VALUES(104082,'tritt',4); INSERT INTO lesson_content VALUES(104083,'litt',4); INSERT INTO lesson_content VALUES(104084,'tatest',4); INSERT INTO lesson_content VALUES(104085,'hhe',4); INSERT INTO lesson_content VALUES(104086,'satt',4); INSERT INTO lesson_content VALUES(104087,'trat',4); INSERT INTO lesson_content VALUES(104088,'nett',4); INSERT INTO lesson_content VALUES(104089,'erstattet',4); INSERT INTO lesson_content VALUES(104090,'littest',4); INSERT INTO lesson_content VALUES(104091,'startet',4); INSERT INTO lesson_content VALUES(104092,'anstatt',4); INSERT INTO lesson_content VALUES(104093,'hher',4); INSERT INTO lesson_content VALUES(104094,'strt',4); INSERT INTO lesson_content VALUES(104095,'stets',4); INSERT INTO lesson_content VALUES(104096,'teilt',4); INSERT INTO lesson_content VALUES(104097,'tten',4); INSERT INTO lesson_content VALUES(104098,'taten',4); INSERT INTO lesson_content VALUES(104099,'startete',4); INSERT INTO lesson_content VALUES(104100,'stattfindet',4); INSERT INTO lesson_content VALUES(104101,'ist',4); INSERT INTO lesson_content VALUES(104102,'ehe',4); INSERT INTO lesson_content VALUES(104103,'ihn',4); INSERT INTO lesson_content VALUES(104104,'ihr',4); INSERT INTO lesson_content VALUES(104105,'sah',4); INSERT INTO lesson_content VALUES(104106,'alt',4); INSERT INTO lesson_content VALUES(104107,'these',4); INSERT INTO lesson_content VALUES(105001,'cucu ucuc',5); INSERT INTO lesson_content VALUES(105002,'auch',5); INSERT INTO lesson_content VALUES(105003,'ruck',5); INSERT INTO lesson_content VALUES(105004,'euch',5); INSERT INTO lesson_content VALUES(105005,'durch',5); INSERT INTO lesson_content VALUES(105006,'sauce',5); INSERT INTO lesson_content VALUES(105007,'suche',5); INSERT INTO lesson_content VALUES(105008,'hauch',5); INSERT INTO lesson_content VALUES(105009,'sucht',5); INSERT INTO lesson_content VALUES(105010,'schuf',5); INSERT INTO lesson_content VALUES(105011,'durchsucht',5); INSERT INTO lesson_content VALUES(105012,'schuld',5); INSERT INTO lesson_content VALUES(105013,'suchte',5); INSERT INTO lesson_content VALUES(105014,'durchs',5); INSERT INTO lesson_content VALUES(105015,'suchen',5); INSERT INTO lesson_content VALUES(105016,'schaut',5); INSERT INTO lesson_content VALUES(105017,'taucht',5); INSERT INTO lesson_content VALUES(105018,'dadurch',5); INSERT INTO lesson_content VALUES(105019,'ursache',5); INSERT INTO lesson_content VALUES(105020,'deutsch',5); INSERT INTO lesson_content VALUES(105021,'schauen',5); INSERT INTO lesson_content VALUES(105022,'suchten',5); INSERT INTO lesson_content VALUES(105023,'tauchen',5); INSERT INTO lesson_content VALUES(105024,'drucken',5); INSERT INTO lesson_content VALUES(105025,'eindruck',5); INSERT INTO lesson_content VALUES(105026,'deutlich',5); INSERT INTO lesson_content VALUES(105027,'suchtest',5); INSERT INTO lesson_content VALUES(105028,'rauschen',5); INSERT INTO lesson_content VALUES(105029,'deutsche',5); INSERT INTO lesson_content VALUES(105030,'unsicher',5); INSERT INTO lesson_content VALUES(105031,'hindurch',5); INSERT INTO lesson_content VALUES(105032,'rutschte',5); INSERT INTO lesson_content VALUES(105033,'leuchtet',5); INSERT INTO lesson_content VALUES(105034,'nachtruhe',5); INSERT INTO lesson_content VALUES(105035,'unendlich',5); INSERT INTO lesson_content VALUES(105036,'ehrfurcht',5); INSERT INTO lesson_content VALUES(105037,'unsichere',5); INSERT INTO lesson_content VALUES(105038,'neuerlich',5); INSERT INTO lesson_content VALUES(105039,'deutschen',5); INSERT INTO lesson_content VALUES(105040,'deutscher',5); INSERT INTO lesson_content VALUES(105041,'russische',5); INSERT INTO lesson_content VALUES(105042,'deutliche',5); INSERT INTO lesson_content VALUES(105043,'deutsches',5); INSERT INTO lesson_content VALUES(105044,'ausrechnen',5); INSERT INTO lesson_content VALUES(105045,'unterricht',5); INSERT INTO lesson_content VALUES(105046,'unsicheren',5); INSERT INTO lesson_content VALUES(105047,'deutlicher',5); INSERT INTO lesson_content VALUES(105048,'russischen',5); INSERT INTO lesson_content VALUES(105049,'deutlichen',5); INSERT INTO lesson_content VALUES(105050,'freundlich',5); INSERT INTO lesson_content VALUES(105051,'russischer',5); INSERT INTO lesson_content VALUES(105052,'ausreichen',5); INSERT INTO lesson_content VALUES(105053,'kurdischen',5); INSERT INTO lesson_content VALUES(105054,'erfreulich',5); INSERT INTO lesson_content VALUES(105055,'juristisch',5); INSERT INTO lesson_content VALUES(105056,'unterschied',5); INSERT INTO lesson_content VALUES(105057,'erstaunlich',5); INSERT INTO lesson_content VALUES(105058,'freundliche',5); INSERT INTO lesson_content VALUES(105059,'durchdenken',5); INSERT INTO lesson_content VALUES(105060,'ausreichend',5); INSERT INTO lesson_content VALUES(105061,'unterstrich',5); INSERT INTO lesson_content VALUES(105062,'juristische',5); INSERT INTO lesson_content VALUES(105063,'steuerliche',5); INSERT INTO lesson_content VALUES(105064,'freundliches',5); INSERT INTO lesson_content VALUES(105065,'freundlicher',5); INSERT INTO lesson_content VALUES(105066,'unterrichtet',5); INSERT INTO lesson_content VALUES(105067,'juristischen',5); INSERT INTO lesson_content VALUES(105068,'ausreichende',5); INSERT INTO lesson_content VALUES(105069,'freundlichen',5); INSERT INTO lesson_content VALUES(105070,'steuerlichen',5); INSERT INTO lesson_content VALUES(105071,'unterscheiden',5); INSERT INTO lesson_content VALUES(105072,'unterscheidet',5); INSERT INTO lesson_content VALUES(105073,'australischen',5); INSERT INTO lesson_content VALUES(105074,'freundlichkeit',5); INSERT INTO lesson_content VALUES(105075,'aufrechterhalten',5); INSERT INTO lesson_content VALUES(105076,'ausdruck',5); INSERT INTO lesson_content VALUES(105077,'unschuld',5); INSERT INTO lesson_content VALUES(105078,'durchaus',5); INSERT INTO lesson_content VALUES(105079,'aufsuchen',5); INSERT INTO lesson_content VALUES(105080,'untersuche',5); INSERT INTO lesson_content VALUES(105081,'untersucht',5); INSERT INTO lesson_content VALUES(105082,'auftauchen',5); INSERT INTO lesson_content VALUES(105083,'nachschauen',5); INSERT INTO lesson_content VALUES(105084,'lichtscheue',5); INSERT INTO lesson_content VALUES(105085,'untersuchen',5); INSERT INTO lesson_content VALUES(105086,'unaufhrlich',5); INSERT INTO lesson_content VALUES(105087,'herrschsucht',5); INSERT INTO lesson_content VALUES(105088,'heuschrecken',5); INSERT INTO lesson_content VALUES(105089,'untersuchten',5); INSERT INTO lesson_content VALUES(105090,'anschaulichen',5); INSERT INTO lesson_content VALUES(105091,'unaufhrlichen',5); INSERT INTO lesson_content VALUES(105092,'unterschiedlich',5); INSERT INTO lesson_content VALUES(105093,'unterschiedliche',5); INSERT INTO lesson_content VALUES(105094,'unterschiedlichen',5); INSERT INTO lesson_content VALUES(105095,'unterschiedlicher',5); INSERT INTO lesson_content VALUES(105096,'durchschnittlich',5); INSERT INTO lesson_content VALUES(105097,'durchschnittliche',5); INSERT INTO lesson_content VALUES(105098,'durchschnittlichen',5); INSERT INTO lesson_content VALUES(105099,'du',5); INSERT INTO lesson_content VALUES(105100,'ich',5); INSERT INTO lesson_content VALUES(105101,'und',5); INSERT INTO lesson_content VALUES(105102,'tue',5); INSERT INTO lesson_content VALUES(105103,'nur',5); INSERT INTO lesson_content VALUES(105104,'aus',5); INSERT INTO lesson_content VALUES(105105,'uns',5); INSERT INTO lesson_content VALUES(105106,'nun',5); INSERT INTO lesson_content VALUES(105107,'auf',5); INSERT INTO lesson_content VALUES(105108,'tun',5); INSERT INTO lesson_content VALUES(105109,'unruhe',5); INSERT INTO lesson_content VALUES(105110,'tut',5); INSERT INTO lesson_content VALUES(105111,'auftun',5); INSERT INTO lesson_content VALUES(105112,'suchen',5); INSERT INTO lesson_content VALUES(105113,'schuhe',5); INSERT INTO lesson_content VALUES(105114,'schrecklich',5); INSERT INTO lesson_content VALUES(106001,'ALF EIS',6); INSERT INTO lesson_content VALUES(106002,'USA',6); INSERT INTO lesson_content VALUES(106003,'CDU',6); INSERT INTO lesson_content VALUES(106004,'CSU',6); INSERT INTO lesson_content VALUES(106005,'DIE',6); INSERT INTO lesson_content VALUES(106006,'ARD',6); INSERT INTO lesson_content VALUES(106007,'RTL',6); INSERT INTO lesson_content VALUES(106008,'USD',6); INSERT INTO lesson_content VALUES(106009,'SED',6); INSERT INTO lesson_content VALUES(106010,'IRA',6); INSERT INTO lesson_content VALUES(106011,'ADAC',6); INSERT INTO lesson_content VALUES(106012,'EUR',6); INSERT INTO lesson_content VALUES(106013,'UdSSR',6); INSERT INTO lesson_content VALUES(106014,'EU',6); INSERT INTO lesson_content VALUES(106015,'UN',6); INSERT INTO lesson_content VALUES(106016,'CD',6); INSERT INTO lesson_content VALUES(106017,'US',6); INSERT INTO lesson_content VALUES(106018,'FC',6); INSERT INTO lesson_content VALUES(106019,'Du',6); INSERT INTO lesson_content VALUES(106020,'Es',6); INSERT INTO lesson_content VALUES(106021,'In',6); INSERT INTO lesson_content VALUES(106022,'An',6); INSERT INTO lesson_content VALUES(106023,'Da',6); INSERT INTO lesson_content VALUES(106024,'Je',6); INSERT INTO lesson_content VALUES(106025,'Er',6); INSERT INTO lesson_content VALUES(106026,'Sa',6); INSERT INTO lesson_content VALUES(106027,'Ja',6); INSERT INTO lesson_content VALUES(106028,'l',6); INSERT INTO lesson_content VALUES(106029,'Fr',6); INSERT INTO lesson_content VALUES(106030,'Di',6); INSERT INTO lesson_content VALUES(106031,'Dir',6); INSERT INTO lesson_content VALUES(106032,'Und',6); INSERT INTO lesson_content VALUES(106033,'Art',6); INSERT INTO lesson_content VALUES(106034,'Nun',6); INSERT INTO lesson_content VALUES(106035,'Ich',6); INSERT INTO lesson_content VALUES(106036,'Das',6); INSERT INTO lesson_content VALUES(106037,'Nur',6); INSERT INTO lesson_content VALUES(106038,'Sie',6); INSERT INTO lesson_content VALUES(106039,'Der',6); INSERT INTO lesson_content VALUES(106040,'Die',6); INSERT INTO lesson_content VALUES(106041,'Rat',6); INSERT INTO lesson_content VALUES(106042,'Tat',6); INSERT INTO lesson_content VALUES(106043,'Ein',6); INSERT INTO lesson_content VALUES(106044,'Ihr',6); INSERT INTO lesson_content VALUES(106045,'Auf',6); INSERT INTO lesson_content VALUES(106046,'Ist',6); INSERT INTO lesson_content VALUES(106047,'Aus',6); INSERT INTO lesson_content VALUES(106048,'Uhr',6); INSERT INTO lesson_content VALUES(106049,'Als',6); INSERT INTO lesson_content VALUES(106050,'Den',6); INSERT INTO lesson_content VALUES(106051,'Ruf',6); INSERT INTO lesson_content VALUES(106052,'Ehe',6); INSERT INTO lesson_content VALUES(106053,'Hat',6); INSERT INTO lesson_content VALUES(106054,'See',6); INSERT INTO lesson_content VALUES(106055,'Eis',6); INSERT INTO lesson_content VALUES(106056,'Akt',6); INSERT INTO lesson_content VALUES(106057,'Jan',6); INSERT INTO lesson_content VALUES(106058,'All',6); INSERT INTO lesson_content VALUES(106059,'Uni',6); INSERT INTO lesson_content VALUES(106060,'Ali',6); INSERT INTO lesson_content VALUES(106061,'Hut',6); INSERT INTO lesson_content VALUES(106062,'Tal',6); INSERT INTO lesson_content VALUES(106063,'Elf',6); INSERT INTO lesson_content VALUES(106064,'Ach',6); INSERT INTO lesson_content VALUES(106065,'Neu',6); INSERT INTO lesson_content VALUES(106066,'Rad',6); INSERT INTO lesson_content VALUES(106067,'Sir',6); INSERT INTO lesson_content VALUES(106068,'Nie',6); INSERT INTO lesson_content VALUES(106069,'Uns',6); INSERT INTO lesson_content VALUES(106070,'Rau',6); INSERT INTO lesson_content VALUES(106071,'Tee',6); INSERT INTO lesson_content VALUES(106072,'Ude',6); INSERT INTO lesson_content VALUES(106073,'Red',6); INSERT INTO lesson_content VALUES(106074,'Ltd',6); INSERT INTO lesson_content VALUES(106075,'Des',6); INSERT INTO lesson_content VALUES(106076,'Lee',6); INSERT INTO lesson_content VALUES(106077,'Ute',6); INSERT INTO lesson_content VALUES(106078,'Dein',6); INSERT INTO lesson_content VALUES(106079,'Saus',6); INSERT INTO lesson_content VALUES(106080,'Dich',6); INSERT INTO lesson_content VALUES(106081,'Karl',6); INSERT INTO lesson_content VALUES(106082,'Kind',6); INSERT INTO lesson_content VALUES(106083,'Dann',6); INSERT INTO lesson_content VALUES(106084,'Alle',6); INSERT INTO lesson_content VALUES(106085,'Kern',6); INSERT INTO lesson_content VALUES(106086,'Ende',6); INSERT INTO lesson_content VALUES(106087,'Leid',6); INSERT INTO lesson_content VALUES(106088,'Auch',6); INSERT INTO lesson_content VALUES(106089,'Teil',6); INSERT INTO lesson_content VALUES(106090,'Hand',6); INSERT INTO lesson_content VALUES(106091,'Eine',6); INSERT INTO lesson_content VALUES(106092,'Fest',6); INSERT INTO lesson_content VALUES(106093,'Erst',6); INSERT INTO lesson_content VALUES(106094,'Sinn',6); INSERT INTO lesson_content VALUES(106095,'Hals',6); INSERT INTO lesson_content VALUES(106096,'Fall',6); INSERT INTO lesson_content VALUES(106097,'Rede',6); INSERT INTO lesson_content VALUES(106098,'Ruck',6); INSERT INTO lesson_content VALUES(106099,'Nest',6); INSERT INTO lesson_content VALUES(106100,'Luft',6); INSERT INTO lesson_content VALUES(106101,'Fast',6); INSERT INTO lesson_content VALUES(106102,'Hhe',6); INSERT INTO lesson_content VALUES(106103,'Erde',6); INSERT INTO lesson_content VALUES(106104,'Ruhe',6); INSERT INTO lesson_content VALUES(106105,'Hier',6); INSERT INTO lesson_content VALUES(106106,'Tier',6); INSERT INTO lesson_content VALUES(106107,'Denn',6); INSERT INTO lesson_content VALUES(106108,'Lauf',6); INSERT INTO lesson_content VALUES(106109,'Haar',6); INSERT INTO lesson_content VALUES(106110,'Dach',6); INSERT INTO lesson_content VALUES(106111,'Jahr',6); INSERT INTO lesson_content VALUES(106112,'Nach',6); INSERT INTO lesson_content VALUES(106113,'Frau',6); INSERT INTO lesson_content VALUES(106114,'Land',6); INSERT INTO lesson_content VALUES(106115,'Dies',6); INSERT INTO lesson_content VALUES(106116,'Haus',6); INSERT INTO lesson_content VALUES(106117,'Seit',6); INSERT INTO lesson_content VALUES(106118,'Juni',6); INSERT INTO lesson_content VALUES(106119,'Juli',6); INSERT INTO lesson_content VALUES(106120,'Ihre',6); INSERT INTO lesson_content VALUES(106121,'Sein',6); INSERT INTO lesson_content VALUES(106122,'Chef',6); INSERT INTO lesson_content VALUES(106123,'Feld',6); INSERT INTO lesson_content VALUES(106124,'Herr',6); INSERT INTO lesson_content VALUES(106125,'Idee',6); INSERT INTO lesson_content VALUES(106126,'Kln',6); INSERT INTO lesson_content VALUES(106127,'Kein',6); INSERT INTO lesson_content VALUES(106128,'Kurs',6); INSERT INTO lesson_content VALUES(106129,'Neue',6); INSERT INTO lesson_content VALUES(106130,'Rund',6); INSERT INTO lesson_content VALUES(106131,'Drei',6); INSERT INTO lesson_content VALUES(106132,'Nein',6); INSERT INTO lesson_content VALUES(106133,'Laut',6); INSERT INTO lesson_content VALUES(106134,'Hans',6); INSERT INTO lesson_content VALUES(106135,'Kauf',6); INSERT INTO lesson_content VALUES(106136,'Rest',6); INSERT INTO lesson_content VALUES(106137,'Fans',6); INSERT INTO lesson_content VALUES(106138,'Stil',6); INSERT INTO lesson_content VALUES(106139,'Lust',6); INSERT INTO lesson_content VALUES(106140,'Haft',6); INSERT INTO lesson_content VALUES(106141,'Irak',6); INSERT INTO lesson_content VALUES(106142,'Ecke',6); INSERT INTO lesson_content VALUES(106143,'Iran',6); INSERT INTO lesson_content VALUES(106144,'Anna',6); INSERT INTO lesson_content VALUES(106145,'Saal',6); INSERT INTO lesson_content VALUES(106146,'Jede',6); INSERT INTO lesson_content VALUES(106147,'Sind',6); INSERT INTO lesson_content VALUES(106148,'Nase',6); INSERT INTO lesson_content VALUES(106149,'Dank',6); INSERT INTO lesson_content VALUES(106150,'Haut',6); INSERT INTO lesson_content VALUES(106151,'Rand',6); INSERT INTO lesson_content VALUES(106152,'Alte',6); INSERT INTO lesson_content VALUES(106153,'Hund',6); INSERT INTO lesson_content VALUES(106154,'Star',6); INSERT INTO lesson_content VALUES(106155,'Kiel',6); INSERT INTO lesson_content VALUES(106156,'Kurt',6); INSERT INTO lesson_content VALUES(106157,'Etat',6); INSERT INTO lesson_content VALUES(106158,'Ehre',6); INSERT INTO lesson_content VALUES(106159,'Sand',6); INSERT INTO lesson_content VALUES(106160,'Last',6); INSERT INTO lesson_content VALUES(106161,'Tne',6); INSERT INTO lesson_content VALUES(106162,'Kann',6); INSERT INTO lesson_content VALUES(106163,'Test',6); INSERT INTO lesson_content VALUES(106164,'Lied',6); INSERT INTO lesson_content VALUES(106165,'Held',6); INSERT INTO lesson_content VALUES(106166,'Null',6); INSERT INTO lesson_content VALUES(106167,'Dass',6); INSERT INTO lesson_content VALUES(106168,'Ralf',6); INSERT INTO lesson_content VALUES(106169,'Sehr',6); INSERT INTO lesson_content VALUES(106170,'Ufer',6); INSERT INTO lesson_content VALUES(106171,'Knie',6); INSERT INTO lesson_content VALUES(106172,'Dirk',6); INSERT INTO lesson_content VALUES(106173,'Acht',6); INSERT INTO lesson_content VALUES(106174,'Dasa',6); INSERT INTO lesson_content VALUES(106175,'Aids',6); INSERT INTO lesson_content VALUES(106176,'Klar',6); INSERT INTO lesson_content VALUES(106177,'Jens',6); INSERT INTO lesson_content VALUES(106178,'Eier',6); INSERT INTO lesson_content VALUES(106179,'Fach',6); INSERT INTO lesson_content VALUES(106180,'Elke',6); INSERT INTO lesson_content VALUES(106181,'Audi',6); INSERT INTO lesson_content VALUES(106182,'Ruth',6); INSERT INTO lesson_content VALUES(106183,'Lire',6); INSERT INTO lesson_content VALUES(106184,'Flut',6); INSERT INTO lesson_content VALUES(106185,'Kids',6); INSERT INTO lesson_content VALUES(106186,'Neun',6); INSERT INTO lesson_content VALUES(106187,'Ilse',6); INSERT INTO lesson_content VALUES(106188,'Jena',6); INSERT INTO lesson_content VALUES(106189,'Hahn',6); INSERT INTO lesson_content VALUES(106190,'Heft',6); INSERT INTO lesson_content VALUES(106191,'Erna',6); INSERT INTO lesson_content VALUES(106192,'Eher',6); INSERT INTO lesson_content VALUES(106193,'Funk',6); INSERT INTO lesson_content VALUES(106194,'Stau',6); INSERT INTO lesson_content VALUES(106195,'Hill',6); INSERT INTO lesson_content VALUES(106196,'Seen',6); INSERT INTO lesson_content VALUES(106197,'Fund',6); INSERT INTO lesson_content VALUES(106198,'Reis',6); INSERT INTO lesson_content VALUES(106199,'Halt',6); INSERT INTO lesson_content VALUES(106200,'Heer',6); INSERT INTO lesson_content VALUES(106201,'Anne',6); INSERT INTO lesson_content VALUES(106202,'Euch',6); INSERT INTO lesson_content VALUES(106203,'Akte',6); INSERT INTO lesson_content VALUES(106204,'Eins',6); INSERT INTO lesson_content VALUES(106205,'Anja',6); INSERT INTO lesson_content VALUES(106206,'Jean',6); INSERT INTO lesson_content VALUES(106207,'Sich',6); INSERT INTO lesson_content VALUES(106208,'Carl',6); INSERT INTO lesson_content VALUES(106209,'Tief',6); INSERT INTO lesson_content VALUES(107001,'Herr G. sagt: ggf. gegen Gene.',7); INSERT INTO lesson_content VALUES(107002,'Er rhrte: Das ist die Gelegenheit.',7); INSERT INTO lesson_content VALUES(107003,'Es geht: Gunst und Gnade.',7); INSERT INTO lesson_content VALUES(107004,'Grund der Strung: defekte Leitung.',7); INSERT INTO lesson_content VALUES(107005,'Sie sagte: Genau das ist es.',7); INSERT INTO lesson_content VALUES(107006,'Steffi Graf sagt:',7); INSERT INTO lesson_content VALUES(107007,'Die Gase duften gut.',7); INSERT INTO lesson_content VALUES(107008,'Danke ihr guten Gtter.',7); INSERT INTO lesson_content VALUES(107009,'Gerhard Schrder sagte Ja.',7); INSERT INTO lesson_content VALUES(107010,'Er rechtfertigte: Er hat Schaden ertragen.',7); INSERT INTO lesson_content VALUES(107011,'Herr Gans ging angeln.',7); INSERT INTO lesson_content VALUES(107012,'Es geht uns gut Frau Gierig.',7); INSERT INTO lesson_content VALUES(107013,'Eines Tages:',7); INSERT INTO lesson_content VALUES(107014,'In guter Erinnerung.',7); INSERT INTO lesson_content VALUES(107015,'In der Regel.',7); INSERT INTO lesson_content VALUES(107016,'Das Geld ist in Gefahr.',7); INSERT INTO lesson_content VALUES(107017,'Angst liegt in der Luft.',7); INSERT INTO lesson_content VALUES(107018,'Die Augen sind nun gesund.',7); INSERT INTO lesson_content VALUES(107019,'Ein Grad Celsius.',7); INSERT INTO lesson_content VALUES(107020,'Da lag Deutschland.',7); INSERT INTO lesson_content VALUES(107021,'Er hat geschlafen.',7); INSERT INTO lesson_content VALUES(107022,'Das ist die Krnung.',7); INSERT INTO lesson_content VALUES(107023,'Ich reite die Strecke tagelang.',7); INSERT INTO lesson_content VALUES(107024,'Es ist alles fertig.',7); INSERT INTO lesson_content VALUES(107025,'Er hielt sein Gesicht.',7); INSERT INTO lesson_content VALUES(107026,'Es ist eine unruhige und innige Nacht.',7); INSERT INTO lesson_content VALUES(107027,'Er schlich niedergeschlagen nach Hause.',7); INSERT INTO lesson_content VALUES(107028,'Allerdings liegt der Eingang rechts hinten.',7); INSERT INTO lesson_content VALUES(107029,'Es stand nicht dran.',7); INSERT INTO lesson_content VALUES(107030,'Das Heulen hrte auf.',7); INSERT INTO lesson_content VALUES(107031,'Die Ferien nahten heran.',7); INSERT INTO lesson_content VALUES(108001,'Oma und Momo mogeln.',8); INSERT INTO lesson_content VALUES(108002,'Oma machte einen Monat lang Mhren.',8); INSERT INTO lesson_content VALUES(108003,'Der Mann eilte mutig aus dem Ort.',8); INSERT INTO lesson_content VALUES(108004,'Mutter leidet so ohne Otto.',8); INSERT INTO lesson_content VALUES(108005,'Morgen kommt Helmut Kohl.',8); INSERT INTO lesson_content VALUES(108006,'Oder die Macht der Mutter.',8); INSERT INTO lesson_content VALUES(108007,'Im Grunde stimmt das junger Mann.',8); INSERT INTO lesson_content VALUES(108008,'Auf dem Kirchhof.',8); INSERT INTO lesson_content VALUES(108009,'Sogar Familien sind auf der Gegendemonstration.',8); INSERT INTO lesson_content VALUES(108010,'Michael Schumacher ist die Nummer eins.',8); INSERT INTO lesson_content VALUES(108011,'Das ist ohnehin mal sehr frmlich.',8); INSERT INTO lesson_content VALUES(108012,'Angela Merkel kontert:',8); INSERT INTO lesson_content VALUES(108013,'Dann kamen die Masern.',8); INSERT INTO lesson_content VALUES(108014,'Die Gedanken ohne oder nach dem Schlaf.',8); INSERT INTO lesson_content VALUES(108015,'Endlose Fleischmassen hingen an ihm.',8); INSERT INTO lesson_content VALUES(108016,'Das ist Oskar Lafontaine:',8); INSERT INTO lesson_content VALUES(108017,'Nicht einmal in San Francisco.',8); INSERT INTO lesson_content VALUES(108018,'Die Anforderungen an das Fundament.',8); INSERT INTO lesson_content VALUES(108019,'Man gnnt sich ja sonst nichts.',8); INSERT INTO lesson_content VALUES(108020,'Auch schon in der ehemaligen DDR.',8); INSERT INTO lesson_content VALUES(108021,'Ich fahre nach Frankfurt am Main.',8); INSERT INTO lesson_content VALUES(108022,'Seine Sorgen und Nte nahm er in Kauf.',8); INSERT INTO lesson_content VALUES(108023,'Dummheit mge angenehm sein.',8); INSERT INTO lesson_content VALUES(108024,'Und dann kam die Altstimme.',8); INSERT INTO lesson_content VALUES(108025,'Der Ehemann ist im Stress.',8); INSERT INTO lesson_content VALUES(108026,'Manche Menschen stehen auf der Mauer.',8); INSERT INTO lesson_content VALUES(108027,'Unter anderem.',8); INSERT INTO lesson_content VALUES(108028,'Das ist mal nett.',8); INSERT INTO lesson_content VALUES(108029,'Es ist so ruhig und leer.',8); INSERT INTO lesson_content VALUES(108030,'Sie machten ein Feuer an.',8); INSERT INTO lesson_content VALUES(108031,'Er rannte auf den Schulhof.',8); INSERT INTO lesson_content VALUES(108032,'Darum handelte es sich auch nicht.',8); INSERT INTO lesson_content VALUES(108033,'Und an Mahnungen hat es nicht gefehlt.',8); INSERT INTO lesson_content VALUES(108034,'Los Angeles liegt in den USA.',8); INSERT INTO lesson_content VALUES(108035,'Den Jungen stand der Atem still.',8); INSERT INTO lesson_content VALUES(109001,'Wir bewegen den BMW.',9); INSERT INTO lesson_content VALUES(109002,'Wir waren in Bad Homburg.',9); INSERT INTO lesson_content VALUES(109003,'Wir wollen nach Buenos Aires.',9); INSERT INTO lesson_content VALUES(109004,'Er ist bei Werder Bremen Mitglied.',9); INSERT INTO lesson_content VALUES(109005,'Er hat Augenbrauen wie Theo Waigel.',9); INSERT INTO lesson_content VALUES(109006,'Aber mit der Liebe war es etwas geworden.',9); INSERT INTO lesson_content VALUES(109007,'Die Kiste war bald ausgegraben.',9); INSERT INTO lesson_content VALUES(109008,'Bitte wie gewhnlich an die alte Adresse.',9); INSERT INTO lesson_content VALUES(109009,'Er war im Osten und im Westen.',9); INSERT INTO lesson_content VALUES(109010,'Und immer wieder Bill Clinton.',9); INSERT INTO lesson_content VALUES(109011,'Dort war er in Wirklichkeit.',9); INSERT INTO lesson_content VALUES(109012,'Und Borussia Dortmund gewann.',9); INSERT INTO lesson_content VALUES(109013,'Aber der Bau ist eben nicht nur ein Rettungsloch.',9); INSERT INTO lesson_content VALUES(109014,'Ich habe wohl sehr lange geschlafen.',9); INSERT INTO lesson_content VALUES(109015,'Nur deshalb habe ich mich gegen die Annahme gewehrt.',9); INSERT INTO lesson_content VALUES(109016,'Ein Irrtum war nicht mehr denkbar.',9); INSERT INTO lesson_content VALUES(109017,'Auf den ersten Blick war er schn.',9); INSERT INTO lesson_content VALUES(109018,'Die Chinesische Mauer ist an ihrer nrdlichsten Stelle beendet worden.',9); INSERT INTO lesson_content VALUES(109019,'Das wollen wir nicht hoffen.',9); INSERT INTO lesson_content VALUES(109020,'Mit Blick auf das Bankkonto.',9); INSERT INTO lesson_content VALUES(109021,'Und da war es aus.',9); INSERT INTO lesson_content VALUES(109022,'Es war Borussia Dortmund.',9); INSERT INTO lesson_content VALUES(109023,'Die Wall Street meldet Wachstum.',9); INSERT INTO lesson_content VALUES(109024,'Die Welt ist klein.',9); INSERT INTO lesson_content VALUES(109025,'Wenigstens schien es mir so.',9); INSERT INTO lesson_content VALUES(109026,'Wenigstens horchte ich.',9); INSERT INTO lesson_content VALUES(109027,'Die Gefahr war dringend.',9); INSERT INTO lesson_content VALUES(109028,'Marion wurde immer rter.',9); INSERT INTO lesson_content VALUES(109029,'Stillschweigen herrschte.',9); INSERT INTO lesson_content VALUES(109030,'Susanne schielte auf Bernd.',9); INSERT INTO lesson_content VALUES(109031,'Alfred trottete nebenher.',9); INSERT INTO lesson_content VALUES(109032,'Ein sehr kleiner Bengel stand auf.',9); INSERT INTO lesson_content VALUES(109033,'Ein schwaches Kichern entstand.',9); INSERT INTO lesson_content VALUES(109034,'Sie schwuren die schrecklichsten Eide.',9); INSERT INTO lesson_content VALUES(109035,'Er erbleichte und senkte die Augen.',9); INSERT INTO lesson_content VALUES(109036,'In Deinem Lehnstuhl regiertest Du die Welt.',9); INSERT INTO lesson_content VALUES(109037,'Ich glaubte daher den Klagen nicht und suchte irgendeine geheime Absicht hinter ihnen.',9); INSERT INTO lesson_content VALUES(110001,'Der Zoll zollte.',10); INSERT INTO lesson_content VALUES(110002,'Irgendein Zahn, z. B. den einer Ziege.',10); INSERT INTO lesson_content VALUES(110003,'Zum einen finde ich es bld, zum anderen habe ich nichts damit zu tun.',10); INSERT INTO lesson_content VALUES(110004,'Zeit, Zug, Zeiger, Ziege; aber es zieht.',10); INSERT INTO lesson_content VALUES(110005,'Sie war zackig, im Gegensatz zu der lahmen Ziege.',10); INSERT INTO lesson_content VALUES(110006,'Der Zahnarzt zog den Zahn.',10); INSERT INTO lesson_content VALUES(110007,'Naja, zur Zeit ziehe ich um.',10); INSERT INTO lesson_content VALUES(110008,'Zur Zeit nichts zu tun.',10); INSERT INTO lesson_content VALUES(110009,'In letzter Zeit zeigt sich Schulze selten.',10); INSERT INTO lesson_content VALUES(110010,'Wohl, es wird weiterziehen.',10); INSERT INTO lesson_content VALUES(110011,'Das wird jetzt anders werden, hoffe ich.',10); INSERT INTO lesson_content VALUES(110012,'In erster Linie Zigarren und Zigaretten in den siebziger Jahren.',10); INSERT INTO lesson_content VALUES(110013,'Sie waren doch alle frhlicher, frischer, ungezwungener, leichtlebiger und weniger streng als du.',10); INSERT INTO lesson_content VALUES(110014,'Wenn ich in meiner Art in der Erde kratze und scharre, ist es doch ganz anders anzuhren.',10); INSERT INTO lesson_content VALUES(110015,'Es war Kult, nicht nur in den achtziger Jahren.',10); INSERT INTO lesson_content VALUES(110016,'Lange horchte ich ihm noch in die Stille nach, ehe ich wieder zu arbeiten begann.',10); INSERT INTO lesson_content VALUES(110017,'Man konnte bei ihr zwar immer Schutz finden, doch nur in Beziehung zu dir.',10); INSERT INTO lesson_content VALUES(110018,'Aber so war seine ganze Erziehung.',10); INSERT INTO lesson_content VALUES(110019,'Na, meinetwegen.',10); INSERT INTO lesson_content VALUES(110020,'Das Fenster ging auf;',10); INSERT INTO lesson_content VALUES(110021,'Setz deinen Hut auf.',10); INSERT INTO lesson_content VALUES(110022,'Aber dazu taugte ich nicht.',10); INSERT INTO lesson_content VALUES(110023,'Jim begann zu schwanken.',10); INSERT INTO lesson_content VALUES(110024,'Sie zogen sich wieder an.',10); INSERT INTO lesson_content VALUES(110025,'Ja, das sagen sie immer.',10); INSERT INTO lesson_content VALUES(110026,'Und er war es in der Tat;',10); INSERT INTO lesson_content VALUES(110027,'Und alles, alles still und leer.',10); INSERT INTO lesson_content VALUES(110028,'Der Indianer runzelte die Stirn.',10); INSERT INTO lesson_content VALUES(110029,'Und so weiter, und so weiter.',10); INSERT INTO lesson_content VALUES(110030,'Meinst du das wirklich, dann sind wir einig.',10); INSERT INTO lesson_content VALUES(110031,'Das bezog sich auf Gedanken so gut wie auf Menschen.',10); INSERT INTO lesson_content VALUES(110032,'Selten war das allerdings, aber es war wunderbar.',10); INSERT INTO lesson_content VALUES(110033,'Aber dieser Scherz ist in gewissem Sinn keiner.',10); INSERT INTO lesson_content VALUES(110034,'Die Schwestern gingen nur zum Teil mit mir.',10); INSERT INTO lesson_content VALUES(110035,'Nun, einen solchen Gegner habe ich nicht erwarten knnen.',10); INSERT INTO lesson_content VALUES(110036,'Ich denke, sie werden diese Nacht den alten Huber holen.',10); INSERT INTO lesson_content VALUES(111001,'Vor Papa popelte Viktor versehentlich.',11); INSERT INTO lesson_content VALUES(111002,'Vor allem St. Pauli versagte.',11); INSERT INTO lesson_content VALUES(111003,'Es passierte am Potsdamer Platz.',11); INSERT INTO lesson_content VALUES(111004,'Das Opfer, ein Papagei, lag dabei.',11); INSERT INTO lesson_content VALUES(111005,'Mein Partner ist vor Ort.',11); INSERT INTO lesson_content VALUES(111006,'Der Verein VfB Stuttgart ist nach wie vor vorne mit dabei.',11); INSERT INTO lesson_content VALUES(111007,'Ich verlor das Vertrauen zu eigenem Tun.',11); INSERT INTO lesson_content VALUES(111008,'Viel Zeit, viel Zeit, die besser verwendet werden knnte, kostet mich das kleine Volk.',11); INSERT INTO lesson_content VALUES(111009,'Sie verfolgte ihn am Prenzlauer Berg.',11); INSERT INTO lesson_content VALUES(111010,'Er rappelte sich auf.',11); INSERT INTO lesson_content VALUES(111011,'Sie fahren nach Tel Aviv.',11); INSERT INTO lesson_content VALUES(111012,'Das hast du davon.',11); INSERT INTO lesson_content VALUES(111013,'Ein wundervoller Mann.',11); INSERT INTO lesson_content VALUES(111014,'Pfui, ich hasse sie;',11); INSERT INTO lesson_content VALUES(111015,'Es spricht manches dagegen.',11); INSERT INTO lesson_content VALUES(111016,'Sie war keine Prinzessin.',11); INSERT INTO lesson_content VALUES(111017,'Es steht in der Verfassung der Vereinigten Staaten.',11); INSERT INTO lesson_content VALUES(111018,'Sie sprachen ihre Gebete.',11); INSERT INTO lesson_content VALUES(111019,'Zum Beispiel in der Bundesrepublik Deutschland.',11); INSERT INTO lesson_content VALUES(111020,'Sie hob stolz den Kopf.',11); INSERT INTO lesson_content VALUES(111021,'Du erinnerst Dich vielleicht auch daran.',11); INSERT INTO lesson_content VALUES(111022,'Aber vielleicht doch nicht gar so sehr.',11); INSERT INTO lesson_content VALUES(111023,'Ich dringe bis hinauf vor und horche.',11); INSERT INTO lesson_content VALUES(111024,'Er drehte den Kopf zur Seite.',11); INSERT INTO lesson_content VALUES(111025,'Dann aber empfand sie doch Reue.',11); INSERT INTO lesson_content VALUES(111026,'Der Pinsel strich und strich.',11); INSERT INTO lesson_content VALUES(111027,'Der Herr Verteidiger hat das Wort.',11); INSERT INTO lesson_content VALUES(111028,'Er sprang und tollte nicht mehr herum.',11); INSERT INTO lesson_content VALUES(111029,'Dem entsprach weiter deine geistige Oberherrschaft.',11); INSERT INTO lesson_content VALUES(111030,'Ich rede hier nicht von irgendwelchen hohen Gedanken, sondern von jedem kleinen Unternehmen der Kinderzeit.',11); INSERT INTO lesson_content VALUES(111031,'Von allen Seiten her kam ich in Deine Schuld.',11); INSERT INTO lesson_content VALUES(111032,'Die Mauer war doch, wie allgemein verbreitet wird und bekannt ist, zum Schutze gegen die Nordvlker gedacht.',11); INSERT INTO lesson_content VALUES(111033,'Aber wichtig oder unwichtig, wie sehr ich auch suche, ich finde nichts, oder vielmehr ich finde zuviel.',11); INSERT INTO lesson_content VALUES(111034,'Hier an der Moosdecke ist vielleicht jetzt die einzige Stelle an meinem Bau, wo ich stundenlang vergebens horchen kann.',11); INSERT INTO lesson_content VALUES(111035,'Da stand sie schon mit den Koffern vor ihrem Haus.',11); INSERT INTO lesson_content VALUES(112001,'ber nderungen das Glck verstrken.',12); INSERT INTO lesson_content VALUES(112002,'Fr die Bundeslnder ist es eine nderung.',12); INSERT INTO lesson_content VALUES(112003,'Fr sterreicher nderte sich alles.',12); INSERT INTO lesson_content VALUES(112004,'Darber hinaus wre es mglich zu flten.',12); INSERT INTO lesson_content VALUES(112005,'brigens fahre ich nchste Woche in Urlaub.',12); INSERT INTO lesson_content VALUES(112006,'Damals und berall htte ich die Aufmunterung gebraucht.',12); INSERT INTO lesson_content VALUES(112007,'Es ist berhaupt ein merkwrdiger Irrtum, wenn du glaubst, ich htte mich dir nie gefgt.',12); INSERT INTO lesson_content VALUES(112008,'Am nchsten der Mutter stehend, fgte sie sich dir auch hnlich, ohne viel Mhe und Schaden.',12); INSERT INTO lesson_content VALUES(112009,'Im brigen suche ich den Plan des Tieres zu entrtseln.',12); INSERT INTO lesson_content VALUES(112010,'brigens besteht zwischen uns dieser Unterschied heute noch hnlich.',12); INSERT INTO lesson_content VALUES(112011,'Das war fr mich als Kind nicht einmal so blendend wie spter fr den heranwachsenden jungen Menschen.',12); INSERT INTO lesson_content VALUES(112012,'Wie oft hat sich das und hnliches wiederholen mssen, wie wenig hast du im Tatschlichen dadurch erreicht.',12); INSERT INTO lesson_content VALUES(112013,'Auch du hast brigens, entsprechend Deiner hnlichen Lage mir gegenber, eine Art Gegenwehr versucht.',12); INSERT INTO lesson_content VALUES(112014,'Wie kann aber eine Mauer schtzen, die nicht zusammenhngend gebaut ist.',12); INSERT INTO lesson_content VALUES(112015,'In dieser Weise bewegten sich nicht die berlegungen, aber das Gefhl des Kindes.',12); INSERT INTO lesson_content VALUES(112016,'Zu solchen Zeiten legte man sich hin und weinte vor Glck und weint jetzt wieder, whrend man es schreibt.',12); INSERT INTO lesson_content VALUES(112017,'Auch schien es mir fr meine Fhigkeiten ganz unerschwinglich, da es, wie du sagtest, selbst die Deinigen verbrauchte.',12); INSERT INTO lesson_content VALUES(112018,'Rcksichtslos haben wir auf sie eingehmmert, du von Deiner Seite, wir von unserer.',12); INSERT INTO lesson_content VALUES(112019,'Ja, eine solche Mauer kann nicht nur nicht schtzen, der Bau selbst ist in fortwhrender Gefahr.',12); INSERT INTO lesson_content VALUES(112020,'Es ist eine neue Welt, die neue Krfte gibt, und was oben Mdigkeit ist, gilt hier nicht als solche.',12); INSERT INTO lesson_content VALUES(112021,'Im brigen geben wir grnes Licht.',12); INSERT INTO lesson_content VALUES(112022,'Mglich wre es.',12); INSERT INTO lesson_content VALUES(112023,'Zuerst das Geschft.',12); INSERT INTO lesson_content VALUES(112024,'Die Prfung begann.',12); INSERT INTO lesson_content VALUES(112025,'Lieber hielt ich mich ans Tatschliche und Fortwhrende.',12); INSERT INTO lesson_content VALUES(112026,'Von Sdosten und Sdwesten wurde der Bau herangefhrt und hier vereinigt.',12); INSERT INTO lesson_content VALUES(112027,'Er zgerte nun nicht lnger.',12); INSERT INTO lesson_content VALUES(112028,'Alles Dank der Europischen Union.',12); INSERT INTO lesson_content VALUES(112029,'Essig durfte man nicht schlrfen, du ja.',12); INSERT INTO lesson_content VALUES(112030,'Ich war unbestndig, zweifelhaft.',12); INSERT INTO lesson_content VALUES(112031,'Ich werde nun meine Methode ndern.',12); INSERT INTO lesson_content VALUES(112032,'Ja, im Mrchen geht alles im Fluge und zu den Mrchen gehrt auch dieser Trost.',12); INSERT INTO lesson_content VALUES(112033,'Ich lasse von dieser Selbsttuschung ab.',12); INSERT INTO lesson_content VALUES(112034,'Und sie schlief lchelnd wieder ein.',12); INSERT INTO lesson_content VALUES(112035,'Und er machte sich nochmal darber.',12); INSERT INTO lesson_content VALUES(112036,'Das Mdchen begann zu heulen.',12); INSERT INTO lesson_content VALUES(112037,'Sie allein htte es nie gemerkt.',12); INSERT INTO lesson_content VALUES(112038,'Dunkel und strmisch war die Nacht.',12); INSERT INTO lesson_content VALUES(112039,'Allmhlich tobte sich der Sturm aus.',12); INSERT INTO lesson_content VALUES(112040,'Peter nahm seine Prgel in Empfang.',12); INSERT INTO lesson_content VALUES(112041,'Im Gotteshause wurde nicht geflstert.',12); INSERT INTO lesson_content VALUES(112042,'Dann kam ein Haufen Buben und Mdel.',12); INSERT INTO lesson_content VALUES(112043,'In fnf Minuten war er angekleidet.',12); INSERT INTO lesson_content VALUES(112044,'Aber ebenso gnzlich schuldlos bin auch ich.',12); INSERT INTO lesson_content VALUES(112045,'Das ist merkwrdig, ich sehe hier auch nicht ganz klar.',12); INSERT INTO lesson_content VALUES(112046,'Deine Meinung war richtig, jede andere war verrckt, berspannt, meschugge, nicht normal.',12); INSERT INTO lesson_content VALUES(112047,'Das ist natrlich kein Vorwurf, nur Feststellung einer Tatsache.',12); INSERT INTO lesson_content VALUES(112048,'Du hast mir aber schon frh das Wort verboten.',12); INSERT INTO lesson_content VALUES(112049,'Im Gegenteil: Htte ich dir weniger gefolgt, du wrest sicher viel zufriedener mit mir.',12); INSERT INTO lesson_content VALUES(112050,'Es ist, wie wenn einer gehngt werden soll.',12); INSERT INTO lesson_content VALUES(112051,'Am glcklichsten in ihrer Stellung zu dir war Valli.',12); INSERT INTO lesson_content VALUES(112052,'Was kmmert mich die Gefahr jetzt, da ich bei euch bin.',12); INSERT INTO lesson_content VALUES(112053,'Nun aber bohrten sie also auch in den Gngen.',12); INSERT INTO lesson_content VALUES(112054,'Der neue vernnftige Plan lockt mich und lockt mich nicht.',12); INSERT INTO lesson_content VALUES(112055,'Und noch weitere unntze Entdeckungen mache ich.',12); INSERT INTO lesson_content VALUES(112056,'Ich verstehe pltzlich meinen frheren Plan nicht.',12); INSERT INTO lesson_content VALUES(112057,'Jung wie ich war, wurde ich dadurch mehr neugierig als ngstlich.',12); INSERT INTO lesson_content VALUES(112058,'Ich war gespannt, aber sonst khl und ruhig.',12); INSERT INTO lesson_content VALUES(112059,'Ich schttle den Kopf, ich habe noch keine.',12); INSERT INTO lesson_content VALUES(112060,'Nicht anders drfte es sich mit der Religion verhalten.',12); INSERT INTO lesson_content VALUES(112061,'Man sah nur einen flachen, bewaldeten Uferstreifen und Huser.',12); INSERT INTO lesson_content VALUES(112062,'Die Schweden sprechen anders deutsch als die Dnen.',12); INSERT INTO lesson_content VALUES(112063,'In Zukunft zahlt er zgig; einhundert Zwickel.',12); INSERT INTO lesson_content VALUES(112064,'Er nahm ohne einen einzigen Schrei die saftigsten Prgel entgegen.',12); INSERT INTO lesson_content VALUES(112065,'Irgendeine Ahnung dessen, was ich sagen will, hast du merkwrdigerweise.',12); INSERT INTO lesson_content VALUES(112066,'Das Schimpfen verstrktest du mit Drohen, und das galt nun auch schon mir.',12); INSERT INTO lesson_content VALUES(112067,'Wird er wirklich gehenkt, dann ist er tot und es ist alles vorber.',12); INSERT INTO lesson_content VALUES(112068,'Deshalb konnte ich dir fr alles nur bettlerhaft dankbar sein, durch die Tat nicht.',12); INSERT INTO lesson_content VALUES(112069,'Trotzdem konnte der Bau wohl nicht anders ausgefhrt werden, als es geschehen ist.',12); INSERT INTO lesson_content VALUES(112070,'Ich gehe deshalb den Gang abwrts bis zum Burgplatz und beginne dort zu horchen.',12); INSERT INTO lesson_content VALUES(112071,'Auch zum Burgplatz gehe ich nicht, um dort irgendeinen Plan auszufhren.',12); INSERT INTO lesson_content VALUES(112072,'Dieses letztere ist wahrscheinlich der einzige ausfhrbare Plan, den ich habe.',12); INSERT INTO lesson_content VALUES(113001,'Die Qualle heit Aqua? Nein.',13); INSERT INTO lesson_content VALUES(113002,'Machst du Quatsch? Ist das Spa?',13); INSERT INTO lesson_content VALUES(113003,'Quietscht es regelmig?',13); INSERT INTO lesson_content VALUES(113004,'Anschlieend qulte er sich.',13); INSERT INTO lesson_content VALUES(113005,'Oder hie der Fluss anders?',13); INSERT INTO lesson_content VALUES(113006,'Ist dieses Vorgehen gem dem Regelwerk?',13); INSERT INTO lesson_content VALUES(113007,'Machte die Prinzessin groe Kulleraugen?',13); INSERT INTO lesson_content VALUES(113008,'Es war wohl ziemlich hei in der Schule?',13); INSERT INTO lesson_content VALUES(113009,'Am Fue des Berges kommt die Quelle zum Versiegen.',13); INSERT INTO lesson_content VALUES(113010,'Se Quarkspeisen esse ich fr mein Leben gern.',13); INSERT INTO lesson_content VALUES(113011,'Wo denn?',13); INSERT INTO lesson_content VALUES(113012,'Das uerst se Kind sa spaend da.',13); INSERT INTO lesson_content VALUES(113013,'Hpfen die?',13); INSERT INTO lesson_content VALUES(113014,'Was ist das?',13); INSERT INTO lesson_content VALUES(113015,'Mchtest du?',13); INSERT INTO lesson_content VALUES(113016,'Ja, ich wei.',13); INSERT INTO lesson_content VALUES(113017,'Was ist es denn?',13); INSERT INTO lesson_content VALUES(113018,'Warum denn kssen?',13); INSERT INTO lesson_content VALUES(113019,'Was denn, Oliver?',13); INSERT INTO lesson_content VALUES(113020,'Der Teig quillt ber.',13); INSERT INTO lesson_content VALUES(113021,'Was ist kein Traum?',13); INSERT INTO lesson_content VALUES(113022,'Wo wollen wir graben?',13); INSERT INTO lesson_content VALUES(113023,'Wer hindert dich denn?',13); INSERT INTO lesson_content VALUES(113024,'Er a und a, es war wirklich nicht schn anzusehen.',13); INSERT INTO lesson_content VALUES(113025,'Sie hat sich den Fu gestoen, daher geht sie heute nicht zum Fuballtraining.',13); INSERT INTO lesson_content VALUES(113026,'Was willst du dafr haben?',13); INSERT INTO lesson_content VALUES(113027,'Ist Boris Becker wahnsinnig?',13); INSERT INTO lesson_content VALUES(113028,'Unter dir lag schlielich am meisten.',13); INSERT INTO lesson_content VALUES(113029,'Man wurde gewissermaen schon bestraft.',13); INSERT INTO lesson_content VALUES(113030,'Aber im brigen, was ist denn geschehen?',13); INSERT INTO lesson_content VALUES(113031,'Htte ich es denn sonst jemals geduldet?',13); INSERT INTO lesson_content VALUES(113032,'Woher hattest du den blauen Zettel?',13); INSERT INTO lesson_content VALUES(113033,'Gehst du zum Essen nach Haus?',13); INSERT INTO lesson_content VALUES(113034,'Na, ist das denn keine Arbeit?',13); INSERT INTO lesson_content VALUES(113035,'Bertram sa auf dem Rande eines Bootes.',13); INSERT INTO lesson_content VALUES(113036,'Die Jungen vergaen alle Angst.',13); INSERT INTO lesson_content VALUES(113037,'Dann stampfte sie mit ihrem kleinen Fu.',13); INSERT INTO lesson_content VALUES(113038,'Die Ausreier kehrten vergngt zurck.',13); INSERT INTO lesson_content VALUES(113039,'Ich war ja schon niedergedrckt durch Deine bloe Krperlichkeit.',13); INSERT INTO lesson_content VALUES(113040,'Ich mager, schwach, schmal, du stark, gro, breit.',13); INSERT INTO lesson_content VALUES(113041,'Knochen durfte man nicht zerreien, du ja.',13); INSERT INTO lesson_content VALUES(113042,'Das war wieder Vergrerung des Schuldbewusstseins.',13); INSERT INTO lesson_content VALUES(113043,'Und je hher die Leistung, desto grer die Anforderungen.',13); INSERT INTO lesson_content VALUES(113044,'Wie gefllt Ihnen unser neuer Verlagskatalog?',13); INSERT INTO lesson_content VALUES(113045,'Hattest du nicht Lust, zum Schwimmen zu gehen?',13); INSERT INTO lesson_content VALUES(113046,'Ich konnte, was du gabst, genieen, aber nur in Beschmung, Mdigkeit, Schwche, Schuldbewusstsein.',13); INSERT INTO lesson_content VALUES(113047,'Nur in diesem Zustand, ausschlielich in diesem Zustand, kann ich diese Sache ausfhren.',13); INSERT INTO lesson_content VALUES(113048,'Nun ist es keine Arbeit mehr, nun rollt und fliet das Ganze fast von selbst hinab.',13); INSERT INTO lesson_content VALUES(113049,'Es gelingt, aber mir gelingt es nicht mich loszureien, ich bleibe hier in tiefem Schlaf.',13); INSERT INTO lesson_content VALUES(113050,'Als ich Dein verrutes Gesicht sehe, wird mir erst die Gefahr bewusst.',13); INSERT INTO lesson_content VALUES(113051,'In beider Hinsicht wird entscheidend sein, ob und was das Tier von mir wei.',13); INSERT INTO lesson_content VALUES(114001,'Felix, sexy, anonym, Xylophon.',14); INSERT INTO lesson_content VALUES(114002,'Xylophon spielen ist schwer - ich lerne es fix.',14); INSERT INTO lesson_content VALUES(114003,'Wie Lwy - auch wy genannt - exmatrikuliert wurde.',14); INSERT INTO lesson_content VALUES(114004,'New York - groartig;',14); INSERT INTO lesson_content VALUES(114005,'Seine Ex-Freundin verliebt sich in ihren Ex-Freund.',14); INSERT INTO lesson_content VALUES(114006,'Sie hatte ein sexy Kleid an.',14); INSERT INTO lesson_content VALUES(114007,'Das Saxophon zischt nur - es ist verflixt.',14); INSERT INTO lesson_content VALUES(114008,'Systematisch explodiert alles.',14); INSERT INTO lesson_content VALUES(114009,'Expressdienst im In- und Ausland.',14); INSERT INTO lesson_content VALUES(114010,'New York ist eine verflixte Stadt.',14); INSERT INTO lesson_content VALUES(114011,'Die Experten von Bayern Mnchen.',14); INSERT INTO lesson_content VALUES(114012,'Der DAX-Wert stieg um zwlf Punkte.',14); INSERT INTO lesson_content VALUES(114013,'Xavier und die anderen waren exzellent.',14); INSERT INTO lesson_content VALUES(114014,'Es waren die Tyrannen mit xten und Speeren.',14); INSERT INTO lesson_content VALUES(114015,'Das Experiment mit Polyesterfasern glckte.',14); INSERT INTO lesson_content VALUES(114016,'Axiome liefern fr groe Systeme Vorhersagen.',14); INSERT INTO lesson_content VALUES(114017,'Methan/Ethan/Propan/Truthahn',14); INSERT INTO lesson_content VALUES(114018,'Wo ist Jimmy?',14); INSERT INTO lesson_content VALUES(114019,'Nicht nur in Bayern.',14); INSERT INTO lesson_content VALUES(114020,'Es ist wie verhext.',14); INSERT INTO lesson_content VALUES(114021,'Verflixt und zugenht.',14); INSERT INTO lesson_content VALUES(114022,'Eine Hexe namens Lili?',14); INSERT INTO lesson_content VALUES(114023,'Er war gnzlich anonym.',14); INSERT INTO lesson_content VALUES(114024,'Wo steht denn der Index?',14); INSERT INTO lesson_content VALUES(114025,'Myriaden von Eidechsen.',14); INSERT INTO lesson_content VALUES(114026,'Manchmal - nicht immer.',14); INSERT INTO lesson_content VALUES(114027,'Tausend Yen kostete die Vase.',14); INSERT INTO lesson_content VALUES(114028,'Er hatte aber leider Syphilis.',14); INSERT INTO lesson_content VALUES(114029,'Olympische Spiele sind groartig.',14); INSERT INTO lesson_content VALUES(114030,'Beim Satan - der Stich sitzt.',14); INSERT INTO lesson_content VALUES(114031,'Und nicht nur schimpfen, auch sonstige Tyrannei.',14); INSERT INTO lesson_content VALUES(114032,'Lydia pickte auf ihrem Teller herum, mir sah sie bewundernd zu.',14); INSERT INTO lesson_content VALUES(114033,'Ich sah das Polysandrion zum zweiten Mal.',14); INSERT INTO lesson_content VALUES(114034,'Nutze das Zeichen - als Platzhalter fr ein Leerzeichen.',14); INSERT INTO lesson_content VALUES(115001,'"Hey! Hau ab!" (rief Klausi)',15); INSERT INTO lesson_content VALUES(115002,'Die Tastatur (engl. "keyboard") macht mich verrckt (engl. "crazy")!',15); INSERT INTO lesson_content VALUES(115003,'Achtung! Abstand halten! (wegen des Unfallrisikos)',15); INSERT INTO lesson_content VALUES(115004,'"Ahoihoi" rief der Kapitn (mit einem Papagei auf der Schulter) den Besuchern zu.',15); INSERT INTO lesson_content VALUES(115006,'Das nenne ich "echt schrill"!',15); INSERT INTO lesson_content VALUES(115007,'Und so etwas nennt sich "Experte"!',15); INSERT INTO lesson_content VALUES(115008,'Die pfel (zwei Stck) lagen bereit.',15); INSERT INTO lesson_content VALUES(115009,'Sie nannte den Stadtteil immer Prenzl''berg!',15); INSERT INTO lesson_content VALUES(115010,'Der Junge sprang ins Gebsch und murmelte: "Nicht jetzt, bitte nicht jetzt!".',15); INSERT INTO lesson_content VALUES(115011,'Er liebte Andreas'' Freundin Sibille ber alles!',15); INSERT INTO lesson_content VALUES(115012,'Das wre sehr bertrieben (und ich neige sogar zu dieser bertreibung).',15); INSERT INTO lesson_content VALUES(115013,'brigens magst du das Kafka''sche, soweit es sich in Frauen geuert hat, niemals besonders geliebt haben."',15); INSERT INTO lesson_content VALUES(115014,'Ach Unsinn!',15); INSERT INTO lesson_content VALUES(115015,'Nicht wahr!',15); INSERT INTO lesson_content VALUES(115016,'"Gute Nacht" sagte sie.',15); INSERT INTO lesson_content VALUES(115017,'Ach, Unsinn!',15); INSERT INTO lesson_content VALUES(115018,'Ich will''s sehen.',15); INSERT INTO lesson_content VALUES(115019,'Garstiger Junge!',15); INSERT INTO lesson_content VALUES(115020,'Sven aber meinte: "Kann nicht."',15); INSERT INTO lesson_content VALUES(115021,'"Ich verzichte," entgegnete er.',15); INSERT INTO lesson_content VALUES(115022,'Ganz recht, Herr!',15); INSERT INTO lesson_content VALUES(115023,'Schoten und Brassen!',15); INSERT INTO lesson_content VALUES(115024,'Man msse es doch als "Schiff" betrachten.',15); INSERT INTO lesson_content VALUES(115025,'Du kannst es ja gar nicht!',15); INSERT INTO lesson_content VALUES(115026,'Du brauchst''s nicht zu sehen.',15); INSERT INTO lesson_content VALUES(115027,'Ins Ohr will ich''s dir sagen.',15); INSERT INTO lesson_content VALUES(115028,'Schau durch die Ritze - schnell!',15); INSERT INTO lesson_content VALUES(115029,'Welch ein Held war Udo geworden!',15); INSERT INTO lesson_content VALUES(115030,'So ein Junge ist mir noch gar nicht vorgekommen!',15); INSERT INTO lesson_content VALUES(115031,'Die Jungen waren gercht - die Ferien da!',15); INSERT INTO lesson_content VALUES(115032,'Na, wie geht''s? Luft''s gut?',15); INSERT INTO lesson_content VALUES(115033,'Sei still! Sonst setzt es was!',15); INSERT INTO lesson_content VALUES(115034,'Nach dem Zitat "Nicht drunter, sondern drber".',15); INSERT INTO lesson_content VALUES(115035,'"Nicht ganz dicht" sagte der Mann mit dem Stock.',15); INSERT INTO lesson_content VALUES(115036,'Geht''s Dir hoffentlich gut?',15); INSERT INTO lesson_content VALUES(115037,'Endlich auf meinem Burgplatz! Endlich werde ich ruhen drfen!',15); INSERT INTO lesson_content VALUES(115038,'Schnell, versteck Dich hinter dem Schrank! Du alter Spitzbube!',15); INSERT INTO lesson_content VALUES(115039,'Schnell, versteck Dich hinter dem Schrank! Du alter Spitzbube!',15); INSERT INTO lesson_content VALUES(115040,'Und? Wie luft''s so mit dem Zehnfingersystem?',15); INSERT INTO lesson_content VALUES(115041,'Kommt ein Mann zum Metzger: "Ich htte gerne siebzig Gramm Wurst von der groben, fetten". Daraufhin der Metzger: "Tut mir leid, die ist heute in der Berufschule."',15); INSERT INTO lesson_content VALUES(115042,'Und? Wie luft''s so mit dem Zehnfingersystem?',15); INSERT INTO lesson_content VALUES(116001,'10 mal 24 plus 556 sind 796!',16); INSERT INTO lesson_content VALUES(116002,'Rufst Du mich an? (Meine Nummer lautet 67584930)',16); INSERT INTO lesson_content VALUES(116003,'So beginnt die Zahl "Pi": 3,14159265',16); INSERT INTO lesson_content VALUES(116004,'Im Jahr 1909 verhauten ihm 88 starke Mnner das Hinterteil.',16); INSERT INTO lesson_content VALUES(116005,'3 plus 8 sind 11. Ganz klar!',16); INSERT INTO lesson_content VALUES(116006,'378 Seiten Manuskript.',16); INSERT INTO lesson_content VALUES(116007,'In den 80er Jahren; ich war ungefhr 40.',16); INSERT INTO lesson_content VALUES(116008,'Mit 10 Fingern tippe ich schneller als mit 2 Fingern!',16); INSERT INTO lesson_content VALUES(116009,'Denke Dir eine Zahl zwischen 0 und 20000. Ich errate sie dann!',16); INSERT INTO lesson_content VALUES(116010,'Bndnis 90/Die Grnen',16); INSERT INTO lesson_content VALUES(116011,'Gib mir meine 37 Euro!',16); INSERT INTO lesson_content VALUES(116012,'Wahnsinn, bei dem Konzert waren ber 10 000 Personen!',16); INSERT INTO lesson_content VALUES(116013,'Du kennst ja den Polizeiruf 110, nicht wahr?',16); INSERT INTO lesson_content VALUES(116014,'Mit TIPP10 lerne ich das 10-Fingersystem schnell und effektiv!',16); INSERT INTO lesson_content VALUES(116015,'Die pfel (19 Stck) lagen bereit.',16); INSERT INTO lesson_content VALUES(116016,'Ich habe die Wartenummer 12. Es warten also noch 11 andere Personen.',16); INSERT INTO lesson_content VALUES(116017,'Sagt die 0 zur 8: "Schicker Grtel!"',16); INSERT INTO lesson_content VALUES(116018,'In den 69''ern war alles ganz anders!',16); INSERT INTO lesson_content VALUES(116019,'Das kostet 43 Piepen! Bei dir piept es wohl!',16); INSERT INTO lesson_content VALUES(116020,'Er ergatterte Platz 7 in der Formel 1.',16); INSERT INTO lesson_content VALUES(116021,'Stellt man die 6 auf den Kopf, erhlt man geschwind eine 9. Das ist verrckt!',16); INSERT INTO lesson_content VALUES(116022,'Sie hat im Lotto gewonnen - 1,5 Millionen. Man glaubt es nicht!',16); INSERT INTO lesson_content VALUES(116023,'Ich wrde Ihnen vielleicht insofern entgegenkommen, dass ich die honorarfreien Exemplare auf 14 Prozent heruntersetze.',16); INSERT INTO lesson_content VALUES(116024,'99 Luftballons - das sind einer zu wenig!',16); INSERT INTO lesson_content VALUES(116025,'Ich htte dann bitte gerne noch 7 Kilo von den kstlichen Bananen.',16); INSERT INTO lesson_content VALUES(116026,'Das Dokument - es ist gelb - liegt im 1. Stock.',16); INSERT INTO lesson_content VALUES(116027,'Mit einer 6 in Mathe braucht er gar nicht erst nach Hause zu kommen!',16); INSERT INTO lesson_content VALUES(117001,'Die Preisgrenze: "120 > Artikelpreis > 80 "',17); INSERT INTO lesson_content VALUES(117002,'"<=" entspricht -kleiner gleich-.',17); INSERT INTO lesson_content VALUES(117003,'Wenn a < b ist, dann ist -a > -b.',17); INSERT INTO lesson_content VALUES(117004,'Ich gebe 10 % Trinkgeld. Das sind dann 2,40 ',17); INSERT INTO lesson_content VALUES(117005,'Ich arbeite nun schon 50 % meines bisherigen Lebens bei Schmidt & Shne.',17); INSERT INTO lesson_content VALUES(117006,'Ich habe sie einmal nachts geweckt, und, als sie aufschrak: <Sag etwas!> bat ich."',17); INSERT INTO lesson_content VALUES(117007,'Wie kommt es, dass Sie in 9 unseres Verlagsvertrages 15 % honorarfreie Exemplare berechnen?',17); INSERT INTO lesson_content VALUES(117008,' steht fr Euro.',17); INSERT INTO lesson_content VALUES(117009,'# nennt man Raute.',17); INSERT INTO lesson_content VALUES(117010,'20 sind mir zu viel!',17); INSERT INTO lesson_content VALUES(117011,'Das Klammerffchen: @',17); INSERT INTO lesson_content VALUES(117012,'"#1", lies "Nummer 1".',17); INSERT INTO lesson_content VALUES(117013,'Mein.Name@Internetadresse.de',17); INSERT INTO lesson_content VALUES(117014,'Ein einfacher Pfeil: ->',17); INSERT INTO lesson_content VALUES(117015,'Heia! Ich hab 144 gewonnen.',17); INSERT INTO lesson_content VALUES(117016,'Er hatte $-Zeichen in den Augen!',17); INSERT INTO lesson_content VALUES(117017,'a > b bedeutet a ist grer als b.',17); INSERT INTO lesson_content VALUES(117018,'a < b bedeutet a ist kleiner als b.',17); INSERT INTO lesson_content VALUES(117019,'Seine Geheimnummer ist nicht so geheim: #007!',17); INSERT INTO lesson_content VALUES(117020,'Merke Dir unbedingt diesen Sicherheitscode: #1234',17); INSERT INTO lesson_content VALUES(117021,'Gem 57 des Strafgesetzbuchs stimmt das so nicht.',17); INSERT INTO lesson_content VALUES(117022,'In Amerika kostet so eine Fahrt gerade mal 13 $?"',17); INSERT INTO lesson_content VALUES(117023,'In der Schachnotation bedeutet ein # ein Mattsetzen des Gegners.',17); INSERT INTO lesson_content VALUES(117024,'Das Sternchen (*) wird in der Informatik fr die Multiplikation benutzt.',17); INSERT INTO lesson_content VALUES(117025,'Bitte senden Sie eine E-Mail an Herrn Mustermann (mustermann@beispielfirma.com).',17); INSERT INTO lesson_content VALUES(118000, 'Dies ist die letzte Textlektion:', 18); INSERT INTO lesson_content VALUES(119000, '13574962805', 19); INSERT INTO lesson_content VALUES(119001, '1142', 19); INSERT INTO lesson_content VALUES(119002, '8623', 19); INSERT INTO lesson_content VALUES(119003, '9849', 19); INSERT INTO lesson_content VALUES(119004, '2104', 19); INSERT INTO lesson_content VALUES(119005, '0809', 19); INSERT INTO lesson_content VALUES(119006, '2134', 19); INSERT INTO lesson_content VALUES(119007, '1727', 19); INSERT INTO lesson_content VALUES(119008, '8423', 19); INSERT INTO lesson_content VALUES(119009, '990', 19); INSERT INTO lesson_content VALUES(119010, '1652', 19); INSERT INTO lesson_content VALUES(119011, '2847', 19); INSERT INTO lesson_content VALUES(119012, '5530', 19); INSERT INTO lesson_content VALUES(119013, '3661', 19); INSERT INTO lesson_content VALUES(119014, '0071', 19); INSERT INTO lesson_content VALUES(119015, '1821', 19); INSERT INTO lesson_content VALUES(119016, '6744', 19); INSERT INTO lesson_content VALUES(119017, '5215', 19); INSERT INTO lesson_content VALUES(119018, '2211', 19); INSERT INTO lesson_content VALUES(119019, '141', 19); INSERT INTO lesson_content VALUES(119020, '9901', 19); INSERT INTO lesson_content VALUES(119021, '21', 19); INSERT INTO lesson_content VALUES(119022, '94', 19); INSERT INTO lesson_content VALUES(119023, '16743', 19); INSERT INTO lesson_content VALUES(119024, '8820', 19); INSERT INTO lesson_content VALUES(119025, '002', 19); INSERT INTO lesson_content VALUES(119026, '922', 19); INSERT INTO lesson_content VALUES(119027, '336', 19); INSERT INTO lesson_content VALUES(119028, '066', 19); INSERT INTO lesson_content VALUES(119029, '1', 19); INSERT INTO lesson_content VALUES(119030, '76', 19); INSERT INTO lesson_content VALUES(119031, '924', 19); INSERT INTO lesson_content VALUES(119032, '845', 19); INSERT INTO lesson_content VALUES(119033, '3059', 19); INSERT INTO lesson_content VALUES(119034, '23', 19); INSERT INTO lesson_content VALUES(119035, '61', 19); INSERT INTO lesson_content VALUES(119036, '97', 19); INSERT INTO lesson_content VALUES(119037, '104', 19); INSERT INTO lesson_content VALUES(119038, '12', 19); INSERT INTO lesson_content VALUES(119039, '29', 19); INSERT INTO lesson_content VALUES(119040, '18', 19); INSERT INTO lesson_content VALUES(119041, '46', 19); INSERT INTO lesson_content VALUES(119042, '404', 19); INSERT INTO lesson_content VALUES(119043, '10', 19); INSERT INTO lesson_content VALUES(119044, '3', 19); INSERT INTO lesson_content VALUES(119045, '9', 19); INSERT INTO lesson_content VALUES(119046, '5', 19); INSERT INTO lesson_content VALUES(119047, '2', 19); INSERT INTO lesson_content VALUES(119048, '7', 19); INSERT INTO lesson_content VALUES(119049, '6', 19); INSERT INTO lesson_content VALUES(119050, '4', 19); INSERT INTO lesson_content VALUES(120000, '13/2+212-78*2+23,784', 20); INSERT INTO lesson_content VALUES(120001, '54+900', 20); INSERT INTO lesson_content VALUES(120002, '21/7', 20); INSERT INTO lesson_content VALUES(120003, '22988,35/119*100', 20); INSERT INTO lesson_content VALUES(120004, '66,72+47,76', 20); INSERT INTO lesson_content VALUES(120005, '0,046*33', 20); INSERT INTO lesson_content VALUES(120006, '24-9', 20); INSERT INTO lesson_content VALUES(120007, '0,6*74+98', 20); INSERT INTO lesson_content VALUES(120008, '91/12-6,53', 20); INSERT INTO lesson_content VALUES(120009, '+28', 20); INSERT INTO lesson_content VALUES(120010, '/47', 20); INSERT INTO lesson_content VALUES(120011, '-64', 20); INSERT INTO lesson_content VALUES(120012, '*4', 20); INSERT INTO lesson_content VALUES(120013, '38', 20); INSERT INTO lesson_content VALUES(120014, '/934', 20); INSERT INTO lesson_content VALUES(120015, '/77,78', 20); INSERT INTO lesson_content VALUES(120016, '*1000', 20); INSERT INTO lesson_content VALUES(120017, '-89,3+10', 20); INSERT INTO lesson_content VALUES(120018, '10,01*0,9', 20); INSERT INTO lesson_content VALUES(120019, '+503/3600', 20); INSERT INTO lesson_content VALUES(120020, '1,11694+5,736', 20); INSERT INTO lesson_content VALUES(120021, '+10', 20); INSERT INTO lesson_content VALUES(120022, '+300', 20); INSERT INTO lesson_content VALUES(120023, '-45', 20); INSERT INTO lesson_content VALUES(120024, '*19', 20); INSERT INTO lesson_content VALUES(120025, '-900', 20); INSERT INTO lesson_content VALUES(120026, '/16', 20); INSERT INTO lesson_content VALUES(120027, '+3,6', 20); INSERT INTO lesson_content VALUES(120028, '*0,19', 20); INSERT INTO lesson_content VALUES(120029, '100*1,19', 20); INSERT INTO lesson_content VALUES(120030, '0,6', 20); INSERT INTO lesson_content VALUES(201001,'asdf jkl;',101); INSERT INTO lesson_content VALUES(201002,'skald',101); INSERT INTO lesson_content VALUES(201003,'salad;',101); INSERT INTO lesson_content VALUES(201004,'falls',101); INSERT INTO lesson_content VALUES(201005,'flak',101); INSERT INTO lesson_content VALUES(201006,'salad',101); INSERT INTO lesson_content VALUES(201007,'ask;',101); INSERT INTO lesson_content VALUES(201008,'lads',101); INSERT INTO lesson_content VALUES(201009,'sad;',101); INSERT INTO lesson_content VALUES(201010,'asks;',101); INSERT INTO lesson_content VALUES(201011,'fall',101); INSERT INTO lesson_content VALUES(201012,'sad',101); INSERT INTO lesson_content VALUES(201013,'add;',101); INSERT INTO lesson_content VALUES(201014,'adds',101); INSERT INTO lesson_content VALUES(201015,'dsl',101); INSERT INTO lesson_content VALUES(201016,'as;',101); INSERT INTO lesson_content VALUES(201017,'ads',101); INSERT INTO lesson_content VALUES(201018,'lad',101); INSERT INTO lesson_content VALUES(201019,'ask',101); INSERT INTO lesson_content VALUES(201020,'sal',101); INSERT INTO lesson_content VALUES(201021,'alf',101); INSERT INTO lesson_content VALUES(201022,'kafka',101); INSERT INTO lesson_content VALUES(201023,'asks',101); INSERT INTO lesson_content VALUES(201024,'fad',101); INSERT INTO lesson_content VALUES(201025,'jak',101); INSERT INTO lesson_content VALUES(201026,'dj;',101); INSERT INTO lesson_content VALUES(201027,'dad',101); INSERT INTO lesson_content VALUES(201028,'as',101); INSERT INTO lesson_content VALUES(201029,'ad',101); INSERT INTO lesson_content VALUES(201030,'dj',101); INSERT INTO lesson_content VALUES(201031,'al',101); INSERT INTO lesson_content VALUES(201032,'aj',101); INSERT INTO lesson_content VALUES(201033,'sass',101); INSERT INTO lesson_content VALUES(201034,'a;',101); INSERT INTO lesson_content VALUES(201035,'all',101); INSERT INTO lesson_content VALUES(201036,'add',101); INSERT INTO lesson_content VALUES(201037,'la',101); INSERT INTO lesson_content VALUES(201038,'a',101); INSERT INTO lesson_content VALUES(201039,'flask',101); INSERT INTO lesson_content VALUES(202001,'joe',102); INSERT INTO lesson_content VALUES(202002,'does',102); INSERT INTO lesson_content VALUES(202003,'lose',102); INSERT INTO lesson_content VALUES(202004,'dole',102); INSERT INTO lesson_content VALUES(202005,'joke',102); INSERT INTO lesson_content VALUES(202006,'floe',102); INSERT INTO lesson_content VALUES(202007,'lode',102); INSERT INTO lesson_content VALUES(202008,'dose',102); INSERT INTO lesson_content VALUES(202009,'sole',102); INSERT INTO lesson_content VALUES(202010,'joked',102); INSERT INTO lesson_content VALUES(202011,'jokes',102); INSERT INTO lesson_content VALUES(202012,'oases',102); INSERT INTO lesson_content VALUES(202013,'sloes',102); INSERT INTO lesson_content VALUES(202014,'doses',102); INSERT INTO lesson_content VALUES(202015,'loses',102); INSERT INTO lesson_content VALUES(202016,'soaked',102); INSERT INTO lesson_content VALUES(202017,'losses',102); INSERT INTO lesson_content VALUES(202018,'folded',102); INSERT INTO lesson_content VALUES(202019,'loaded',102); INSERT INTO lesson_content VALUES(202020,'seafolk',102); INSERT INTO lesson_content VALUES(202021,'loose',102); INSERT INTO lesson_content VALUES(202022,'looses',102); INSERT INTO lesson_content VALUES(202023,'looked',102); INSERT INTO lesson_content VALUES(202024,'flooded',102); INSERT INTO lesson_content VALUES(202025,'feoffee',102); INSERT INTO lesson_content VALUES(202026,'see',102); INSERT INTO lesson_content VALUES(202027,'fee',102); INSERT INTO lesson_content VALUES(202028,'solo',102); INSERT INTO lesson_content VALUES(202029,'fees',102); INSERT INTO lesson_content VALUES(202030,'feed',102); INSERT INTO lesson_content VALUES(202031,'feel',102); INSERT INTO lesson_content VALUES(202032,'of',102); INSERT INTO lesson_content VALUES(202033,'so',102); INSERT INTO lesson_content VALUES(202034,'do',102); INSERT INTO lesson_content VALUES(202035,'look',102); INSERT INTO lesson_content VALUES(202036,'food',102); INSERT INTO lesson_content VALUES(202037,'seek',102); INSERT INTO lesson_content VALUES(202038,'else',102); INSERT INTO lesson_content VALUES(202039,'ease',102); INSERT INTO lesson_content VALUES(202040,'sees',102); INSERT INTO lesson_content VALUES(202041,'seed',102); INSERT INTO lesson_content VALUES(202042,'flee',102); INSERT INTO lesson_content VALUES(202043,'looks',102); INSERT INTO lesson_content VALUES(202044,'seeks',102); INSERT INTO lesson_content VALUES(202045,'feels',102); INSERT INTO lesson_content VALUES(202046,'eased',102); INSERT INTO lesson_content VALUES(202047,'lease',102); INSERT INTO lesson_content VALUES(202048,'flood',102); INSERT INTO lesson_content VALUES(202049,'foods',102); INSERT INTO lesson_content VALUES(202050,'seeds',102); INSERT INTO lesson_content VALUES(202051,'odd',102); INSERT INTO lesson_content VALUES(202052,'sea',102); INSERT INTO lesson_content VALUES(202053,'old',102); INSERT INTO lesson_content VALUES(202054,'off',102); INSERT INTO lesson_content VALUES(202055,'led',102); INSERT INTO lesson_content VALUES(202056,'leased',102); INSERT INTO lesson_content VALUES(202057,'fed',102); INSERT INTO lesson_content VALUES(202058,'sealed',102); INSERT INTO lesson_content VALUES(202059,'leases',102); INSERT INTO lesson_content VALUES(203001,'it',103); INSERT INTO lesson_content VALUES(203002,'its',103); INSERT INTO lesson_content VALUES(203003,'sit',103); INSERT INTO lesson_content VALUES(203004,'tie',103); INSERT INTO lesson_content VALUES(203005,'kit',103); INSERT INTO lesson_content VALUES(203006,'fit',103); INSERT INTO lesson_content VALUES(203007,'elitist',103); INSERT INTO lesson_content VALUES(203008,'kitties',103); INSERT INTO lesson_content VALUES(203009,'tidiest',103); INSERT INTO lesson_content VALUES(203010,'ditties',103); INSERT INTO lesson_content VALUES(203011,'tile',103); INSERT INTO lesson_content VALUES(203012,'tail',103); INSERT INTO lesson_content VALUES(203013,'edit',103); INSERT INTO lesson_content VALUES(203014,'lift',103); INSERT INTO lesson_content VALUES(203015,'fist',103); INSERT INTO lesson_content VALUES(203016,'sift',103); INSERT INTO lesson_content VALUES(203017,'jilt',103); INSERT INTO lesson_content VALUES(203018,'list',103); INSERT INTO lesson_content VALUES(203019,'site',103); INSERT INTO lesson_content VALUES(203020,'ties',103); INSERT INTO lesson_content VALUES(203021,'tied',103); INSERT INTO lesson_content VALUES(203022,'fits',103); INSERT INTO lesson_content VALUES(203023,'sits',103); INSERT INTO lesson_content VALUES(203024,'diet',103); INSERT INTO lesson_content VALUES(203025,'kits',103); INSERT INTO lesson_content VALUES(203026,'tide',103); INSERT INTO lesson_content VALUES(203027,'testified',103); INSERT INTO lesson_content VALUES(203028,'islet',103); INSERT INTO lesson_content VALUES(203029,'joist',103); INSERT INTO lesson_content VALUES(203030,'diets',103); INSERT INTO lesson_content VALUES(203031,'still',103); INSERT INTO lesson_content VALUES(203032,'sites',103); INSERT INTO lesson_content VALUES(203033,'lists',103); INSERT INTO lesson_content VALUES(203034,'stiff',103); INSERT INTO lesson_content VALUES(203035,'elite',103); INSERT INTO lesson_content VALUES(203036,'detail',103); INSERT INTO lesson_content VALUES(203037,'listed',103); INSERT INTO lesson_content VALUES(203038,'itself',103); INSERT INTO lesson_content VALUES(203039,'stolid',103); INSERT INTO lesson_content VALUES(203040,'lifted',103); INSERT INTO lesson_content VALUES(203041,'assist',103); INSERT INTO lesson_content VALUES(203042,'edited',103); INSERT INTO lesson_content VALUES(203043,'isolate',103); INSERT INTO lesson_content VALUES(203044,'assists',103); INSERT INTO lesson_content VALUES(203045,'details',103); INSERT INTO lesson_content VALUES(203046,'easiest',103); INSERT INTO lesson_content VALUES(203047,'detailed',103); INSERT INTO lesson_content VALUES(203048,'isolated',103); INSERT INTO lesson_content VALUES(203049,'title',103); INSERT INTO lesson_content VALUES(203050,'titles',103); INSERT INTO lesson_content VALUES(203051,'fitted',103); INSERT INTO lesson_content VALUES(203052,'idiots',103); INSERT INTO lesson_content VALUES(203053,'little',103); INSERT INTO lesson_content VALUES(203054,'slitted',103); INSERT INTO lesson_content VALUES(203055,'toilets',103); INSERT INTO lesson_content VALUES(203056,'leftist',103); INSERT INTO lesson_content VALUES(203057,'tootsie',103); INSERT INTO lesson_content VALUES(203058,'toolkit',103); INSERT INTO lesson_content VALUES(203059,'idealist',103); INSERT INTO lesson_content VALUES(203060,'tailskid',103); INSERT INTO lesson_content VALUES(203061,'diskette',103); INSERT INTO lesson_content VALUES(203062,'affiliate',103); INSERT INTO lesson_content VALUES(203063,'satellite',103); INSERT INTO lesson_content VALUES(203064,'satisfied',103); INSERT INTO lesson_content VALUES(203065,'satellites',103); INSERT INTO lesson_content VALUES(203066,'affiliates',103); INSERT INTO lesson_content VALUES(203067,'affiliated',103); INSERT INTO lesson_content VALUES(203068,'to',103); INSERT INTO lesson_content VALUES(203069,'at',103); INSERT INTO lesson_content VALUES(203070,'is',103); INSERT INTO lesson_content VALUES(203071,'if',103); INSERT INTO lesson_content VALUES(203072,'test',103); INSERT INTO lesson_content VALUES(203073,'total',103); INSERT INTO lesson_content VALUES(203074,'toast',103); INSERT INTO lesson_content VALUES(203075,'state',103); INSERT INTO lesson_content VALUES(203076,'tests',103); INSERT INTO lesson_content VALUES(203077,'taste',103); INSERT INTO lesson_content VALUES(203078,'too',103); INSERT INTO lesson_content VALUES(203079,'tea',103); INSERT INTO lesson_content VALUES(203080,'lie',103); INSERT INTO lesson_content VALUES(203081,'dottle',103); INSERT INTO lesson_content VALUES(203082,'stated',103); INSERT INTO lesson_content VALUES(203083,'set',103); INSERT INTO lesson_content VALUES(203084,'did',103); INSERT INTO lesson_content VALUES(203085,'oil',103); INSERT INTO lesson_content VALUES(203086,'lot',103); INSERT INTO lesson_content VALUES(203087,'states',103); INSERT INTO lesson_content VALUES(203088,'latest',103); INSERT INTO lesson_content VALUES(203089,'let',103); INSERT INTO lesson_content VALUES(203090,'aid',103); INSERT INTO lesson_content VALUES(203091,'estate',103); INSERT INTO lesson_content VALUES(203092,'tested',103); INSERT INTO lesson_content VALUES(203093,'jet',103); INSERT INTO lesson_content VALUES(203094,'die',103); INSERT INTO lesson_content VALUES(203095,'settle',103); INSERT INTO lesson_content VALUES(203096,'eat',103); INSERT INTO lesson_content VALUES(203097,'fat',103); INSERT INTO lesson_content VALUES(203098,'sat',103); INSERT INTO lesson_content VALUES(203099,'ill',103); INSERT INTO lesson_content VALUES(203100,'dot',103); INSERT INTO lesson_content VALUES(203101,'totals',103); INSERT INTO lesson_content VALUES(203102,'kid',103); INSERT INTO lesson_content VALUES(203103,'ski',103); INSERT INTO lesson_content VALUES(204001,'ran',104); INSERT INTO lesson_content VALUES(204002,'nor',104); INSERT INTO lesson_content VALUES(204003,'earn',104); INSERT INTO lesson_content VALUES(204004,'iron',104); INSERT INTO lesson_content VALUES(204005,'rain',104); INSERT INTO lesson_content VALUES(204006,'torn',104); INSERT INTO lesson_content VALUES(204007,'tarn',104); INSERT INTO lesson_content VALUES(204008,'near',104); INSERT INTO lesson_content VALUES(204009,'rent',104); INSERT INTO lesson_content VALUES(204010,'inerrant',104); INSERT INTO lesson_content VALUES(204011,'rank',104); INSERT INTO lesson_content VALUES(204012,'reentrant',104); INSERT INTO lesson_content VALUES(204013,'entrainer',104); INSERT INTO lesson_content VALUES(204014,'train',104); INSERT INTO lesson_content VALUES(204015,'tenor',104); INSERT INTO lesson_content VALUES(204016,'arena',104); INSERT INTO lesson_content VALUES(204017,'trone',104); INSERT INTO lesson_content VALUES(204018,'diner',104); INSERT INTO lesson_content VALUES(204019,'ranks',104); INSERT INTO lesson_content VALUES(204020,'rinse',104); INSERT INTO lesson_content VALUES(204021,'riant',104); INSERT INTO lesson_content VALUES(204022,'inert',104); INSERT INTO lesson_content VALUES(204023,'drank',104); INSERT INTO lesson_content VALUES(204024,'front',104); INSERT INTO lesson_content VALUES(204025,'enter',104); INSERT INTO lesson_content VALUES(204026,'learn',104); INSERT INTO lesson_content VALUES(204027,'trend',104); INSERT INTO lesson_content VALUES(204028,'risen',104); INSERT INTO lesson_content VALUES(204029,'drink',104); INSERT INTO lesson_content VALUES(204030,'rains',104); INSERT INTO lesson_content VALUES(204031,'drain',104); INSERT INTO lesson_content VALUES(204032,'entertainer',104); INSERT INTO lesson_content VALUES(204033,'insert',104); INSERT INTO lesson_content VALUES(204034,'drinks',104); INSERT INTO lesson_content VALUES(204035,'loaner',104); INSERT INTO lesson_content VALUES(204036,'entire',104); INSERT INTO lesson_content VALUES(204037,'enroll',104); INSERT INTO lesson_content VALUES(204038,'learnt',104); INSERT INTO lesson_content VALUES(204039,'relent',104); INSERT INTO lesson_content VALUES(204040,'raisin',104); INSERT INTO lesson_content VALUES(204041,'rankle',104); INSERT INTO lesson_content VALUES(204042,'indoor',104); INSERT INTO lesson_content VALUES(204043,'senior',104); INSERT INTO lesson_content VALUES(204044,'reason',104); INSERT INTO lesson_content VALUES(204045,'earned',104); INSERT INTO lesson_content VALUES(204046,'friend',104); INSERT INTO lesson_content VALUES(204047,'tender',104); INSERT INTO lesson_content VALUES(204048,'retain',104); INSERT INTO lesson_content VALUES(204049,'trends',104); INSERT INTO lesson_content VALUES(204050,'linear',104); INSERT INTO lesson_content VALUES(204051,'strain',104); INSERT INTO lesson_content VALUES(204052,'rental',104); INSERT INTO lesson_content VALUES(204053,'tanker',104); INSERT INTO lesson_content VALUES(204054,'trains',104); INSERT INTO lesson_content VALUES(204055,'ranked',104); INSERT INTO lesson_content VALUES(204056,'kernel',104); INSERT INTO lesson_content VALUES(204057,'sooner',104); INSERT INTO lesson_content VALUES(204058,'enters',104); INSERT INTO lesson_content VALUES(204059,'donors',104); INSERT INTO lesson_content VALUES(204060,'airline',104); INSERT INTO lesson_content VALUES(204061,'eternal',104); INSERT INTO lesson_content VALUES(204062,'transferential',104); INSERT INTO lesson_content VALUES(204063,'refined',104); INSERT INTO lesson_content VALUES(204064,'oftener',104); INSERT INTO lesson_content VALUES(204065,'erosion',104); INSERT INTO lesson_content VALUES(204066,'eastern',104); INSERT INTO lesson_content VALUES(204067,'reasons',104); INSERT INTO lesson_content VALUES(204068,'entered',104); INSERT INTO lesson_content VALUES(204069,'friends',104); INSERT INTO lesson_content VALUES(204070,'learned',104); INSERT INTO lesson_content VALUES(204071,'entries',104); INSERT INTO lesson_content VALUES(204072,'trained',104); INSERT INTO lesson_content VALUES(204073,'lenders',104); INSERT INTO lesson_content VALUES(204074,'senator',104); INSERT INTO lesson_content VALUES(204075,'insider',104); INSERT INTO lesson_content VALUES(204076,'transit',104); INSERT INTO lesson_content VALUES(204077,'nearest',104); INSERT INTO lesson_content VALUES(204078,'retains',104); INSERT INTO lesson_content VALUES(204079,'strains',104); INSERT INTO lesson_content VALUES(204080,'sensors',104); INSERT INTO lesson_content VALUES(204081,'tankers',104); INSERT INTO lesson_content VALUES(204082,'endorse',104); INSERT INTO lesson_content VALUES(204083,'retained',104); INSERT INTO lesson_content VALUES(204084,'resident',104); INSERT INTO lesson_content VALUES(204085,'standard',104); INSERT INTO lesson_content VALUES(204086,'interest',104); INSERT INTO lesson_content VALUES(204087,'airlines',104); INSERT INTO lesson_content VALUES(204088,'senators',104); INSERT INTO lesson_content VALUES(204089,'trillion',104); INSERT INTO lesson_content VALUES(204090,'relation',104); INSERT INTO lesson_content VALUES(204091,'endorsed',104); INSERT INTO lesson_content VALUES(204092,'oriented',104); INSERT INTO lesson_content VALUES(204093,'rotation',104); INSERT INTO lesson_content VALUES(204094,'inserted',104); INSERT INTO lesson_content VALUES(204095,'insiders',104); INSERT INTO lesson_content VALUES(204096,'tendered',104); INSERT INTO lesson_content VALUES(204097,'jetliner',104); INSERT INTO lesson_content VALUES(204098,'radiation',104); INSERT INTO lesson_content VALUES(204099,'alternate',104); INSERT INTO lesson_content VALUES(204100,'different',104); INSERT INTO lesson_content VALUES(204101,'standards',104); INSERT INTO lesson_content VALUES(204102,'relations',104); INSERT INTO lesson_content VALUES(204103,'residents',104); INSERT INTO lesson_content VALUES(204104,'interests',104); INSERT INTO lesson_content VALUES(204105,'tradition',104); INSERT INTO lesson_content VALUES(204106,'translate',104); INSERT INTO lesson_content VALUES(204107,'antistress',104); INSERT INTO lesson_content VALUES(204108,'interested',104); INSERT INTO lesson_content VALUES(204109,'relational',104); INSERT INTO lesson_content VALUES(204110,'translated',104); INSERT INTO lesson_content VALUES(204111,'translates',104); INSERT INTO lesson_content VALUES(204112,'federation',104); INSERT INTO lesson_content VALUES(204113,'interstate',104); INSERT INTO lesson_content VALUES(204114,'traditional',104); INSERT INTO lesson_content VALUES(204115,'residential',104); INSERT INTO lesson_content VALUES(204116,'retaliation',104); INSERT INTO lesson_content VALUES(204117,'solitariness',104); INSERT INTO lesson_content VALUES(204118,'differential',104); INSERT INTO lesson_content VALUES(204119,'inner',104); INSERT INTO lesson_content VALUES(204120,'dinner',104); INSERT INTO lesson_content VALUES(204121,'trainer',104); INSERT INTO lesson_content VALUES(204122,'terrain',104); INSERT INTO lesson_content VALUES(204123,'sneerer',104); INSERT INTO lesson_content VALUES(204124,'snorers',104); INSERT INTO lesson_content VALUES(204125,'refrain',104); INSERT INTO lesson_content VALUES(204126,'refiner',104); INSERT INTO lesson_content VALUES(204127,'sinners',104); INSERT INTO lesson_content VALUES(204128,'transfer',104); INSERT INTO lesson_content VALUES(204129,'internal',104); INSERT INTO lesson_content VALUES(204130,'interior',104); INSERT INTO lesson_content VALUES(204131,'infrared',104); INSERT INTO lesson_content VALUES(204132,'rejoinder',104); INSERT INTO lesson_content VALUES(204133,'internist',104); INSERT INTO lesson_content VALUES(204134,'afternoon',104); INSERT INTO lesson_content VALUES(204135,'transfers',104); INSERT INTO lesson_content VALUES(204136,'transient',104); INSERT INTO lesson_content VALUES(204137,'interfere',104); INSERT INTO lesson_content VALUES(204138,'restraint',104); INSERT INTO lesson_content VALUES(204139,'storefront',104); INSERT INTO lesson_content VALUES(204140,'transition',104); INSERT INTO lesson_content VALUES(204141,'slenderness',104); INSERT INTO lesson_content VALUES(204142,'irradiation',104); INSERT INTO lesson_content VALUES(204143,'translation',104); INSERT INTO lesson_content VALUES(204144,'orientation',104); INSERT INTO lesson_content VALUES(204145,'restoration',104); INSERT INTO lesson_content VALUES(204146,'transitions',104); INSERT INTO lesson_content VALUES(204147,'deterioration',104); INSERT INTO lesson_content VALUES(204148,'nonlinear',104); INSERT INTO lesson_content VALUES(204149,'transferred',104); INSERT INTO lesson_content VALUES(204150,'international',104); INSERT INTO lesson_content VALUES(204151,'error',104); INSERT INTO lesson_content VALUES(204152,'in',104); INSERT INTO lesson_content VALUES(204153,'on',104); INSERT INTO lesson_content VALUES(204154,'an',104); INSERT INTO lesson_content VALUES(204155,'or',104); INSERT INTO lesson_content VALUES(204156,'no',104); INSERT INTO lesson_content VALUES(204157,'nine',104); INSERT INTO lesson_content VALUES(204158,'none',104); INSERT INTO lesson_content VALUES(204159,'errors',104); INSERT INTO lesson_content VALUES(204160,'rare',104); INSERT INTO lesson_content VALUES(204161,'noon',104); INSERT INTO lesson_content VALUES(204162,'rear',104); INSERT INTO lesson_content VALUES(204163,'order',104); INSERT INTO lesson_content VALUES(204164,'radar',104); INSERT INTO lesson_content VALUES(204165,'refer',104); INSERT INTO lesson_content VALUES(204166,'tonne',104); INSERT INTO lesson_content VALUES(204167,'referred',104); INSERT INTO lesson_content VALUES(204168,'and',104); INSERT INTO lesson_content VALUES(204169,'for',104); INSERT INTO lesson_content VALUES(204170,'are',104); INSERT INTO lesson_content VALUES(204171,'not',104); INSERT INTO lesson_content VALUES(204172,'one',104); INSERT INTO lesson_content VALUES(204173,'end',104); INSERT INTO lesson_content VALUES(204174,'far',104); INSERT INTO lesson_content VALUES(204175,'net',104); INSERT INTO lesson_content VALUES(204176,'air',104); INSERT INTO lesson_content VALUES(204177,'orders',104); INSERT INTO lesson_content VALUES(204178,'nation',104); INSERT INTO lesson_content VALUES(204179,'son',104); INSERT INTO lesson_content VALUES(204180,'art',104); INSERT INTO lesson_content VALUES(204181,'red',104); INSERT INTO lesson_content VALUES(204182,'arrest',104); INSERT INTO lesson_content VALUES(204183,'intent',104); INSERT INTO lesson_content VALUES(204184,'trader',104); INSERT INTO lesson_content VALUES(204185,'ion',104); INSERT INTO lesson_content VALUES(204186,'era',104); INSERT INTO lesson_content VALUES(204187,'ten',104); INSERT INTO lesson_content VALUES(204188,'intention',104); INSERT INTO lesson_content VALUES(204189,'resort',104); INSERT INTO lesson_content VALUES(204190,'intend',104); INSERT INTO lesson_content VALUES(204191,'terrorist',104); INSERT INTO lesson_content VALUES(204192,'notion',104); INSERT INTO lesson_content VALUES(204193,'online',104); INSERT INTO lesson_content VALUES(204194,'tonnes',104); INSERT INTO lesson_content VALUES(204195,'retire',104); INSERT INTO lesson_content VALUES(204196,'reader',104); INSERT INTO lesson_content VALUES(204197,'fan',104); INSERT INTO lesson_content VALUES(204198,'rid',104); INSERT INTO lesson_content VALUES(204199,'refers',104); INSERT INTO lesson_content VALUES(204200,'tennis',104); INSERT INTO lesson_content VALUES(204201,'infant',104); INSERT INTO lesson_content VALUES(204202,'ton',104); INSERT INTO lesson_content VALUES(204203,'ear',104); INSERT INTO lesson_content VALUES(205001,'chichi',105); INSERT INTO lesson_content VALUES(205002,'cash',105); INSERT INTO lesson_content VALUES(205003,'each',105); INSERT INTO lesson_content VALUES(205004,'rich',105); INSERT INTO lesson_content VALUES(205005,'inch',105); INSERT INTO lesson_content VALUES(205006,'echo',105); INSERT INTO lesson_content VALUES(205007,'chat',105); INSERT INTO lesson_content VALUES(205008,'hack',105); INSERT INTO lesson_content VALUES(205009,'chinchilla',105); INSERT INTO lesson_content VALUES(205010,'torch',105); INSERT INTO lesson_content VALUES(205011,'reach',105); INSERT INTO lesson_content VALUES(205012,'leach',105); INSERT INTO lesson_content VALUES(205013,'roach',105); INSERT INTO lesson_content VALUES(205014,'ranch',105); INSERT INTO lesson_content VALUES(205015,'china',105); INSERT INTO lesson_content VALUES(205016,'chaos',105); INSERT INTO lesson_content VALUES(205017,'crash',105); INSERT INTO lesson_content VALUES(205018,'thick',105); INSERT INTO lesson_content VALUES(205019,'chief',105); INSERT INTO lesson_content VALUES(205020,'chair',105); INSERT INTO lesson_content VALUES(205021,'chain',105); INSERT INTO lesson_content VALUES(205022,'child',105); INSERT INTO lesson_content VALUES(205023,'chart',105); INSERT INTO lesson_content VALUES(205024,'chose',105); INSERT INTO lesson_content VALUES(205025,'shock',105); INSERT INTO lesson_content VALUES(205026,'teach',105); INSERT INTO lesson_content VALUES(205027,'chest',105); INSERT INTO lesson_content VALUES(205028,'niche',105); INSERT INTO lesson_content VALUES(205029,'clash',105); INSERT INTO lesson_content VALUES(205030,'hence',105); INSERT INTO lesson_content VALUES(205031,'schoolchild',105); INSERT INTO lesson_content VALUES(205032,'trench',105); INSERT INTO lesson_content VALUES(205033,'anchor',105); INSERT INTO lesson_content VALUES(205034,'snatch',105); INSERT INTO lesson_content VALUES(205035,'school',105); INSERT INTO lesson_content VALUES(205036,'cheese',105); INSERT INTO lesson_content VALUES(205037,'ashcan',105); INSERT INTO lesson_content VALUES(205038,'attach',105); INSERT INTO lesson_content VALUES(205039,'french',105); INSERT INTO lesson_content VALUES(205040,'search',105); INSERT INTO lesson_content VALUES(205041,'choose',105); INSERT INTO lesson_content VALUES(205042,'inches',105); INSERT INTO lesson_content VALUES(205043,'chosen',105); INSERT INTO lesson_content VALUES(205044,'ethnic',105); INSERT INTO lesson_content VALUES(205045,'charts',105); INSERT INTO lesson_content VALUES(205046,'chains',105); INSERT INTO lesson_content VALUES(205047,'ethics',105); INSERT INTO lesson_content VALUES(205048,'hierarchical',105); INSERT INTO lesson_content VALUES(205049,'chairs',105); INSERT INTO lesson_content VALUES(205050,'schoolteacher',105); INSERT INTO lesson_content VALUES(205051,'kitchen',105); INSERT INTO lesson_content VALUES(205052,'reached',105); INSERT INTO lesson_content VALUES(205053,'schools',105); INSERT INTO lesson_content VALUES(205054,'channel',105); INSERT INTO lesson_content VALUES(205055,'enhance',105); INSERT INTO lesson_content VALUES(205056,'alcohol',105); INSERT INTO lesson_content VALUES(205057,'teacher',105); INSERT INTO lesson_content VALUES(205058,'crashed',105); INSERT INTO lesson_content VALUES(205059,'clothes',105); INSERT INTO lesson_content VALUES(205060,'clashes',105); INSERT INTO lesson_content VALUES(205061,'stretch',105); INSERT INTO lesson_content VALUES(205062,'reaches',105); INSERT INTO lesson_content VALUES(205063,'charter',105); INSERT INTO lesson_content VALUES(205064,'chassis',105); INSERT INTO lesson_content VALUES(205065,'shocked',105); INSERT INTO lesson_content VALUES(205066,'crashes',105); INSERT INTO lesson_content VALUES(205067,'ethical',105); INSERT INTO lesson_content VALUES(205068,'enhanced',105); INSERT INTO lesson_content VALUES(205069,'research',105); INSERT INTO lesson_content VALUES(205070,'children',105); INSERT INTO lesson_content VALUES(205071,'channels',105); INSERT INTO lesson_content VALUES(205072,'attached',105); INSERT INTO lesson_content VALUES(205073,'teachers',105); INSERT INTO lesson_content VALUES(205074,'historic',105); INSERT INTO lesson_content VALUES(205075,'searches',105); INSERT INTO lesson_content VALUES(205076,'searched',105); INSERT INTO lesson_content VALUES(205077,'rhetoric',105); INSERT INTO lesson_content VALUES(205078,'handcraft',105); INSERT INTO lesson_content VALUES(205079,'thickness',105); INSERT INTO lesson_content VALUES(205080,'franchise',105); INSERT INTO lesson_content VALUES(205081,'orchestra',105); INSERT INTO lesson_content VALUES(205082,'historical',105); INSERT INTO lesson_content VALUES(205083,'researcher',105); INSERT INTO lesson_content VALUES(205084,'researchers',105); INSERT INTO lesson_content VALUES(205085,'theoretical',105); INSERT INTO lesson_content VALUES(205086,'cholesterol',105); INSERT INTO lesson_content VALUES(205087,'inheritance',105); INSERT INTO lesson_content VALUES(205088,'stockholders',105); INSERT INTO lesson_content VALUES(205089,'hitch',105); INSERT INTO lesson_content VALUES(205090,'hatch',105); INSERT INTO lesson_content VALUES(205091,'hooch',105); INSERT INTO lesson_content VALUES(205092,'coach',105); INSERT INTO lesson_content VALUES(205093,'cache',105); INSERT INTO lesson_content VALUES(205094,'catch',105); INSERT INTO lesson_content VALUES(205095,'check',105); INSERT INTO lesson_content VALUES(205096,'cratch',105); INSERT INTO lesson_content VALUES(205097,'chance',105); INSERT INTO lesson_content VALUES(205098,'cloche',105); INSERT INTO lesson_content VALUES(205099,'clinch',105); INSERT INTO lesson_content VALUES(205100,'choice',105); INSERT INTO lesson_content VALUES(205101,'checks',105); INSERT INTO lesson_content VALUES(205102,'hatchet',105); INSERT INTO lesson_content VALUES(205103,'technic',105); INSERT INTO lesson_content VALUES(205104,'chicken',105); INSERT INTO lesson_content VALUES(205105,'choices',105); INSERT INTO lesson_content VALUES(205106,'chances',105); INSERT INTO lesson_content VALUES(205107,'checked',105); INSERT INTO lesson_content VALUES(205108,'scratch',105); INSERT INTO lesson_content VALUES(205109,'chronic',105); INSERT INTO lesson_content VALUES(205110,'checker',105); INSERT INTO lesson_content VALUES(205111,'catholic',105); INSERT INTO lesson_content VALUES(205112,'headache',105); INSERT INTO lesson_content VALUES(205113,'toothache',105); INSERT INTO lesson_content VALUES(205114,'thickhead',105); INSERT INTO lesson_content VALUES(205115,'architect',105); INSERT INTO lesson_content VALUES(205116,'screecher',105); INSERT INTO lesson_content VALUES(205117,'alcoholic',105); INSERT INTO lesson_content VALUES(205118,'sackcloth',105); INSERT INTO lesson_content VALUES(205119,'checklist',105); INSERT INTO lesson_content VALUES(205120,'character',105); INSERT INTO lesson_content VALUES(205121,'technical',105); INSERT INTO lesson_content VALUES(205122,'childhood',105); INSERT INTO lesson_content VALUES(205123,'anarchical',105); INSERT INTO lesson_content VALUES(205124,'characters',105); INSERT INTO lesson_content VALUES(205125,'chancellor',105); INSERT INTO lesson_content VALUES(205126,'technician',105); INSERT INTO lesson_content VALUES(205127,'technicians',105); INSERT INTO lesson_content VALUES(205128,'handkerchief',105); INSERT INTO lesson_content VALUES(205129,'electroshock',105); INSERT INTO lesson_content VALUES(205130,'characteristic',105); INSERT INTO lesson_content VALUES(205131,'characteristics',105); INSERT INTO lesson_content VALUES(205132,'cacao',105); INSERT INTO lesson_content VALUES(205133,'clock',105); INSERT INTO lesson_content VALUES(205134,'crack',105); INSERT INTO lesson_content VALUES(205135,'click',105); INSERT INTO lesson_content VALUES(205136,'harsh',105); INSERT INTO lesson_content VALUES(205137,'hot',105); INSERT INTO lesson_content VALUES(205138,'hit',105); INSERT INTO lesson_content VALUES(205139,'her',105); INSERT INTO lesson_content VALUES(205140,'his',105); INSERT INTO lesson_content VALUES(205141,'she',105); INSERT INTO lesson_content VALUES(205142,'the',105); INSERT INTO lesson_content VALUES(205143,'has',105); INSERT INTO lesson_content VALUES(205144,'hat',105); INSERT INTO lesson_content VALUES(205145,'cat',105); INSERT INTO lesson_content VALUES(205146,'can',105); INSERT INTO lesson_content VALUES(205147,'car',105); INSERT INTO lesson_content VALUES(205148,'ice',105); INSERT INTO lesson_content VALUES(205149,'had',105); INSERT INTO lesson_content VALUES(205150,'access',105); INSERT INTO lesson_content VALUES(205151,'health',105); INSERT INTO lesson_content VALUES(205152,'act',105); INSERT INTO lesson_content VALUES(205153,'cancer',105); INSERT INTO lesson_content VALUES(205154,'accord',105); INSERT INTO lesson_content VALUES(205155,'etc',105); INSERT INTO lesson_content VALUES(205156,'ash',105); INSERT INTO lesson_content VALUES(205157,'circle',105); INSERT INTO lesson_content VALUES(205158,'clinic',105); INSERT INTO lesson_content VALUES(205159,'cancel',105); INSERT INTO lesson_content VALUES(205160,'cracks',105); INSERT INTO lesson_content VALUES(205161,'critic',105); INSERT INTO lesson_content VALUES(205162,'scarce',105); INSERT INTO lesson_content VALUES(205163,'soccer',105); INSERT INTO lesson_content VALUES(206001,'JFK',106); INSERT INTO lesson_content VALUES(206002,'ASCII',106); INSERT INTO lesson_content VALUES(206003,'NATO',106); INSERT INTO lesson_content VALUES(206004,'ANSI',106); INSERT INTO lesson_content VALUES(206005,'AIDS',106); INSERT INTO lesson_content VALUES(206006,'LAN',106); INSERT INTO lesson_content VALUES(206007,'THE',106); INSERT INTO lesson_content VALUES(206008,'SEC',106); INSERT INTO lesson_content VALUES(206009,'CAD',106); INSERT INTO lesson_content VALUES(206010,'NCR',106); INSERT INTO lesson_content VALUES(206011,'NASA',106); INSERT INTO lesson_content VALUES(206012,'CEO',106); INSERT INTO lesson_content VALUES(206013,'DNA',106); INSERT INTO lesson_content VALUES(206014,'CIA',106); INSERT INTO lesson_content VALUES(206015,'LCD',106); INSERT INTO lesson_content VALUES(206016,'AND',106); INSERT INTO lesson_content VALUES(206017,'DAT',106); INSERT INTO lesson_content VALUES(206018,'FOR',106); INSERT INTO lesson_content VALUES(206019,'INC',106); INSERT INTO lesson_content VALUES(206020,'ISO',106); INSERT INTO lesson_content VALUES(206021,'LANs',106); INSERT INTO lesson_content VALUES(206022,'OK',106); INSERT INTO lesson_content VALUES(206023,'SOS',106); INSERT INTO lesson_content VALUES(206024,'OS',106); INSERT INTO lesson_content VALUES(206025,'DC',106); INSERT INTO lesson_content VALUES(206026,'CD',106); INSERT INTO lesson_content VALUES(206027,'CO',106); INSERT INTO lesson_content VALUES(206028,'AI',106); INSERT INTO lesson_content VALUES(206029,'ID',106); INSERT INTO lesson_content VALUES(206030,'TO',106); INSERT INTO lesson_content VALUES(206031,'AC',106); INSERT INTO lesson_content VALUES(206032,'NO',106); INSERT INTO lesson_content VALUES(206033,'ON',106); INSERT INTO lesson_content VALUES(206034,'CDs',106); INSERT INTO lesson_content VALUES(206035,'Here:',106); INSERT INTO lesson_content VALUES(206036,'Rate:',106); INSERT INTO lesson_content VALUES(206037,'Date:',106); INSERT INTO lesson_content VALUES(206038,'Link:',106); INSERT INTO lesson_content VALUES(206039,'State:',106); INSERT INTO lesson_content VALUES(206040,'Enter:',106); INSERT INTO lesson_content VALUES(206041,'Chief:',106); INSERT INTO lesson_content VALUES(206042,'Total:',106); INSERT INTO lesson_content VALUES(206043,'Office:',106); INSERT INTO lesson_content VALUES(206044,'Address:',106); INSERT INTO lesson_content VALUES(206045,'Internet:',106); INSERT INTO lesson_content VALUES(206046,'If',106); INSERT INTO lesson_content VALUES(206047,'No',106); INSERT INTO lesson_content VALUES(206048,'It',106); INSERT INTO lesson_content VALUES(206049,'He',106); INSERT INTO lesson_content VALUES(206050,'As',106); INSERT INTO lesson_content VALUES(206051,'Co',106); INSERT INTO lesson_content VALUES(206052,'At',106); INSERT INTO lesson_content VALUES(206053,'On',106); INSERT INTO lesson_content VALUES(206054,'To',106); INSERT INTO lesson_content VALUES(206055,'Of',106); INSERT INTO lesson_content VALUES(206056,'Dr',106); INSERT INTO lesson_content VALUES(206057,'Jr',106); INSERT INTO lesson_content VALUES(206058,'Is',106); INSERT INTO lesson_content VALUES(206059,'Lt',106); INSERT INTO lesson_content VALUES(206060,'Al',106); INSERT INTO lesson_content VALUES(206061,'Ed',106); INSERT INTO lesson_content VALUES(206062,'Oh',106); INSERT INTO lesson_content VALUES(206063,'Old',106); INSERT INTO lesson_content VALUES(206064,'The',106); INSERT INTO lesson_content VALUES(206065,'Jet',106); INSERT INTO lesson_content VALUES(206066,'Inc',106); INSERT INTO lesson_content VALUES(206067,'For',106); INSERT INTO lesson_content VALUES(206068,'And',106); INSERT INTO lesson_content VALUES(206069,'One',106); INSERT INTO lesson_content VALUES(206070,'San',106); INSERT INTO lesson_content VALUES(206071,'She',106); INSERT INTO lesson_content VALUES(206072,'All',106); INSERT INTO lesson_content VALUES(206073,'His',106); INSERT INTO lesson_content VALUES(206074,'Air',106); INSERT INTO lesson_content VALUES(206075,'Los',106); INSERT INTO lesson_content VALUES(206076,'Its',106); INSERT INTO lesson_content VALUES(206077,'Sen',106); INSERT INTO lesson_content VALUES(206078,'Oct',106); INSERT INTO lesson_content VALUES(206079,'Jan',106); INSERT INTO lesson_content VALUES(206080,'Ltd',106); INSERT INTO lesson_content VALUES(206081,'Act',106); INSERT INTO lesson_content VALUES(206082,'Dec',106); INSERT INTO lesson_content VALUES(206083,'Not',106); INSERT INTO lesson_content VALUES(206084,'Fed',106); INSERT INTO lesson_content VALUES(206085,'Lee',106); INSERT INTO lesson_content VALUES(206086,'Red',106); INSERT INTO lesson_content VALUES(206087,'Net',106); INSERT INTO lesson_content VALUES(206088,'Her',106); INSERT INTO lesson_content VALUES(206089,'Sir',106); INSERT INTO lesson_content VALUES(206090,'Oil',106); INSERT INTO lesson_content VALUES(206091,'Fla',106); INSERT INTO lesson_content VALUES(206092,'Dan',106); INSERT INTO lesson_content VALUES(206093,'Sea',106); INSERT INTO lesson_content VALUES(206094,'Col',106); INSERT INTO lesson_content VALUES(206095,'Joe',106); INSERT INTO lesson_content VALUES(206096,'Don',106); INSERT INTO lesson_content VALUES(206097,'Art',106); INSERT INTO lesson_content VALUES(206098,'Can',106); INSERT INTO lesson_content VALUES(206099,'Las',106); INSERT INTO lesson_content VALUES(206100,'Ada',106); INSERT INTO lesson_content VALUES(206101,'Ron',106); INSERT INTO lesson_content VALUES(206102,'Are',106); INSERT INTO lesson_content VALUES(206103,'Ten',106); INSERT INTO lesson_content VALUES(206104,'Oak',106); INSERT INTO lesson_content VALUES(206105,'Ann',106); INSERT INTO lesson_content VALUES(206106,'See',106); INSERT INTO lesson_content VALUES(206107,'Nor',106); INSERT INTO lesson_content VALUES(206108,'Far',106); INSERT INTO lesson_content VALUES(206109,'Ken',106); INSERT INTO lesson_content VALUES(206110,'Add',106); INSERT INTO lesson_content VALUES(206111,'Ted',106); INSERT INTO lesson_content VALUES(206112,'Set',106); INSERT INTO lesson_content VALUES(206113,'Let',106); INSERT INTO lesson_content VALUES(206114,'Ali',106); INSERT INTO lesson_content VALUES(206115,'Sri',106); INSERT INTO lesson_content VALUES(206116,'Del',106); INSERT INTO lesson_content VALUES(206117,'Cos',106); INSERT INTO lesson_content VALUES(206118,'Rio',106); INSERT INTO lesson_content VALUES(206119,'Ind',106); INSERT INTO lesson_content VALUES(206120,'Ala',106); INSERT INTO lesson_content VALUES(206121,'End',106); INSERT INTO lesson_content VALUES(206122,'Kit',106); INSERT INTO lesson_content VALUES(206123,'Ian',106); INSERT INTO lesson_content VALUES(206124,'Too',106); INSERT INTO lesson_content VALUES(206125,'Did',106); INSERT INTO lesson_content VALUES(206126,'Hold',106); INSERT INTO lesson_content VALUES(206127,'That',106); INSERT INTO lesson_content VALUES(206128,'Inch',106); INSERT INTO lesson_content VALUES(206129,'Kiss',106); INSERT INTO lesson_content VALUES(206130,'Lost',106); INSERT INTO lesson_content VALUES(206131,'Lock',106); INSERT INTO lesson_content VALUES(206132,'Hell',106); INSERT INTO lesson_content VALUES(206133,'East',106); INSERT INTO lesson_content VALUES(206134,'This',106); INSERT INTO lesson_content VALUES(206135,'John',106); INSERT INTO lesson_content VALUES(206136,'Data',106); INSERT INTO lesson_content VALUES(206137,'Last',106); INSERT INTO lesson_content VALUES(206138,'Also',106); INSERT INTO lesson_content VALUES(206139,'Jose',106); INSERT INTO lesson_content VALUES(206140,'Each',106); INSERT INTO lesson_content VALUES(206141,'Then',106); INSERT INTO lesson_content VALUES(206142,'Iran',106); INSERT INTO lesson_content VALUES(206143,'Ford',106); INSERT INTO lesson_content VALUES(206144,'Once',106); INSERT INTO lesson_content VALUES(206145,'Ohio',106); INSERT INTO lesson_content VALUES(206146,'Hill',106); INSERT INTO lesson_content VALUES(206147,'Like',106); INSERT INTO lesson_content VALUES(206148,'Here',106); INSERT INTO lesson_content VALUES(206149,'Hall',106); INSERT INTO lesson_content VALUES(206150,'Lake',106); INSERT INTO lesson_content VALUES(206151,'Jack',106); INSERT INTO lesson_content VALUES(206152,'File',106); INSERT INTO lesson_content VALUES(206153,'Fort',106); INSERT INTO lesson_content VALUES(206154,'Life',106); INSERT INTO lesson_content VALUES(206155,'Alan',106); INSERT INTO lesson_content VALUES(206156,'Food',106); INSERT INTO lesson_content VALUES(206157,'Asia',106); INSERT INTO lesson_content VALUES(206158,'Road',106); INSERT INTO lesson_content VALUES(206159,'Star',106); INSERT INTO lesson_content VALUES(206160,'List',106); INSERT INTO lesson_content VALUES(206161,'Loan',106); INSERT INTO lesson_content VALUES(206162,'Area',106); INSERT INTO lesson_content VALUES(206163,'Dole',106); INSERT INTO lesson_content VALUES(206164,'Tass',106); INSERT INTO lesson_content VALUES(206165,'Lord',106); INSERT INTO lesson_content VALUES(206166,'Land',106); INSERT INTO lesson_content VALUES(206167,'None',106); INSERT INTO lesson_content VALUES(206168,'Dean',106); INSERT INTO lesson_content VALUES(206169,'Line',106); INSERT INTO lesson_content VALUES(206170,'Dick',106); INSERT INTO lesson_content VALUES(206171,'Ross',106); INSERT INTO lesson_content VALUES(206172,'Look',106); INSERT INTO lesson_content VALUES(206173,'Fred',106); INSERT INTO lesson_content VALUES(206174,'Kohl',106); INSERT INTO lesson_content VALUES(206175,'Carl',106); INSERT INTO lesson_content VALUES(206177,'Free',106); INSERT INTO lesson_content VALUES(206178,'Call',106); INSERT INTO lesson_content VALUES(206179,'Arts',106); INSERT INTO lesson_content VALUES(206180,'Code',106); INSERT INTO lesson_content VALUES(206181,'Rose',106); INSERT INTO lesson_content VALUES(206182,'Note',106); INSERT INTO lesson_content VALUES(206183,'Fire',106); INSERT INTO lesson_content VALUES(206184,'Disk',106); INSERT INTO lesson_content VALUES(206185,'Link',106); INSERT INTO lesson_content VALUES(206186,'Reed',106); INSERT INTO lesson_content VALUES(206187,'Rock',106); INSERT INTO lesson_content VALUES(206188,'Case',106); INSERT INTO lesson_content VALUES(206189,'Coal',106); INSERT INTO lesson_content VALUES(206190,'Eric',106); INSERT INTO lesson_content VALUES(206191,'Colo',106); INSERT INTO lesson_content VALUES(206192,'Test',106); INSERT INTO lesson_content VALUES(206193,'Real',106); INSERT INTO lesson_content VALUES(206194,'Take',106); INSERT INTO lesson_content VALUES(206195,'Jeff',106); INSERT INTO lesson_content VALUES(206196,'Cook',106); INSERT INTO lesson_content VALUES(206197,'Late',106); INSERT INTO lesson_content VALUES(206198,'Lane',106); INSERT INTO lesson_content VALUES(206199,'Does',106); INSERT INTO lesson_content VALUES(206200,'Salt',106); INSERT INTO lesson_content VALUES(206201,'Card',106); INSERT INTO lesson_content VALUES(206202,'Hart',106); INSERT INTO lesson_content VALUES(206203,'Rico',106); INSERT INTO lesson_content VALUES(206204,'Jane',106); INSERT INTO lesson_content VALUES(206205,'Neil',106); INSERT INTO lesson_content VALUES(206206,'Fish',106); INSERT INTO lesson_content VALUES(206207,'Rate',106); INSERT INTO lesson_content VALUES(206208,'Care',106); INSERT INTO lesson_content VALUES(206209,'Jean',106); INSERT INTO lesson_content VALUES(206210,'Fair',106); INSERT INTO lesson_content VALUES(206211,'Rick',106); INSERT INTO lesson_content VALUES(206212,'Nine',106); INSERT INTO lesson_content VALUES(206213,'Kent',106); INSERT INTO lesson_content VALUES(206214,'Task',106); INSERT INTO lesson_content VALUES(206215,'Thai',106); INSERT INTO lesson_content VALUES(206216,'Date',106); INSERT INTO lesson_content VALUES(206217,'Lisa',106); INSERT INTO lesson_content VALUES(206218,'Cold',106); INSERT INTO lesson_content VALUES(206219,'Anne',106); INSERT INTO lesson_content VALUES(206220,'Cole',106); INSERT INTO lesson_content VALUES(206221,'Rice',106); INSERT INTO lesson_content VALUES(206222,'Half',106); INSERT INTO lesson_content VALUES(206223,'Joan',106); INSERT INTO lesson_content VALUES(206224,'Rich',106); INSERT INTO lesson_content VALUES(206225,'Leon',106); INSERT INTO lesson_content VALUES(206226,'Dale',106); INSERT INTO lesson_content VALUES(206227,'Less',106); INSERT INTO lesson_content VALUES(206228,'Cost',106); INSERT INTO lesson_content VALUES(206229,'Koch',106); INSERT INTO lesson_content VALUES(206230,'Hard',106); INSERT INTO lesson_content VALUES(206231,'Joel',106); INSERT INTO lesson_content VALUES(206232,'Cash',106); INSERT INTO lesson_content VALUES(206233,'Soon',106); INSERT INTO lesson_content VALUES(207001,'Well, we will do it.',107); INSERT INTO lesson_content VALUES(207002,'We want it.',107); INSERT INTO lesson_content VALUES(207003,'Write it, Jo.',107); INSERT INTO lesson_content VALUES(207004,'Look, how low it is.',107); INSERT INTO lesson_content VALUES(207005,'Tod, he is awake.',107); INSERT INTO lesson_content VALUES(207006,'We want to wash the car.',107); INSERT INTO lesson_content VALUES(207007,'Well, I like that.',107); INSERT INTO lesson_content VALUES(207008,'It was not fair, she tried it a week.',107); INSERT INTO lesson_content VALUES(207009,'What a wide wild world.',107); INSERT INTO lesson_content VALUES(207010,'What we do is what we want.',107); INSERT INTO lesson_content VALUES(207011,'The Who.',107); INSERT INTO lesson_content VALUES(207012,'No, sir.',107); INSERT INTO lesson_content VALUES(207013,'Slower is faster.',107); INSERT INTO lesson_content VALUES(207014,'The earliest known oil wells were drilled in China.',107); INSERT INTO lesson_content VALUES(207015,'It is his own will to drink sweet wine.',107); INSERT INTO lesson_content VALUES(207016,'No one.',107); INSERT INTO lesson_content VALUES(207017,'If I can.',107); INSERT INTO lesson_content VALUES(207018,'I felt ill.',107); INSERT INTO lesson_content VALUES(207019,'I intend to.',107); INSERT INTO lesson_content VALUES(207020,'I feed the cat.',107); INSERT INTO lesson_content VALUES(207021,'No need of that.',107); INSERT INTO lesson_content VALUES(207022,'It irritated her.',107); INSERT INTO lesson_content VALUES(207023,'These are all stories.',107); INSERT INTO lesson_content VALUES(207024,'I like it and I said so.',107); INSERT INTO lesson_content VALUES(208001,'Well, I''ll go.',108); INSERT INTO lesson_content VALUES(208002,'He''s in the garden.',108); INSERT INTO lesson_content VALUES(208003,'Now, that''s shirking.',108); INSERT INTO lesson_content VALUES(208004,'I don''t.',108); INSERT INTO lesson_content VALUES(208005,'We agreed.',108); INSERT INTO lesson_content VALUES(208006,'That''s it.',108); INSERT INTO lesson_content VALUES(208007,'I''ll call.',108); INSERT INTO lesson_content VALUES(208008,'I''ll wait.',108); INSERT INTO lesson_content VALUES(208009,'Here we go;',108); INSERT INTO lesson_content VALUES(208010,'How I wish I was going to college.',108); INSERT INTO lesson_content VALUES(208011,'I''d rather.',108); INSERT INTO lesson_content VALUES(208012,'I''ll take it.',108); INSERT INTO lesson_content VALUES(208013,'I forgot it.',108); INSERT INTO lesson_content VALUES(208014,'No, I can''t.',108); INSERT INTO lesson_content VALUES(208015,'I can''t afford it.',108); INSERT INTO lesson_content VALUES(208016,'I wish I hadn''t.',108); INSERT INTO lesson_content VALUES(208017,'I don''t see how.',108); INSERT INTO lesson_content VALUES(208018,'It looks rather eager.',108); INSERT INTO lesson_content VALUES(208019,'I know I shall forget.',108); INSERT INTO lesson_content VALUES(209001,'I ought, but I don''t.',109); INSERT INTO lesson_content VALUES(209002,'Nothing but wait.',109); INSERT INTO lesson_content VALUES(209003,'I''ll be back in half an hour.',109); INSERT INTO lesson_content VALUES(209004,'Take regular breaks.',109); INSERT INTO lesson_content VALUES(209005,'I''ll be agreeable.',109); INSERT INTO lesson_content VALUES(209006,'That''s bad.',109); INSERT INTO lesson_content VALUES(209007,'Laura was willing enough.',109); INSERT INTO lesson_content VALUES(209008,'All the best.',109); INSERT INTO lesson_content VALUES(209009,'It''s no use.',109); INSERT INTO lesson_content VALUES(209010,'I understand.',109); INSERT INTO lesson_content VALUES(209011,'That''s just it.',109); INSERT INTO lesson_content VALUES(209012,'Of course not.',109); INSERT INTO lesson_content VALUES(209013,'It''s forbidden.',109); INSERT INTO lesson_content VALUES(209014,'The girl flushed.',109); INSERT INTO lesson_content VALUES(209015,'Don''t be offended.',109); INSERT INTO lesson_content VALUES(209016,'Then I shouldn''t.',109); INSERT INTO lesson_content VALUES(209017,'Late hours do not agree with us.',109); INSERT INTO lesson_content VALUES(209018,'Of course I don''t.',109); INSERT INTO lesson_content VALUES(209019,'Of course she did.',109); INSERT INTO lesson_content VALUES(209020,'No, it wouldn''t.',109); INSERT INTO lesson_content VALUES(209021,'Of course I will.',109); INSERT INTO lesson_content VALUES(209022,'I can''t do better.',109); INSERT INTO lesson_content VALUES(209023,'And it gets better.',109); INSERT INTO lesson_content VALUES(209024,'I''ll use it if I can.',109); INSERT INTO lesson_content VALUES(209025,'Those students drank water.',109); INSERT INTO lesson_content VALUES(209026,'Nonsense, that''s of no use.',109); INSERT INTO lesson_content VALUES(209027,'Of course that settled it.',109); INSERT INTO lesson_content VALUES(209028,'He shook his head and laughed.',109); INSERT INTO lesson_content VALUES(209029,'I want to hear it, so I can tell Beth.',109); INSERT INTO lesson_content VALUES(209030,'We are a French House, as well as an English one.',109); INSERT INTO lesson_content VALUES(210001,'Yes, his name was Maya.',110); INSERT INTO lesson_content VALUES(210002,'You may begin.',110); INSERT INTO lesson_content VALUES(210003,'You must be the change you wish to see in the world.',110); INSERT INTO lesson_content VALUES(210004,'Yes, ma''am.',110); INSERT INTO lesson_content VALUES(210005,'No, my boy.',110); INSERT INTO lesson_content VALUES(210006,'They do sometimes.',110); INSERT INTO lesson_content VALUES(210007,'Too stormy for me with my cold.',110); INSERT INTO lesson_content VALUES(210008,'I came to amuse you.',110); INSERT INTO lesson_content VALUES(210009,'A gloomy wood.',110); INSERT INTO lesson_content VALUES(210010,'I did my best.',110); INSERT INTO lesson_content VALUES(210011,'Yes, you''ll do.',110); INSERT INTO lesson_content VALUES(210012,'Then I''ll enjoy myself.',110); INSERT INTO lesson_content VALUES(210013,'I''ll do my best.',110); INSERT INTO lesson_content VALUES(210014,'Let me show you.',110); INSERT INTO lesson_content VALUES(210015,'It''s my turn now.',110); INSERT INTO lesson_content VALUES(210016,'Most birds can fly.',110); INSERT INTO lesson_content VALUES(210017,'Shut your eyes and hold out your arms.',110); INSERT INTO lesson_content VALUES(210018,'You must be tired.',110); INSERT INTO lesson_content VALUES(210019,'I''m sorry he''s gone.',110); INSERT INTO lesson_content VALUES(210020,'Don''t worry about me.',110); INSERT INTO lesson_content VALUES(210021,'The German Autobahnen are the nationally coordinated motorway system in Germany.',110); INSERT INTO lesson_content VALUES(210022,'He looked at him, smiling eagerly.',110); INSERT INTO lesson_content VALUES(210023,'Mr. James declined refreshments.',110); INSERT INTO lesson_content VALUES(210024,'I felt myself blushing.',110); INSERT INTO lesson_content VALUES(210025,'No, it''s mine honestly.',110); INSERT INTO lesson_content VALUES(210026,'Take him away at once.',110); INSERT INTO lesson_content VALUES(210027,'I''m glad you can''t go.',110); INSERT INTO lesson_content VALUES(210028,'Charlie eats some candy.',110); INSERT INTO lesson_content VALUES(210029,'You can come back again.',110); INSERT INTO lesson_content VALUES(210030,'The young man bowed again.',110); INSERT INTO lesson_content VALUES(210031,'He wanted the money now.',110); INSERT INTO lesson_content VALUES(210032,'I like to show my boots.',110); INSERT INTO lesson_content VALUES(210033,'I wished to see Mr. Smith.',110); INSERT INTO lesson_content VALUES(210034,'You know what you are about.',110); INSERT INTO lesson_content VALUES(210035,'Tell another story, Mother.',110); INSERT INTO lesson_content VALUES(210036,'They dance along with the melody of the songs they sing.',110); INSERT INTO lesson_content VALUES(210037,'There is a demand for whisky.',110); INSERT INTO lesson_content VALUES(210038,'They laughed and chatted all the way home.',110); INSERT INTO lesson_content VALUES(210039,'I began to abate my resolution.',110); INSERT INTO lesson_content VALUES(210040,'You don''t look as if you liked it.',110); INSERT INTO lesson_content VALUES(210041,'Their meat is dark and stringy.',110); INSERT INTO lesson_content VALUES(210042,'I hadn''t time to cook anything.',110); INSERT INTO lesson_content VALUES(210043,'Certainly, he is not like Mr. Roberson.',110); INSERT INTO lesson_content VALUES(210044,'He turned to her, still holding my hand.',110); INSERT INTO lesson_content VALUES(210045,'You''re getting the hang of this right away.',110); INSERT INTO lesson_content VALUES(210046,'I turned my foot a little, that''s all.',110); INSERT INTO lesson_content VALUES(210047,'His darling had been murdered, he said, by neglect.',110); INSERT INTO lesson_content VALUES(210048,'I dare say there was some affectation in this.',110); INSERT INTO lesson_content VALUES(210049,'I see you understand something of business, sir.',110); INSERT INTO lesson_content VALUES(210050,'Shut the window, like a good boy, and wait till I come.',110); INSERT INTO lesson_content VALUES(210051,'French is an official language in many African countries.',110); INSERT INTO lesson_content VALUES(210052,'Emma laughed and disclaimed.',110); INSERT INTO lesson_content VALUES(210053,'I''ll stay with you.',110); INSERT INTO lesson_content VALUES(210054,'Just ask me for them.',110); INSERT INTO lesson_content VALUES(210055,'Yes, I do.',110); INSERT INTO lesson_content VALUES(210056,'Thank you.',110); INSERT INTO lesson_content VALUES(210057,'I''ll come.',110); INSERT INTO lesson_content VALUES(210058,'But this is by the way.',110); INSERT INTO lesson_content VALUES(210059,'I''m glad mine is blue.',110); INSERT INTO lesson_content VALUES(210060,'As you are.',110); INSERT INTO lesson_content VALUES(210061,'Bobby is sad.',110); INSERT INTO lesson_content VALUES(210062,'In your face.',110); INSERT INTO lesson_content VALUES(210063,'I''ll do anything for you.',110); INSERT INTO lesson_content VALUES(210064,'No, not you.',110); INSERT INTO lesson_content VALUES(210065,'Do it for me.',110); INSERT INTO lesson_content VALUES(210066,'Certainly not.',110); INSERT INTO lesson_content VALUES(210067,'His coat was dusty and dirty.',110); INSERT INTO lesson_content VALUES(210068,'This was a momentous night.',110); INSERT INTO lesson_content VALUES(210069,'Go away. No boys allowed here.',110); INSERT INTO lesson_content VALUES(210070,'I know you are angry, John.',110); INSERT INTO lesson_content VALUES(210071,'Now she''s mad.',110); INSERT INTO lesson_content VALUES(210072,'No, you won''t.',110); INSERT INTO lesson_content VALUES(210073,'Laurie smiled.',110); INSERT INTO lesson_content VALUES(210074,'I took medicine.',110); INSERT INTO lesson_content VALUES(210075,'I trust you will find all you wish.',110); INSERT INTO lesson_content VALUES(210076,'He smiled again.',110); INSERT INTO lesson_content VALUES(210077,'You are the cow.',110); INSERT INTO lesson_content VALUES(210078,'We don''t know him.',110); INSERT INTO lesson_content VALUES(210079,'I''m glad of that.',110); INSERT INTO lesson_content VALUES(210080,'I''m going to bed.',110); INSERT INTO lesson_content VALUES(210081,'I won''t see him.',110); INSERT INTO lesson_content VALUES(210082,'Not now, not yet.',110); INSERT INTO lesson_content VALUES(210083,'I agree with you.',110); INSERT INTO lesson_content VALUES(210084,'It won''t hurt him.',110); INSERT INTO lesson_content VALUES(210085,'Good morning, Sir.',110); INSERT INTO lesson_content VALUES(210086,'I don''t ask you.',110); INSERT INTO lesson_content VALUES(210087,'A culture is only as healthy as it woods.',110); INSERT INTO lesson_content VALUES(210088,'I liked her already.',110); INSERT INTO lesson_content VALUES(210089,'Then I''ll stay still.',110); INSERT INTO lesson_content VALUES(210090,'I wish you wouldn''t.',110); INSERT INTO lesson_content VALUES(210091,'The identical minute.',110); INSERT INTO lesson_content VALUES(210092,'They were traditionally salt traders.',110); INSERT INTO lesson_content VALUES(210093,'How charming that was.',110); INSERT INTO lesson_content VALUES(210094,'I rather enjoy this.',110); INSERT INTO lesson_content VALUES(210095,'It''s no use trying to argue with you.',110); INSERT INTO lesson_content VALUES(210096,'Now let us go home.',110); INSERT INTO lesson_content VALUES(210097,'It''s always like that.',110); INSERT INTO lesson_content VALUES(210098,'I''d rather stay here.',110); INSERT INTO lesson_content VALUES(210099,'Tell me all about it.',110); INSERT INTO lesson_content VALUES(210100,'I felt angry at first.',110); INSERT INTO lesson_content VALUES(210101,'This is as you were.',110); INSERT INTO lesson_content VALUES(210102,'I''m glad he''s gone.',110); INSERT INTO lesson_content VALUES(210103,'I am a friend of nature.',110); INSERT INTO lesson_content VALUES(210104,'Jane smiled again, and her smiles grew stronger.',110); INSERT INTO lesson_content VALUES(210105,'You cannot do better, sir.',110); INSERT INTO lesson_content VALUES(210106,'She looked at me, and then down; and then again at me.',110); INSERT INTO lesson_content VALUES(210107,'He was walking beside me.',110); INSERT INTO lesson_content VALUES(210108,'Don''t look at the keyboard.',110); INSERT INTO lesson_content VALUES(210109,'I still drink some beer.',110); INSERT INTO lesson_content VALUES(210110,'What we can learn from this:',110); INSERT INTO lesson_content VALUES(210111,'Yes, a nice long letter.',110); INSERT INTO lesson_content VALUES(210112,'Thank you for our books.',110); INSERT INTO lesson_content VALUES(210113,'Now go and answer your note.',110); INSERT INTO lesson_content VALUES(210114,'I''m so tired I can''t stir.',110); INSERT INTO lesson_content VALUES(210115,'I like good strong words that mean something.',110); INSERT INTO lesson_content VALUES(210116,'I like that kind of sermon.',110); INSERT INTO lesson_content VALUES(210117,'That does me no end of good.',110); INSERT INTO lesson_content VALUES(210118,'Now, Teddy, be sensible.',110); INSERT INTO lesson_content VALUES(210119,'The words ''fifty dollars''.',110); INSERT INTO lesson_content VALUES(210120,'I knew they didn''t like it.',110); INSERT INTO lesson_content VALUES(210121,'Joanne''s mother looks selfish.',110); INSERT INTO lesson_content VALUES(210122,'Little things can mean a lot.',110); INSERT INTO lesson_content VALUES(210123,'Harriet''s cheerful look and manner established hers: she came back.',110); INSERT INTO lesson_content VALUES(210124,'But there was no time for shuddering.',110); INSERT INTO lesson_content VALUES(210125,'We walked homeward in silence.',110); INSERT INTO lesson_content VALUES(210126,'You will find a note at the bar.',110); INSERT INTO lesson_content VALUES(210127,'The women waits for nice weather.',110); INSERT INTO lesson_content VALUES(210128,'This was a truly thrilling scene.',110); INSERT INTO lesson_content VALUES(210129,'I thought it was almost well.',110); INSERT INTO lesson_content VALUES(210130,'Willems was born in Netherlands.',110); INSERT INTO lesson_content VALUES(210131,'I laughed all the way downstairs.',110); INSERT INTO lesson_content VALUES(210132,'Then it will become a red giant once again.',110); INSERT INTO lesson_content VALUES(210133,'It is the little things that make the world work.',110); INSERT INTO lesson_content VALUES(210134,'He looked round at a circle of uneasy faces.',110); INSERT INTO lesson_content VALUES(210135,'The hour had come at last, and she was gone.',110); INSERT INTO lesson_content VALUES(211001,'I hear my own voice when I talk with Voice Over IP.',111); INSERT INTO lesson_content VALUES(211002,'Perhaps not.',111); INSERT INTO lesson_content VALUES(211003,'Poor Paul has to paint the party room.',111); INSERT INTO lesson_content VALUES(211004,'Perhaps he is his superior.',111); INSERT INTO lesson_content VALUES(211005,'That''s not very polite.',111); INSERT INTO lesson_content VALUES(211006,'Perhaps they forgot it.',111); INSERT INTO lesson_content VALUES(211007,'Of course this is all very private.',111); INSERT INTO lesson_content VALUES(211008,'Let''s travel to Viginia.',111); INSERT INTO lesson_content VALUES(211009,'Mr. Elton returned, a very happy man.',111); INSERT INTO lesson_content VALUES(211010,'His dress was very plain and simple.',111); INSERT INTO lesson_content VALUES(211011,'We had several very enjoyable tea parties.',111); INSERT INTO lesson_content VALUES(211012,'This was very rational; I''m not very proud of it.',111); INSERT INTO lesson_content VALUES(211013,'Now listen to the speech of our vice president.',111); INSERT INTO lesson_content VALUES(211014,'Earth is the planet we live on.',111); INSERT INTO lesson_content VALUES(211015,'Apple keyboards have Command and Option keys instead of Alt and AltGr.',111); INSERT INTO lesson_content VALUES(211016,'Her voice shook a little, but she spoke out bravely.',111); INSERT INTO lesson_content VALUES(211017,'I was now come to the unhappy anniversary of my landing.',111); INSERT INTO lesson_content VALUES(211018,'We can use very large telescopes to see what has happened to other stars.',111); INSERT INTO lesson_content VALUES(211019,'My boss is so unpopular even his own shadow refuses to follow him.',111); INSERT INTO lesson_content VALUES(211020,'Very well; I shall not attempt to deny Emma''s being pretty.',111); INSERT INTO lesson_content VALUES(211021,'He spoke often to me; but the sound of his voice pierced my ears.',111); INSERT INTO lesson_content VALUES(211022,'Spaces are classified on three levels.',111); INSERT INTO lesson_content VALUES(211023,'Before the evening was over, Sam felt completely disillusioned.',111); INSERT INTO lesson_content VALUES(211024,'Germany''s television market is the largest in Europe.',111); INSERT INTO lesson_content VALUES(211025,'I don''t think my father''s feelings were very deep.',111); INSERT INTO lesson_content VALUES(211026,'The young man looked at her with a very pale face.',111); INSERT INTO lesson_content VALUES(211027,'A shadow passed over the boy''s face as he watched them.',111); INSERT INTO lesson_content VALUES(211028,'You''ll have me for company, if that''s any comfort.',111); INSERT INTO lesson_content VALUES(211029,'Koalas are often referred to as bears due to their appearance; they are not bears, however, but marsupials.',111); INSERT INTO lesson_content VALUES(211030,'The highest bird diversity occurs in tropical regions.',111); INSERT INTO lesson_content VALUES(211031,'Our aunt usually gave us a present at New Year''s.',111); INSERT INTO lesson_content VALUES(211032,'We hope you will enjoy using this touch typing software as much as we''ve enjoyed making it.',111); INSERT INTO lesson_content VALUES(211033,'Very sincerely did Tom wish to do so; but it was not immediately in his power.',111); INSERT INTO lesson_content VALUES(211034,'Birds communicate using primarily visual and auditory signals.',111); INSERT INTO lesson_content VALUES(211035,'I am prepared.',111); INSERT INTO lesson_content VALUES(211036,'Happy New Year',111); INSERT INTO lesson_content VALUES(211037,'Keyboard layouts have evolved over time.',111); INSERT INTO lesson_content VALUES(211038,'Very soon.',111); INSERT INTO lesson_content VALUES(211039,'Jo slipped upstairs into Tom''s room.',111); INSERT INTO lesson_content VALUES(211040,'Good evening.',111); INSERT INTO lesson_content VALUES(211041,'Please don''t.',111); INSERT INTO lesson_content VALUES(211042,'Very likely.',111); INSERT INTO lesson_content VALUES(211043,'Typing is learnt by practice.',111); INSERT INTO lesson_content VALUES(211044,'I dote upon it.',111); INSERT INTO lesson_content VALUES(211045,'I never tease.',111); INSERT INTO lesson_content VALUES(211046,'It''s a scrape.',111); INSERT INTO lesson_content VALUES(211047,'I''ve tried it.',111); INSERT INTO lesson_content VALUES(211048,'I beg your pardon.',111); INSERT INTO lesson_content VALUES(211049,'There was a pause.',111); INSERT INTO lesson_content VALUES(211050,'That hour is past.',111); INSERT INTO lesson_content VALUES(211051,'They are lovely.',111); INSERT INTO lesson_content VALUES(211052,'It isn''t spoiled.',111); INSERT INTO lesson_content VALUES(211053,'Grandpa sent it.',111); INSERT INTO lesson_content VALUES(211054,'I''ve no objection.',111); INSERT INTO lesson_content VALUES(211055,'That''s very fine.',111); INSERT INTO lesson_content VALUES(211056,'I''ve none to tell.',111); INSERT INTO lesson_content VALUES(211057,'That''s impossible.',111); INSERT INTO lesson_content VALUES(211058,'I painted the door.',111); INSERT INTO lesson_content VALUES(211059,'They played tennis.',111); INSERT INTO lesson_content VALUES(211060,'Let him be accepted.',111); INSERT INTO lesson_content VALUES(211061,'Yes; very well indeed.',111); INSERT INTO lesson_content VALUES(211062,'Her voice faltered.',111); INSERT INTO lesson_content VALUES(211063,'The space bar is pressed with either thumb.',111); INSERT INTO lesson_content VALUES(211064,'Don''t be surprised;',111); INSERT INTO lesson_content VALUES(211065,'Keep hanging in there.',111); INSERT INTO lesson_content VALUES(211066,'It''s never too late.',111); INSERT INTO lesson_content VALUES(211067,'Not a good prognosis.',111); INSERT INTO lesson_content VALUES(211068,'Open the door, Amy.',111); INSERT INTO lesson_content VALUES(211069,'I had a capital time.',111); INSERT INTO lesson_content VALUES(211070,'It was a rather pretty little picture.',111); INSERT INTO lesson_content VALUES(211071,'Give us the cold meat.',111); INSERT INTO lesson_content VALUES(211072,'Just as you please.',111); INSERT INTO lesson_content VALUES(211073,'I took care that the right people saw them.',111); INSERT INTO lesson_content VALUES(211074,'You hate traveling.',111); INSERT INTO lesson_content VALUES(211075,'We can also guess what might happen to it in the future.',111); INSERT INTO lesson_content VALUES(211076,'John suspected no irony.',111); INSERT INTO lesson_content VALUES(211077,'He looked up and nodded.',111); INSERT INTO lesson_content VALUES(211078,'I have an odd story to tell.',111); INSERT INTO lesson_content VALUES(211079,'I could not believe it.',111); INSERT INTO lesson_content VALUES(211080,'Two or three days passed.',111); INSERT INTO lesson_content VALUES(211081,'It should feel good to type.',111); INSERT INTO lesson_content VALUES(211082,'Today is Valentine''s Day.',111); INSERT INTO lesson_content VALUES(211083,'I didn''t have the energy.',111); INSERT INTO lesson_content VALUES(211084,'Please let me take you home.',111); INSERT INTO lesson_content VALUES(211085,'You can''t keep a secret.',111); INSERT INTO lesson_content VALUES(211086,'Please don''t be offended.',111); INSERT INTO lesson_content VALUES(211087,'She laughed as she spoke.',111); INSERT INTO lesson_content VALUES(211088,'He tried to look pathetic.',111); INSERT INTO lesson_content VALUES(211089,'A bear market is a period of declining prices.',111); INSERT INTO lesson_content VALUES(211090,'Birds occupy a wide range of ecological positions.',111); INSERT INTO lesson_content VALUES(211091,'The front door usually stood hospitably open.',111); INSERT INTO lesson_content VALUES(211092,'We''ll stop at her house.',111); INSERT INTO lesson_content VALUES(211093,'I''m perfectly miserable.',111); INSERT INTO lesson_content VALUES(211094,'I think I can promise that.',111); INSERT INTO lesson_content VALUES(211095,'It was a very long day.',111); INSERT INTO lesson_content VALUES(211096,'I am too stupid to learn.',111); INSERT INTO lesson_content VALUES(211097,'It was a pleasant winter.',111); INSERT INTO lesson_content VALUES(211098,'I don''t promise to answer.',111); INSERT INTO lesson_content VALUES(211099,'I was like a ship without a pilot, that could only run afore the wind.',111); INSERT INTO lesson_content VALUES(211100,'So I asked him if he would, and if we might venture over in her.',111); INSERT INTO lesson_content VALUES(211101,'No, we must resolve to fight them.',111); INSERT INTO lesson_content VALUES(211102,'That dentist plays the guitar.',111); INSERT INTO lesson_content VALUES(211103,'Touch typing is typing without using the sense of sight to find the keys.',111); INSERT INTO lesson_content VALUES(211104,'John says I''m pretty. Andy says I''m ugly. So I think I''m pretty ugly.',111); INSERT INTO lesson_content VALUES(211105,'I shouldn''t mention pay again.',111); INSERT INTO lesson_content VALUES(211106,'I am younger and stronger, Professor.',111); INSERT INTO lesson_content VALUES(211107,'He saw his son every year in London.',111); INSERT INTO lesson_content VALUES(211108,'She would be very glad to stay.',111); INSERT INTO lesson_content VALUES(211109,'I will not plague you any more.',111); INSERT INTO lesson_content VALUES(211110,'Another change in my patient.',111); INSERT INTO lesson_content VALUES(211111,'Everyone was silent for a minute.',111); INSERT INTO lesson_content VALUES(211112,'Mrs. Smith herself opened the door.',111); INSERT INTO lesson_content VALUES(211113,'You persuaded her to refuse him.',111); INSERT INTO lesson_content VALUES(211114,'The man shows his skill in navigation.',111); INSERT INTO lesson_content VALUES(211115,'She told her all her plans about me.',111); INSERT INTO lesson_content VALUES(211116,'Make sure you have them in mind.',111); INSERT INTO lesson_content VALUES(211117,'The girl has never forgotten that day.',111); INSERT INTO lesson_content VALUES(211118,'I can read it, but can''t pronounce.',111); INSERT INTO lesson_content VALUES(211119,'Laurie and I couldn''t help laughing.',111); INSERT INTO lesson_content VALUES(211120,'He doesn''t like to hear me play.',111); INSERT INTO lesson_content VALUES(211121,'But the piano suffers for want of use.',111); INSERT INTO lesson_content VALUES(211122,'He was very busy in the garret.',111); INSERT INTO lesson_content VALUES(211123,'He laughed and looked across at the tall girl who sat opposite.',111); INSERT INTO lesson_content VALUES(211124,'French is the fourth most widely spoken mother tongue in the European Union.',111); INSERT INTO lesson_content VALUES(211125,'I must be patient and teach her.',111); INSERT INTO lesson_content VALUES(211126,'Lisa telegraphed the word ''talk''.',111); INSERT INTO lesson_content VALUES(211127,'You''d be angry in five minutes.',111); INSERT INTO lesson_content VALUES(211128,'I found a good ship ready to carry me to my own country.',111); INSERT INTO lesson_content VALUES(211129,'Love is one long sweet dream, and marriage is the alarm clock.',111); INSERT INTO lesson_content VALUES(211130,'He handed over a rather shabby green notebook.',111); INSERT INTO lesson_content VALUES(211131,'A complete change of life became desirable.',111); INSERT INTO lesson_content VALUES(211132,'He paused, as if to allow her time to think better of it.',111); INSERT INTO lesson_content VALUES(211133,'This is one of the most important things.',111); INSERT INTO lesson_content VALUES(211134,'She opened her new book and began to read.',111); INSERT INTO lesson_content VALUES(211135,'Don''t go away, please, unless you''d rather.',111); INSERT INTO lesson_content VALUES(211136,'I can''t stop here, for the house is full.',111); INSERT INTO lesson_content VALUES(211137,'I was looking for someone to give this to.',111); INSERT INTO lesson_content VALUES(211138,'Ann began to dig paths with great energy.',111); INSERT INTO lesson_content VALUES(211139,'Laurie watched her in respectful silence.',111); INSERT INTO lesson_content VALUES(211140,'They can''t be going in the boat, for they haven''t got the key.',111); INSERT INTO lesson_content VALUES(211141,'Here''s a note to you, Jeff, all sealed up.',111); INSERT INTO lesson_content VALUES(211142,'In mathematics, a space is a set with some added structure.',111); INSERT INTO lesson_content VALUES(211143,'Functions are important mathematical objects.',111); INSERT INTO lesson_content VALUES(211144,'The official language in Egypt is literary Arabic.',111); INSERT INTO lesson_content VALUES(211145,'Germany has the world''s oldest universal health care system.',111); INSERT INTO lesson_content VALUES(211146,'We would like to introduce you an innovation today.',111); INSERT INTO lesson_content VALUES(211147,'I won''t have anything of the sort in my house.',111); INSERT INTO lesson_content VALUES(211148,'I am glad you think so; and the good hands, I hope, may not be wanting.',111); INSERT INTO lesson_content VALUES(211149,'My father had a small estate in Nottinghamshire: I was the third of five sons.',111); INSERT INTO lesson_content VALUES(211150,'Esther was the only one who ever took any notice of the young lady.',111); INSERT INTO lesson_content VALUES(212001,'For what?',112); INSERT INTO lesson_content VALUES(212002,'Excuse me.',112); INSERT INTO lesson_content VALUES(212003,'If so, why?',112); INSERT INTO lesson_content VALUES(212004,'Going home?',112); INSERT INTO lesson_content VALUES(212005,'For how long?',112); INSERT INTO lesson_content VALUES(212006,'Was he nice?',112); INSERT INTO lesson_content VALUES(212007,'Are you sick?',112); INSERT INTO lesson_content VALUES(212008,'Is that all?',112); INSERT INTO lesson_content VALUES(212009,'Where is it?',112); INSERT INTO lesson_content VALUES(212010,'Why, please?',112); INSERT INTO lesson_content VALUES(212011,'And the flies?',112); INSERT INTO lesson_content VALUES(212012,'You won''t tell?',112); INSERT INTO lesson_content VALUES(212013,'Is it a donkey?',112); INSERT INTO lesson_content VALUES(212014,'Who was Jimmy?',112); INSERT INTO lesson_content VALUES(212015,'Which is which?',112); INSERT INTO lesson_content VALUES(212016,'Who taught her?',112); INSERT INTO lesson_content VALUES(212017,'Don''t you want to?',112); INSERT INTO lesson_content VALUES(212018,'Was I right, miss?',112); INSERT INTO lesson_content VALUES(212019,'And what is that?',112); INSERT INTO lesson_content VALUES(212020,'What will we get?',112); INSERT INTO lesson_content VALUES(212021,'Did you hear us?',112); INSERT INTO lesson_content VALUES(212022,'She explained it.',112); INSERT INTO lesson_content VALUES(212023,'What happens then?',112); INSERT INTO lesson_content VALUES(212024,'Can you fight, Kevin?',112); INSERT INTO lesson_content VALUES(212025,'You followed me here?',112); INSERT INTO lesson_content VALUES(212026,'What has gone wrong?',112); INSERT INTO lesson_content VALUES(212027,'Sounds good, right?',112); INSERT INTO lesson_content VALUES(212028,'How did he find you?',112); INSERT INTO lesson_content VALUES(212029,'So how did it happen?',112); INSERT INTO lesson_content VALUES(212030,'Did you go to Paris?',112); INSERT INTO lesson_content VALUES(212031,'Can you talk French?',112); INSERT INTO lesson_content VALUES(212032,'Will you come, please?',112); INSERT INTO lesson_content VALUES(212033,'Well, what if it is?',112); INSERT INTO lesson_content VALUES(212034,'Of course not. Why?',112); INSERT INTO lesson_content VALUES(212035,'Isn''t that romantic?',112); INSERT INTO lesson_content VALUES(212036,'What would Meg say?',112); INSERT INTO lesson_content VALUES(212037,'What made you do it?',112); INSERT INTO lesson_content VALUES(212038,'What worries you dear?',112); INSERT INTO lesson_content VALUES(212039,'Where is everybody?',112); INSERT INTO lesson_content VALUES(212040,'Aren''t they beauties?',112); INSERT INTO lesson_content VALUES(212041,'Which did she choose?',112); INSERT INTO lesson_content VALUES(212042,'Do you speak French?',112); INSERT INTO lesson_content VALUES(212043,'Would you like to go?',112); INSERT INTO lesson_content VALUES(212044,'You really advise it?',112); INSERT INTO lesson_content VALUES(212045,'May I have the honor?',112); INSERT INTO lesson_content VALUES(212046,'Why don''t you do it?',112); INSERT INTO lesson_content VALUES(212047,'Don''t you hear often?',112); INSERT INTO lesson_content VALUES(212048,'Now what shall I do?',112); INSERT INTO lesson_content VALUES(212049,'What must kill you for?',112); INSERT INTO lesson_content VALUES(212050,'What holds it together?',112); INSERT INTO lesson_content VALUES(212051,'Xenon is a chemical element represented by the symbol Xe.',112); INSERT INTO lesson_content VALUES(212052,'What brighter was that?',112); INSERT INTO lesson_content VALUES(212053,'What about the colonies?',112); INSERT INTO lesson_content VALUES(212054,'Ethel, what do you think?',112); INSERT INTO lesson_content VALUES(212055,'What was the turning point?',112); INSERT INTO lesson_content VALUES(212056,'How will we give the things?',112); INSERT INTO lesson_content VALUES(212057,'Does my hair look very bad?',112); INSERT INTO lesson_content VALUES(212058,'Do you think she is pretty?',112); INSERT INTO lesson_content VALUES(212059,'Aren''t you but fifteen?',112); INSERT INTO lesson_content VALUES(212060,'Do you like your school?',112); INSERT INTO lesson_content VALUES(212061,'What''s she talking about?',112); INSERT INTO lesson_content VALUES(212062,'Do you really mean that?',112); INSERT INTO lesson_content VALUES(212063,'How''s the little mamma?',112); INSERT INTO lesson_content VALUES(212064,'How are you about languages?',112); INSERT INTO lesson_content VALUES(212065,'Couldn''t you do it now?',112); INSERT INTO lesson_content VALUES(212066,'Don''t be anxious about me.',112); INSERT INTO lesson_content VALUES(212067,'Carbon dioxide out, oxygen in, the more you got the more you win.',112); INSERT INTO lesson_content VALUES(212068,'What am I to do with them afterwards?',112); INSERT INTO lesson_content VALUES(212069,'I next entered a Government office.',112); INSERT INTO lesson_content VALUES(212070,'What ought they to be in China?',112); INSERT INTO lesson_content VALUES(212071,'What could be more full of meaning?',112); INSERT INTO lesson_content VALUES(212072,'And who wouldnt benefit from that?',112); INSERT INTO lesson_content VALUES(212073,'Isn''t that a wonderful result?',112); INSERT INTO lesson_content VALUES(212074,'How do we reverse this trend?',112); INSERT INTO lesson_content VALUES(212075,'Ought they to smoke like that?',112); INSERT INTO lesson_content VALUES(212076,'May I take it to your sister?',112); INSERT INTO lesson_content VALUES(212077,'Has anybody got anything to tell?',112); INSERT INTO lesson_content VALUES(212078,'Didn''t the girls laugh at the picture?',112); INSERT INTO lesson_content VALUES(212079,'What do you amuse yourself with?',112); INSERT INTO lesson_content VALUES(212080,'But you like me in spite of it?',112); INSERT INTO lesson_content VALUES(212081,'Don''t you wish for anything else?',112); INSERT INTO lesson_content VALUES(212082,'My dearest girl, what is the matter?',112); INSERT INTO lesson_content VALUES(212083,'Has anything dreadful happened?',112); INSERT INTO lesson_content VALUES(212084,'Axl Rose is a lead singer for Guns N'' Roses.',112); INSERT INTO lesson_content VALUES(212085,'If tin whistles are made of tin, what are fog horns made of?',112); INSERT INTO lesson_content VALUES(212086,'These people are most excellent mathematicians.',112); INSERT INTO lesson_content VALUES(212087,'Relax: No unnecessary or dysfunctional tension.',112); INSERT INTO lesson_content VALUES(212088,'Repeat each exercise at least three times.',112); INSERT INTO lesson_content VALUES(212089,'Have you both got nice pocket handkerchiefs?',112); INSERT INTO lesson_content VALUES(212090,'Bears are aided by an excellent sense of smell.',112); INSERT INTO lesson_content VALUES(212091,'Germany is a federal parliamentary republic of sixteen states.',112); INSERT INTO lesson_content VALUES(212092,'It''s the best joke of the season, isn''t it?',112); INSERT INTO lesson_content VALUES(212093,'An XML document comprises elements, attributes, processing instructions, comments, and entities.',112); INSERT INTO lesson_content VALUES(212094,'The two sides of a graph on either side of the axis of symmetry look like mirror images of each other.',112); INSERT INTO lesson_content VALUES(212095,'If big elephants have big trunks, do small elephants have suitcases?',112); INSERT INTO lesson_content VALUES(213001,'How quickly you guessed!',113); INSERT INTO lesson_content VALUES(213002,'My heart!',113); INSERT INTO lesson_content VALUES(213003,'Bless me!',113); INSERT INTO lesson_content VALUES(213004,'How awful!',113); INSERT INTO lesson_content VALUES(213005,'Well done!',113); INSERT INTO lesson_content VALUES(213006,'How funny!',113); INSERT INTO lesson_content VALUES(213007,'Not quite.',113); INSERT INTO lesson_content VALUES(213008,'No, indeed!',113); INSERT INTO lesson_content VALUES(213009,'Oh, Mother!',113); INSERT INTO lesson_content VALUES(213010,'Such a man!',113); INSERT INTO lesson_content VALUES(213011,'No such luck!',113); INSERT INTO lesson_content VALUES(213012,'Four o''clock!',113); INSERT INTO lesson_content VALUES(213013,'Yes, good man!',113); INSERT INTO lesson_content VALUES(213014,'It''s so early!',113); INSERT INTO lesson_content VALUES(213015,'What richness!',113); INSERT INTO lesson_content VALUES(213016,'I will, I will!',113); INSERT INTO lesson_content VALUES(213017,'Good luck to you!',113); INSERT INTO lesson_content VALUES(213018,'How pretty it is!',113); INSERT INTO lesson_content VALUES(213019,'Never take advice!',113); INSERT INTO lesson_content VALUES(213020,'Good night, Sam!',113); INSERT INTO lesson_content VALUES(213021,'Don''t cry, dear!',113); INSERT INTO lesson_content VALUES(213022,'Poor little thing!',113); INSERT INTO lesson_content VALUES(213023,'I didn''t mean it!',113); INSERT INTO lesson_content VALUES(213024,'How kind you are!',113); INSERT INTO lesson_content VALUES(213025,'He returns very quick.',113); INSERT INTO lesson_content VALUES(213026,'Tommy, you''re stony!',113); INSERT INTO lesson_content VALUES(213027,'Gentlemen! In the king''s name, all of you!',113); INSERT INTO lesson_content VALUES(213028,'Don''t be discouraged!',113); INSERT INTO lesson_content VALUES(213029,'It''s a trick question.',113); INSERT INTO lesson_content VALUES(213030,'Oh, tell me about it!',113); INSERT INTO lesson_content VALUES(213031,'Tell about the party!',113); INSERT INTO lesson_content VALUES(213032,'Dear, how charming!',113); INSERT INTO lesson_content VALUES(213033,'That was the question.',113); INSERT INTO lesson_content VALUES(213034,'What a precious deposit!',113); INSERT INTO lesson_content VALUES(213035,'Oh, I feel so much better!',113); INSERT INTO lesson_content VALUES(213036,'What a dull day it would be!',113); INSERT INTO lesson_content VALUES(213037,'If only life were so simple!',113); INSERT INTO lesson_content VALUES(213038,'How ridiculous you are, Tom!',113); INSERT INTO lesson_content VALUES(213039,'I quite agree with you.',113); INSERT INTO lesson_content VALUES(213040,'You got through quickly.',113); INSERT INTO lesson_content VALUES(213041,'Quite right and proper.',113); INSERT INTO lesson_content VALUES(213042,'He turned very quick upon me at this.',113); INSERT INTO lesson_content VALUES(213043,'It''s a mercy you didn''t, Mother!',113); INSERT INTO lesson_content VALUES(213044,'Dear me, I didn''t know anyone was here!',113); INSERT INTO lesson_content VALUES(213045,'Jo hurried to this quiet place.',113); INSERT INTO lesson_content VALUES(213046,'I feel quite young again after that.',113); INSERT INTO lesson_content VALUES(213047,'Patient: Doctor! You''ve got to help me! Nobody ever listens to me. No one ever pays any attention to what I have to say. Doctor: Next please!',113); INSERT INTO lesson_content VALUES(213048,'Oh! No, my love; you will not like the noise.',113); INSERT INTO lesson_content VALUES(213049,'The answers to this question were various and contradictory.',113); INSERT INTO lesson_content VALUES(213050,'The king and queen make a progress to the frontiers.',113); INSERT INTO lesson_content VALUES(213051,'Never was little garden so sad and silent!',113); INSERT INTO lesson_content VALUES(213052,'They have their own unique dress and ornaments.',113); INSERT INTO lesson_content VALUES(213053,'Please do not hesitate to contact us on further questions.',113); INSERT INTO lesson_content VALUES(214001,'He works in Zurich (Switzerland).',114); INSERT INTO lesson_content VALUES(214002,'There is no concept of negative (-) zero in mathematics.',114); INSERT INTO lesson_content VALUES(214003,'The minus sign (-) has three main uses in mathematics.',114); INSERT INTO lesson_content VALUES(214004,'Sen. John McCain (R., Arizona) spoke at length.',114); INSERT INTO lesson_content VALUES(214005,'Curly brackets - they are also called braces (US) or flower brackets (India).',114); INSERT INTO lesson_content VALUES(214006,'Smiley :-)',114); INSERT INTO lesson_content VALUES(214007,'Parentheses are also called simply brackets (UK).',114); INSERT INTO lesson_content VALUES(214008,'They exists only in some other countries (such as England and Wales).',114); INSERT INTO lesson_content VALUES(214009,'She isn''t crazy.',114); INSERT INTO lesson_content VALUES(214010,'Mrs. Bates - we passed her house - I saw her at the window.',114); INSERT INTO lesson_content VALUES(214011,'Zebras have excellent eyesight.',114); INSERT INTO lesson_content VALUES(214012,'X-radiation is a form of electromagnetic radiation.',114); INSERT INTO lesson_content VALUES(214013,'Oh no; - and it is but a short letter too.',114); INSERT INTO lesson_content VALUES(214014,'We can''t give up our girls for a dozen fortunes.',114); INSERT INTO lesson_content VALUES(214015,'He is currently retired and living in New Zealand.',114); INSERT INTO lesson_content VALUES(214016,'Bears produce a variety of vocalizations.',114); INSERT INTO lesson_content VALUES(214017,'Astronomical distances are sometimes expressed in light-years.',114); INSERT INTO lesson_content VALUES(214018,'In religion and culture, the monkey often represents quick-wittedness and mischief.',114); INSERT INTO lesson_content VALUES(215001,'The underscore "_" is used as a diacritic mark.',115); INSERT INTO lesson_content VALUES(215002,'"Assyrian/Chaldean/Syriac" reflecting the Syriac naming dispute.',115); INSERT INTO lesson_content VALUES(215003,'The character "_" was primarily used to underline words.',115); INSERT INTO lesson_content VALUES(215004,'The underscore (_) is used as a diacritic mark, "combining low line", in some African and Native American languages.',115); INSERT INTO lesson_content VALUES(215005,'An Internet email address is a string of the form local_part@domain.name.',115); INSERT INTO lesson_content VALUES(215006,'Slash "/" and back slash "" is confusing.',115); INSERT INTO lesson_content VALUES(215007,'In German, @ is sometimes used to be referred to as "Klammeraffe" (meaning "spider monkey").',115); INSERT INTO lesson_content VALUES(215008,'"n/a" is a common abbreviation for "not applicable" or "not available".',115); INSERT INTO lesson_content VALUES(215009,'Underscore: _',115); INSERT INTO lesson_content VALUES(215010,'"So do I," said Mrs. Turner gently, "very much."',115); INSERT INTO lesson_content VALUES(215011,'"There again!" she exclaimed.',115); INSERT INTO lesson_content VALUES(215012,'"How do you know I do, Miss?"',115); INSERT INTO lesson_content VALUES(215013,'"Will you come this way, please."',115); INSERT INTO lesson_content VALUES(215014,'"I''m ready to hear you," said Chris.',115); INSERT INTO lesson_content VALUES(215015,'"But what has he done?" I asked.',115); INSERT INTO lesson_content VALUES(215016,'"Don''t say anything", she whispered.',115); INSERT INTO lesson_content VALUES(215017,'"Won''t she?" asked Laurie anxiously.',115); INSERT INTO lesson_content VALUES(215018,'"I''m glad of it!" muttered Sam.',115); INSERT INTO lesson_content VALUES(215019,'"Why?" asked Meg, looking surprised.',115); INSERT INTO lesson_content VALUES(215020,'"Who did it?" demanded William.',115); INSERT INTO lesson_content VALUES(215021,'"You need not," answered the visitor.',115); INSERT INTO lesson_content VALUES(215022,'"What do you know about him?" asked Laurie.',115); INSERT INTO lesson_content VALUES(215023,'"I can''t sleep, I''m so anxious," said Peter.',115); INSERT INTO lesson_content VALUES(215024,'"This is too bad," cried Jamie, as they turned away.',115); INSERT INTO lesson_content VALUES(215025,'"Where is Mrs. Anderson?" I asked, through the door.',115); INSERT INTO lesson_content VALUES(215026,'"I''m too tired to go this afternoon," replied Jenny.',115); INSERT INTO lesson_content VALUES(215027,'The speed of light in vacuum is usually denoted by "c".',115); INSERT INTO lesson_content VALUES(215028,'Email address: firstname.lastname@host.com',115); INSERT INTO lesson_content VALUES(215029,'The most familiar contemporary use of @ is in email addresses.',115); INSERT INTO lesson_content VALUES(215030,'On some online forums @ is used to denote a reply.',115); INSERT INTO lesson_content VALUES(215031,'The at sign (@) is used in various programming languages',115); INSERT INTO lesson_content VALUES(215032,'In English, the sign @ is usually pronounced as at.',115); INSERT INTO lesson_content VALUES(215033,'A / is typically used to denote a spare when scoring bowling.',115); INSERT INTO lesson_content VALUES(215034,'The usual way to specify division in most computer programming languages is the character /.',115); INSERT INTO lesson_content VALUES(216001,'Do you mean a statute mile of 1,609.344 meters or the nautical mile of 1,852 meters?',116); INSERT INTO lesson_content VALUES(216002,'My birthday: 10/5/1968',116); INSERT INTO lesson_content VALUES(216003,'Certain shorthand date formats use / as a delimiter, for example "16/9/2003".',116); INSERT INTO lesson_content VALUES(216004,'Pi is approximately equal to 3.14159.',116); INSERT INTO lesson_content VALUES(216005,'The distance from the Earth to the Moon is 384,403 km.',116); INSERT INTO lesson_content VALUES(216006,'In 2008, there were over 922 million international tourist arrivals.',116); INSERT INTO lesson_content VALUES(216007,'It was founded at some time before 1234.',116); INSERT INTO lesson_content VALUES(216008,'1 international inch is equal to 2.54 centimeters.',116); INSERT INTO lesson_content VALUES(216009,'In 1982 he moved his 1st company to a small factory at Russel Street.',116); INSERT INTO lesson_content VALUES(216010,'Since the late 1970s, sports tourism has become increasingly popular.',116); INSERT INTO lesson_content VALUES(216011,'A light-year is the distance light travels in one year (around 9461 billion kilometres).',116); INSERT INTO lesson_content VALUES(216012,'Most mobile phones have 112, 999 and 911 as default emergency numbers that are always available.',116); INSERT INTO lesson_content VALUES(216013,'The first use of the word "computer" was recorded in 1613.',116); INSERT INTO lesson_content VALUES(216014,'The terminal area was increased to 2,500 square meters.',116); INSERT INTO lesson_content VALUES(216015,'The church was approximately 50 by 9 metres.',116); INSERT INTO lesson_content VALUES(216016,'One half: 1/2',116); INSERT INTO lesson_content VALUES(216017,'The speed of light is approximately 300,000 km each second.',116); INSERT INTO lesson_content VALUES(216018,'In simple words there are 10 cm in 1 decimetre.',116); INSERT INTO lesson_content VALUES(216019,'A different situation appeared in the 19th century;',116); INSERT INTO lesson_content VALUES(216020,'In mathematics, hexadecimal is a numeral system with a base of 16.',116); INSERT INTO lesson_content VALUES(217001,'If a < b then -a > -b.',117); INSERT INTO lesson_content VALUES(217002,'A decrease of 60% means the final amount is 40% of the original (100% - 60% = 40%).',117); INSERT INTO lesson_content VALUES(217003,'It costs $10.',117); INSERT INTO lesson_content VALUES(217004,'% meaning "per hundred".',117); INSERT INTO lesson_content VALUES(217005,'Number sign is a name for the symbol #.',117); INSERT INTO lesson_content VALUES(217006,'The U.S. Dollar ($) is divided into 100 cents.',117); INSERT INTO lesson_content VALUES(217007,'The notation a < b means that a is less than b.',117); INSERT INTO lesson_content VALUES(217008,'An ampersand (or epershand) "&" is a logogram.',117); INSERT INTO lesson_content VALUES(217009,'The symbol ''='' was not immediately popular.',117); INSERT INTO lesson_content VALUES(217010,'Ruby and Perl use $_ as a special variable.',117); INSERT INTO lesson_content VALUES(217011,'Share of the Brazilian economy: 0.8% (2004).',117); INSERT INTO lesson_content VALUES(217012,'The region most affected was Europe with a 6% decline.',117); INSERT INTO lesson_content VALUES(217013,'The notation a > b means that a is greater than b.',117); INSERT INTO lesson_content VALUES(217014,'The equality sign "=" is a mathematical symbol.',117); INSERT INTO lesson_content VALUES(217015,'In number theory, n# is the primorial of n.',117); INSERT INTO lesson_content VALUES(217016,'The dollar (often represented by the dollar sign $) is the name of the official currency of many countries.',117); INSERT INTO lesson_content VALUES(217017,'# is one of the two standard special keys beyond digits 0 to 9 on a telephone keypad.',117); INSERT INTO lesson_content VALUES(218000, 'This is the last text lesson:',118); INSERT INTO lesson_content VALUES(219000, '13574962805',119); INSERT INTO lesson_content VALUES(219001, '1142',119); INSERT INTO lesson_content VALUES(219002, '8623',119); INSERT INTO lesson_content VALUES(219003, '9849',119); INSERT INTO lesson_content VALUES(219004, '2104',119); INSERT INTO lesson_content VALUES(219005, '0809',119); INSERT INTO lesson_content VALUES(219006, '2134',119); INSERT INTO lesson_content VALUES(219007, '1727',119); INSERT INTO lesson_content VALUES(219008, '8423',119); INSERT INTO lesson_content VALUES(219009, '990',119); INSERT INTO lesson_content VALUES(219010, '1652',119); INSERT INTO lesson_content VALUES(219011, '2847',119); INSERT INTO lesson_content VALUES(219012, '5530',119); INSERT INTO lesson_content VALUES(219013, '3661',119); INSERT INTO lesson_content VALUES(219014, '0071',119); INSERT INTO lesson_content VALUES(219015, '1821',119); INSERT INTO lesson_content VALUES(219016, '6744',119); INSERT INTO lesson_content VALUES(219017, '5215',119); INSERT INTO lesson_content VALUES(219018, '2211',119); INSERT INTO lesson_content VALUES(219019, '141',119); INSERT INTO lesson_content VALUES(219020, '9901',119); INSERT INTO lesson_content VALUES(219021, '21',119); INSERT INTO lesson_content VALUES(219022, '94',119); INSERT INTO lesson_content VALUES(219023, '16743',119); INSERT INTO lesson_content VALUES(219024, '8820',119); INSERT INTO lesson_content VALUES(219025, '002',119); INSERT INTO lesson_content VALUES(219026, '922',119); INSERT INTO lesson_content VALUES(219027, '336',119); INSERT INTO lesson_content VALUES(219028, '066',119); INSERT INTO lesson_content VALUES(219029, '1',119); INSERT INTO lesson_content VALUES(219030, '76',119); INSERT INTO lesson_content VALUES(219031, '924',119); INSERT INTO lesson_content VALUES(219032, '845',119); INSERT INTO lesson_content VALUES(219033, '3059',119); INSERT INTO lesson_content VALUES(219034, '23',119); INSERT INTO lesson_content VALUES(219035, '61',119); INSERT INTO lesson_content VALUES(219036, '97',119); INSERT INTO lesson_content VALUES(219037, '104',119); INSERT INTO lesson_content VALUES(219038, '12',119); INSERT INTO lesson_content VALUES(219039, '29',119); INSERT INTO lesson_content VALUES(219040, '18',119); INSERT INTO lesson_content VALUES(219041, '46',119); INSERT INTO lesson_content VALUES(219042, '404',119); INSERT INTO lesson_content VALUES(219043, '10',119); INSERT INTO lesson_content VALUES(219044, '3',119); INSERT INTO lesson_content VALUES(219045, '9',119); INSERT INTO lesson_content VALUES(219046, '5',119); INSERT INTO lesson_content VALUES(219047, '2',119); INSERT INTO lesson_content VALUES(219048, '7',119); INSERT INTO lesson_content VALUES(219049, '6',119); INSERT INTO lesson_content VALUES(219050, '4',119); INSERT INTO lesson_content VALUES(220000, '13/2+212-78*2+23.784',120); INSERT INTO lesson_content VALUES(220001, '54+900',120); INSERT INTO lesson_content VALUES(220002, '21/7',120); INSERT INTO lesson_content VALUES(220003, '22988,35/119*100',120); INSERT INTO lesson_content VALUES(220004, '66.72+47.76',120); INSERT INTO lesson_content VALUES(220005, '0.046*33',120); INSERT INTO lesson_content VALUES(220006, '24-9',120); INSERT INTO lesson_content VALUES(220007, '0.6*74+98',120); INSERT INTO lesson_content VALUES(220008, '91/12-6.53',120); INSERT INTO lesson_content VALUES(220009, '+28',120); INSERT INTO lesson_content VALUES(220010, '/47',120); INSERT INTO lesson_content VALUES(220011, '-64',120); INSERT INTO lesson_content VALUES(220012, '*4',120); INSERT INTO lesson_content VALUES(220013, '38',120); INSERT INTO lesson_content VALUES(220014, '/934',120); INSERT INTO lesson_content VALUES(220015, '/77.78',120); INSERT INTO lesson_content VALUES(220016, '*1000',120); INSERT INTO lesson_content VALUES(220017, '-89.3+10',120); INSERT INTO lesson_content VALUES(220018, '10.01*0.9',120); INSERT INTO lesson_content VALUES(220019, '+503/3600',120); INSERT INTO lesson_content VALUES(220020, '1.11694+5.736',120); INSERT INTO lesson_content VALUES(220021, '+10',120); INSERT INTO lesson_content VALUES(220022, '+300',120); INSERT INTO lesson_content VALUES(220023, '-45',120); INSERT INTO lesson_content VALUES(220024, '*19',120); INSERT INTO lesson_content VALUES(220025, '-900',120); INSERT INTO lesson_content VALUES(220026, '/16',120); INSERT INTO lesson_content VALUES(220027, '+3.6',120); INSERT INTO lesson_content VALUES(220028, '*0.19',120); INSERT INTO lesson_content VALUES(220029, '100*1.19',120); INSERT INTO lesson_content VALUES(220030, '0.6',120); INSERT INTO lesson_content VALUES(301001,'trauernd',201); INSERT INTO lesson_content VALUES(301002,'naturrein',201); INSERT INTO lesson_content VALUES(301003,'darunter',201); INSERT INTO lesson_content VALUES(301004,'trauerrand',201); INSERT INTO lesson_content VALUES(301005,'naturdaunen',201); INSERT INTO lesson_content VALUES(301006,'trauerrunde',201); INSERT INTO lesson_content VALUES(301007,'untereinander',201); INSERT INTO lesson_content VALUES(301008,'urtierarten',201); INSERT INTO lesson_content VALUES(301009,'drunter',201); INSERT INTO lesson_content VALUES(301010,'dauert',201); INSERT INTO lesson_content VALUES(301011,'raunte',201); INSERT INTO lesson_content VALUES(301012,'raunend',201); INSERT INTO lesson_content VALUES(301013,'innenrad',201); INSERT INTO lesson_content VALUES(301014,'dauernd',201); INSERT INTO lesson_content VALUES(301015,'andauernd',201); INSERT INTO lesson_content VALUES(301016,'trainer',201); INSERT INTO lesson_content VALUES(301017,'einrad',201); INSERT INTO lesson_content VALUES(301018,'tiernarr',201); INSERT INTO lesson_content VALUES(301019,'untier',201); INSERT INTO lesson_content VALUES(301020,'dritten',201); INSERT INTO lesson_content VALUES(301021,'dauern',201); INSERT INTO lesson_content VALUES(301022,'einander',201); INSERT INTO lesson_content VALUES(301023,'dauerte',201); INSERT INTO lesson_content VALUES(301024,'trainiert',201); INSERT INTO lesson_content VALUES(301025,'trauen',201); INSERT INTO lesson_content VALUES(301026,'ineinander',201); INSERT INTO lesson_content VALUES(301027,'trainieren',201); INSERT INTO lesson_content VALUES(301028,'aneinander',201); INSERT INTO lesson_content VALUES(301029,'runderneuert',201); INSERT INTO lesson_content VALUES(301030,'rattern',201); INSERT INTO lesson_content VALUES(301031,'reiten',201); INSERT INTO lesson_content VALUES(301032,'runter',201); INSERT INTO lesson_content VALUES(301033,'datei',201); INSERT INTO lesson_content VALUES(301034,'daten',201); INSERT INTO lesson_content VALUES(301035,'unrat',201); INSERT INTO lesson_content VALUES(301036,'natur',201); INSERT INTO lesson_content VALUES(301037,'daune',201); INSERT INTO lesson_content VALUES(301038,'darin',201); INSERT INTO lesson_content VALUES(301039,'ruine',201); INSERT INTO lesson_content VALUES(301040,'adieu',201); INSERT INTO lesson_content VALUES(301041,'ariane',201); INSERT INTO lesson_content VALUES(301042,'ruinen',201); INSERT INTO lesson_content VALUES(301043,'raute',201); INSERT INTO lesson_content VALUES(301044,'nieder',201); INSERT INTO lesson_content VALUES(301045,'untreue',201); INSERT INTO lesson_content VALUES(301046,'dreirad',201); INSERT INTO lesson_content VALUES(301047,'radrennen',201); INSERT INTO lesson_content VALUES(301048,'rainer',201); INSERT INTO lesson_content VALUES(301049,'tierart',201); INSERT INTO lesson_content VALUES(301050,'unter',201); INSERT INTO lesson_content VALUES(301051,'anderen',201); INSERT INTO lesson_content VALUES(301052,'andere',201); INSERT INTO lesson_content VALUES(301053,'erneut',201); INSERT INTO lesson_content VALUES(301054,'anderer',201); INSERT INTO lesson_content VALUES(301055,'erinnert',201); INSERT INTO lesson_content VALUES(301056,'dritte',201); INSERT INTO lesson_content VALUES(301057,'dient',201); INSERT INTO lesson_content VALUES(301058,'derart',201); INSERT INTO lesson_content VALUES(301059,'antreten',201); INSERT INTO lesson_content VALUES(301060,'teuren',201); INSERT INTO lesson_content VALUES(301061,'erinnerte',201); INSERT INTO lesson_content VALUES(301062,'internen',201); INSERT INTO lesson_content VALUES(301063,'unteren',201); INSERT INTO lesson_content VALUES(301064,'interne',201); INSERT INTO lesson_content VALUES(301065,'ernannt',201); INSERT INTO lesson_content VALUES(301066,'diente',201); INSERT INTO lesson_content VALUES(301067,'traten',201); INSERT INTO lesson_content VALUES(301068,'erneuten',201); INSERT INTO lesson_content VALUES(301069,'dritter',201); INSERT INTO lesson_content VALUES(301070,'deuten',201); INSERT INTO lesson_content VALUES(301071,'erneute',201); INSERT INTO lesson_content VALUES(301072,'eintreten',201); INSERT INTO lesson_content VALUES(301073,'intern',201); INSERT INTO lesson_content VALUES(301074,'andern',201); INSERT INTO lesson_content VALUES(301075,'erneuert',201); INSERT INTO lesson_content VALUES(301076,'dienten',201); INSERT INTO lesson_content VALUES(301077,'runden',201); INSERT INTO lesson_content VALUES(301078,'raten',201); INSERT INTO lesson_content VALUES(301079,'rindernieren',201); INSERT INTO lesson_content VALUES(301080,'arena',201); INSERT INTO lesson_content VALUES(301081,'deine',201); INSERT INTO lesson_content VALUES(301082,'einer',201); INSERT INTO lesson_content VALUES(301083,'entern',201); INSERT INTO lesson_content VALUES(301084,'euter',201); INSERT INTO lesson_content VALUES(301085,'neid',201); INSERT INTO lesson_content VALUES(301086,'rand',201); INSERT INTO lesson_content VALUES(301087,'rein',201); INSERT INTO lesson_content VALUES(301088,'reiter',201); INSERT INTO lesson_content VALUES(301089,'rennt',201); INSERT INTO lesson_content VALUES(301090,'rind',201); INSERT INTO lesson_content VALUES(301091,'rinne',201); INSERT INTO lesson_content VALUES(301092,'rund',201); INSERT INTO lesson_content VALUES(301093,'rute',201); INSERT INTO lesson_content VALUES(301094,'tante',201); INSERT INTO lesson_content VALUES(301095,'teuer',201); INSERT INTO lesson_content VALUES(301096,'tina',201); INSERT INTO lesson_content VALUES(301097,'treu',201); INSERT INTO lesson_content VALUES(301098,'treue',201); INSERT INTO lesson_content VALUES(301099,'urin',201); INSERT INTO lesson_content VALUES(301100,'dran',201); INSERT INTO lesson_content VALUES(301101,'tier',201); INSERT INTO lesson_content VALUES(301102,'arie',201); INSERT INTO lesson_content VALUES(301103,'urne',201); INSERT INTO lesson_content VALUES(301104,'uran',201); INSERT INTO lesson_content VALUES(301105,'ader',201); INSERT INTO lesson_content VALUES(301106,'narren',201); INSERT INTO lesson_content VALUES(301107,'audi',201); INSERT INTO lesson_content VALUES(301108,'drei',201); INSERT INTO lesson_content VALUES(301109,'deren',201); INSERT INTO lesson_content VALUES(301110,'daran',201); INSERT INTO lesson_content VALUES(301111,'neuer',201); INSERT INTO lesson_content VALUES(301112,'nannte',201); INSERT INTO lesson_content VALUES(301113,'reden',201); INSERT INTO lesson_content VALUES(301114,'treten',201); INSERT INTO lesson_content VALUES(301115,'unten',201); INSERT INTO lesson_content VALUES(301116,'dienen',201); INSERT INTO lesson_content VALUES(301117,'erinnern',201); INSERT INTO lesson_content VALUES(301118,'retten',201); INSERT INTO lesson_content VALUES(301119,'endet',201); INSERT INTO lesson_content VALUES(301120,'teurer',201); INSERT INTO lesson_content VALUES(301121,'inneren',201); INSERT INTO lesson_content VALUES(301122,'reine',201); INSERT INTO lesson_content VALUES(301123,'teure',201); INSERT INTO lesson_content VALUES(301124,'innere',201); INSERT INTO lesson_content VALUES(301125,'trennen',201); INSERT INTO lesson_content VALUES(301126,'endete',201); INSERT INTO lesson_content VALUES(301127,'drin',201); INSERT INTO lesson_content VALUES(301128,'redet',201); INSERT INTO lesson_content VALUES(301129,'reinen',201); INSERT INTO lesson_content VALUES(301130,'deutet',201); INSERT INTO lesson_content VALUES(301131,'nannten',201); INSERT INTO lesson_content VALUES(301132,'trennt',201); INSERT INTO lesson_content VALUES(301133,'traut',201); INSERT INTO lesson_content VALUES(301134,'taten',201); INSERT INTO lesson_content VALUES(301135,'deutete',201); INSERT INTO lesson_content VALUES(301136,'dein',201); INSERT INTO lesson_content VALUES(301137,'ade',201); INSERT INTO lesson_content VALUES(301138,'dann',201); INSERT INTO lesson_content VALUES(301139,'einen',201); INSERT INTO lesson_content VALUES(301140,'ente',201); INSERT INTO lesson_content VALUES(301141,'euer',201); INSERT INTO lesson_content VALUES(301142,'neu',201); INSERT INTO lesson_content VALUES(301143,'nie',201); INSERT INTO lesson_content VALUES(301144,'nur',201); INSERT INTO lesson_content VALUES(301145,'rad',201); INSERT INTO lesson_content VALUES(301146,'teer',201); INSERT INTO lesson_content VALUES(301147,'und',201); INSERT INTO lesson_content VALUES(301148,'ute',201); INSERT INTO lesson_content VALUES(301149,'den',201); INSERT INTO lesson_content VALUES(301150,'dir',201); INSERT INTO lesson_content VALUES(301151,'die',201); INSERT INTO lesson_content VALUES(301152,'der',201); INSERT INTO lesson_content VALUES(301153,'ein',201); INSERT INTO lesson_content VALUES(301154,'eine',201); INSERT INTO lesson_content VALUES(301155,'neue',201); INSERT INTO lesson_content VALUES(301156,'neuen',201); INSERT INTO lesson_content VALUES(301157,'denn',201); INSERT INTO lesson_content VALUES(301158,'denen',201); INSERT INTO lesson_content VALUES(301159,'tun',201); INSERT INTO lesson_content VALUES(301160,'neun',201); INSERT INTO lesson_content VALUES(301161,'nennt',201); INSERT INTO lesson_content VALUES(301162,'tritt',201); INSERT INTO lesson_content VALUES(301163,'dar',201); INSERT INTO lesson_content VALUES(301164,'trat',201); INSERT INTO lesson_content VALUES(301165,'and',201); INSERT INTO lesson_content VALUES(301166,'nein',201); INSERT INTO lesson_content VALUES(301167,'innen',201); INSERT INTO lesson_content VALUES(301168,'enden',201); INSERT INTO lesson_content VALUES(301169,'derer',201); INSERT INTO lesson_content VALUES(301170,'net',201); INSERT INTO lesson_content VALUES(301171,'nett',201); INSERT INTO lesson_content VALUES(301172,'an',201); INSERT INTO lesson_content VALUES(301173,'anna',201); INSERT INTO lesson_content VALUES(301174,'nun',201); INSERT INTO lesson_content VALUES(301175,'rar',201); INSERT INTO lesson_content VALUES(301176,'du',201); INSERT INTO lesson_content VALUES(301177,'in',201); INSERT INTO lesson_content VALUES(301178,'er',201); INSERT INTO lesson_content VALUES(301179,'da',201); INSERT INTO lesson_content VALUES(301180,'de',201); INSERT INTO lesson_content VALUES(301181,'nennen',201); INSERT INTO lesson_content VALUES(301182,'tut',201); INSERT INTO lesson_content VALUES(301183,'tat',201); INSERT INTO lesson_content VALUES(301184,'en',201); INSERT INTO lesson_content VALUES(302001,'als',202); INSERT INTO lesson_content VALUES(302002,'las',202); INSERT INTO lesson_content VALUES(302003,'last',202); INSERT INTO lesson_content VALUES(302004,'list',202); INSERT INTO lesson_content VALUES(302005,'saal',202); INSERT INTO lesson_content VALUES(302006,'lust',202); INSERT INTO lesson_content VALUES(302007,'lars',202); INSERT INTO lesson_content VALUES(302008,'nils',202); INSERT INTO lesson_content VALUES(302009,'ilse',202); INSERT INTO lesson_content VALUES(302010,'lies',202); INSERT INTO lesson_content VALUES(302011,'laus',202); INSERT INTO lesson_content VALUES(302012,'seil',202); INSERT INTO lesson_content VALUES(302013,'eilst',202); INSERT INTO lesson_content VALUES(302014,'lesen',202); INSERT INTO lesson_content VALUES(302015,'liest',202); INSERT INTO lesson_content VALUES(302016,'teils',202); INSERT INTO lesson_content VALUES(302017,'leise',202); INSERT INTO lesson_content VALUES(302018,'altes',202); INSERT INTO lesson_content VALUES(302019,'elster',202); INSERT INTO lesson_content VALUES(302020,'lernst',202); INSERT INTO lesson_content VALUES(302021,'leiste',202); INSERT INTO lesson_content VALUES(302022,'diesel',202); INSERT INTO lesson_content VALUES(302023,'selten',202); INSERT INTO lesson_content VALUES(302024,'leisten',202); INSERT INTO lesson_content VALUES(302025,'leidest',202); INSERT INTO lesson_content VALUES(302026,'realist',202); INSERT INTO lesson_content VALUES(302027,'leistet',202); INSERT INTO lesson_content VALUES(302028,'anseilen',202); INSERT INTO lesson_content VALUES(302029,'seltener',202); INSERT INTO lesson_content VALUES(302030,'seltenen',202); INSERT INTO lesson_content VALUES(302031,'entlastet',202); INSERT INTO lesson_content VALUES(302032,'entlasten',202); INSERT INTO lesson_content VALUES(302033,'realisiert',202); INSERT INTO lesson_content VALUES(302034,'realisieren',202); INSERT INTO lesson_content VALUES(302035,'lass',202); INSERT INTO lesson_content VALUES(302036,'lasst',202); INSERT INTO lesson_content VALUES(302037,'stall',202); INSERT INTO lesson_content VALUES(302038,'alles',202); INSERT INTO lesson_content VALUES(302039,'lasse',202); INSERT INTO lesson_content VALUES(302040,'still',202); INSERT INTO lesson_content VALUES(302041,'lassen',202); INSERT INTO lesson_content VALUES(302042,'nessel',202); INSERT INTO lesson_content VALUES(302043,'dussel',202); INSERT INTO lesson_content VALUES(302044,'stille',202); INSERT INTO lesson_content VALUES(302045,'stellt',202); INSERT INTO lesson_content VALUES(302046,'stelle',202); INSERT INTO lesson_content VALUES(302047,'rasseln',202); INSERT INTO lesson_content VALUES(302048,'stellen',202); INSERT INTO lesson_content VALUES(302049,'stellte',202); INSERT INTO lesson_content VALUES(302050,'stillen',202); INSERT INTO lesson_content VALUES(302051,'stellten',202); INSERT INTO lesson_content VALUES(302052,'erstellt',202); INSERT INTO lesson_content VALUES(302053,'erlassen',202); INSERT INTO lesson_content VALUES(302054,'anstelle',202); INSERT INTO lesson_content VALUES(302055,'entlassen',202); INSERT INTO lesson_content VALUES(302056,'erstellen',202); INSERT INTO lesson_content VALUES(302057,'darstellt',202); INSERT INTO lesson_content VALUES(302058,'einstellen',202); INSERT INTO lesson_content VALUES(302059,'darstellen',202); INSERT INTO lesson_content VALUES(302060,'installiert',202); INSERT INTO lesson_content VALUES(302061,'unterstellt',202); INSERT INTO lesson_content VALUES(302062,'industrielle',202); INSERT INTO lesson_content VALUES(302063,'industriellen',202); INSERT INTO lesson_content VALUES(302064,'sessel',202); INSERT INTO lesson_content VALUES(302065,'ass',202); INSERT INTO lesson_content VALUES(302066,'all',202); INSERT INTO lesson_content VALUES(302067,'dill',202); INSERT INTO lesson_content VALUES(302068,'dass',202); INSERT INTO lesson_content VALUES(302069,'nuss',202); INSERT INTO lesson_content VALUES(302070,'es',202); INSERT INTO lesson_content VALUES(302071,'alle',202); INSERT INTO lesson_content VALUES(302072,'null',202); INSERT INTO lesson_content VALUES(302073,'allen',202); INSERT INTO lesson_content VALUES(302074,'aller',202); INSERT INTO lesson_content VALUES(302075,'stets',202); INSERT INTO lesson_content VALUES(302076,'essen',202); INSERT INTO lesson_content VALUES(302077,'allerlei',202); INSERT INTO lesson_content VALUES(302078,'das',202); INSERT INTO lesson_content VALUES(302079,'ist',202); INSERT INTO lesson_content VALUES(302080,'tassen',202); INSERT INTO lesson_content VALUES(302081,'teller',202); INSERT INTO lesson_content VALUES(302082,'des',202); INSERT INTO lesson_content VALUES(302083,'aus',202); INSERT INTO lesson_content VALUES(302084,'sie',202); INSERT INTO lesson_content VALUES(302085,'sei',202); INSERT INTO lesson_content VALUES(302086,'ins',202); INSERT INTO lesson_content VALUES(302087,'uns',202); INSERT INTO lesson_content VALUES(302088,'dieses',202); INSERT INTO lesson_content VALUES(302089,'dessen',202); INSERT INTO lesson_content VALUES(302090,'allein',202); INSERT INTO lesson_content VALUES(302091,'seines',202); INSERT INTO lesson_content VALUES(302092,'alt',202); INSERT INTO lesson_content VALUES(302093,'ans',202); INSERT INTO lesson_content VALUES(302094,'erstes',202); INSERT INTO lesson_content VALUES(302095,'lud',202); INSERT INTO lesson_content VALUES(302096,'sid',202); INSERT INTO lesson_content VALUES(303001,'ich',203); INSERT INTO lesson_content VALUES(303002,'acht',203); INSERT INTO lesson_content VALUES(303003,'sachlich',203); INSERT INTO lesson_content VALUES(303004,'auch',203); INSERT INTO lesson_content VALUES(303005,'dach',203); INSERT INTO lesson_content VALUES(303006,'nach',203); INSERT INTO lesson_content VALUES(303007,'sich',203); INSERT INTO lesson_content VALUES(303008,'schlecht',203); INSERT INTO lesson_content VALUES(303009,'dich',203); INSERT INTO lesson_content VALUES(303010,'schlicht',203); INSERT INTO lesson_content VALUES(303011,'euch',203); INSERT INTO lesson_content VALUES(303012,'echt',203); INSERT INTO lesson_content VALUES(303013,'tschechische',203); INSERT INTO lesson_content VALUES(303014,'tschechischen',203); INSERT INTO lesson_content VALUES(303015,'schlechte',203); INSERT INTO lesson_content VALUES(303016,'reichlich',203); INSERT INTO lesson_content VALUES(303017,'technisch',203); INSERT INTO lesson_content VALUES(303018,'rechtlich',203); INSERT INTO lesson_content VALUES(303019,'sichtlich',203); INSERT INTO lesson_content VALUES(303020,'sucht',203); INSERT INTO lesson_content VALUES(303021,'nachtlicht',203); INSERT INTO lesson_content VALUES(303022,'lurch',203); INSERT INTO lesson_content VALUES(303023,'nicht',203); INSERT INTO lesson_content VALUES(303024,'nacht',203); INSERT INTO lesson_content VALUES(303025,'durch',203); INSERT INTO lesson_content VALUES(303026,'sechs',203); INSERT INTO lesson_content VALUES(303027,'recht',203); INSERT INTO lesson_content VALUES(303028,'rasch',203); INSERT INTO lesson_content VALUES(303029,'technische',203); INSERT INTO lesson_content VALUES(303030,'schlechter',203); INSERT INTO lesson_content VALUES(303031,'schlechten',203); INSERT INTO lesson_content VALUES(303032,'sicherlich',203); INSERT INTO lesson_content VALUES(303033,'echte',203); INSERT INTO lesson_content VALUES(303034,'dicht',203); INSERT INTO lesson_content VALUES(303035,'reich',203); INSERT INTO lesson_content VALUES(303036,'rechtliche',203); INSERT INTO lesson_content VALUES(303037,'lacht',203); INSERT INTO lesson_content VALUES(303038,'schlechtes',203); INSERT INTO lesson_content VALUES(303039,'durchsucht',203); INSERT INTO lesson_content VALUES(303040,'schlichten',203); INSERT INTO lesson_content VALUES(303041,'durchschnittlich',203); INSERT INTO lesson_content VALUES(303042,'leichentuch',203); INSERT INTO lesson_content VALUES(303043,'technischen',203); INSERT INTO lesson_content VALUES(303044,'chinesische',203); INSERT INTO lesson_content VALUES(303045,'rechtlichen',203); INSERT INTO lesson_content VALUES(303046,'technischer',203); INSERT INTO lesson_content VALUES(303047,'christliche',203); INSERT INTO lesson_content VALUES(303048,'durchschnittliche',203); INSERT INTO lesson_content VALUES(303049,'tschetschenischen',203); INSERT INTO lesson_content VALUES(303050,'lachen',203); INSERT INTO lesson_content VALUES(303051,'rechts',203); INSERT INTO lesson_content VALUES(303052,'nichte',203); INSERT INTO lesson_content VALUES(303053,'nichts',203); INSERT INTO lesson_content VALUES(303054,'sicher',203); INSERT INTO lesson_content VALUES(303055,'leicht',203); INSERT INTO lesson_content VALUES(303056,'danach',203); INSERT INTO lesson_content VALUES(303057,'suchen',203); INSERT INTO lesson_content VALUES(303058,'reicht',203); INSERT INTO lesson_content VALUES(303059,'schien',203); INSERT INTO lesson_content VALUES(303060,'chinesischen',203); INSERT INTO lesson_content VALUES(303061,'achten',203); INSERT INTO lesson_content VALUES(303062,'nachts',203); INSERT INTO lesson_content VALUES(303063,'dachte',203); INSERT INTO lesson_content VALUES(303064,'durchs',203); INSERT INTO lesson_content VALUES(303065,'suchte',203); INSERT INTO lesson_content VALUES(303066,'schaut',203); INSERT INTO lesson_content VALUES(303067,'rechte',203); INSERT INTO lesson_content VALUES(303068,'echten',203); INSERT INTO lesson_content VALUES(303069,'christlichen',203); INSERT INTO lesson_content VALUES(303070,'reiche',203); INSERT INTO lesson_content VALUES(303071,'taucht',203); INSERT INTO lesson_content VALUES(303072,'schuld',203); INSERT INTO lesson_content VALUES(303073,'durchschnittlichen',203); INSERT INTO lesson_content VALUES(303074,'rechne',203); INSERT INTO lesson_content VALUES(303075,'schade',203); INSERT INTO lesson_content VALUES(303076,'schier',203); INSERT INTO lesson_content VALUES(303077,'rasche',203); INSERT INTO lesson_content VALUES(303078,'echter',203); INSERT INTO lesson_content VALUES(303079,'raucher',203); INSERT INTO lesson_content VALUES(303080,'schnell',203); INSERT INTO lesson_content VALUES(303081,'scheint',203); INSERT INTO lesson_content VALUES(303082,'endlich',203); INSERT INTO lesson_content VALUES(303083,'dadurch',203); INSERT INTO lesson_content VALUES(303084,'rechnen',203); INSERT INTO lesson_content VALUES(303085,'rechnet',203); INSERT INTO lesson_content VALUES(303086,'reichen',203); INSERT INTO lesson_content VALUES(303087,'sichern',203); INSERT INTO lesson_content VALUES(303088,'rechten',203); INSERT INTO lesson_content VALUES(303089,'richtet',203); INSERT INTO lesson_content VALUES(303090,'richten',203); INSERT INTO lesson_content VALUES(303091,'schauen',203); INSERT INTO lesson_content VALUES(303092,'leichte',203); INSERT INTO lesson_content VALUES(303093,'deutsch',203); INSERT INTO lesson_content VALUES(303094,'etliche',203); INSERT INTO lesson_content VALUES(303095,'reichte',203); INSERT INTO lesson_content VALUES(303096,'sichere',203); INSERT INTO lesson_content VALUES(303097,'suchten',203); INSERT INTO lesson_content VALUES(303098,'tauchen',203); INSERT INTO lesson_content VALUES(303099,'sichert',203); INSERT INTO lesson_content VALUES(303100,'schaden',203); INSERT INTO lesson_content VALUES(303101,'unterschiedlich',203); INSERT INTO lesson_content VALUES(303102,'deutsche',203); INSERT INTO lesson_content VALUES(303103,'deutlich',203); INSERT INTO lesson_content VALUES(303104,'erreicht',203); INSERT INTO lesson_content VALUES(303105,'durchaus',203); INSERT INTO lesson_content VALUES(303106,'scheinen',203); INSERT INTO lesson_content VALUES(303107,'leichter',203); INSERT INTO lesson_content VALUES(303108,'unterschiedliche',203); INSERT INTO lesson_content VALUES(303109,'erschien',203); INSERT INTO lesson_content VALUES(303110,'schnelle',203); INSERT INTO lesson_content VALUES(303111,'leichten',203); INSERT INTO lesson_content VALUES(303112,'sicheren',203); INSERT INTO lesson_content VALUES(303113,'sechsten',203); INSERT INTO lesson_content VALUES(303114,'richtete',203); INSERT INTO lesson_content VALUES(303115,'sicherte',203); INSERT INTO lesson_content VALUES(303116,'sicherer',203); INSERT INTO lesson_content VALUES(303117,'unsicher',203); INSERT INTO lesson_content VALUES(303118,'reichten',203); INSERT INTO lesson_content VALUES(303119,'irischen',203); INSERT INTO lesson_content VALUES(303120,'indische',203); INSERT INTO lesson_content VALUES(303121,'schienen',203); INSERT INTO lesson_content VALUES(303122,'rutschte',203); INSERT INTO lesson_content VALUES(303123,'leuchtet',203); INSERT INTO lesson_content VALUES(303124,'unterschiedlichen',203); INSERT INTO lesson_content VALUES(303125,'unterschiedlicher',203); INSERT INTO lesson_content VALUES(303126,'deutschen',203); INSERT INTO lesson_content VALUES(303127,'erreichen',203); INSERT INTO lesson_content VALUES(303128,'deutscher',203); INSERT INTO lesson_content VALUES(303129,'erscheint',203); INSERT INTO lesson_content VALUES(303130,'russische',203); INSERT INTO lesson_content VALUES(303131,'schneller',203); INSERT INTO lesson_content VALUES(303132,'erreichte',203); INSERT INTO lesson_content VALUES(303133,'deutliche',203); INSERT INTO lesson_content VALUES(303134,'errichtet',203); INSERT INTO lesson_content VALUES(303135,'schnellen',203); INSERT INTO lesson_content VALUES(303136,'entschied',203); INSERT INTO lesson_content VALUES(303137,'drastisch',203); INSERT INTO lesson_content VALUES(303138,'schildert',203); INSERT INTO lesson_content VALUES(303139,'scheitern',203); INSERT INTO lesson_content VALUES(303140,'errichten',203); INSERT INTO lesson_content VALUES(303141,'indischen',203); INSERT INTO lesson_content VALUES(303142,'streichen',203); INSERT INTO lesson_content VALUES(303143,'deutsches',203); INSERT INTO lesson_content VALUES(303144,'errechnet',203); INSERT INTO lesson_content VALUES(303145,'identisch',203); INSERT INTO lesson_content VALUES(303146,'staatlich',203); INSERT INTO lesson_content VALUES(303147,'scheitert',203); INSERT INTO lesson_content VALUES(303148,'iranische',203); INSERT INTO lesson_content VALUES(303149,'nachsteuer',203); INSERT INTO lesson_content VALUES(303150,'russischen',203); INSERT INTO lesson_content VALUES(303151,'erschienen',203); INSERT INTO lesson_content VALUES(303152,'erscheinen',203); INSERT INTO lesson_content VALUES(303153,'staatliche',203); INSERT INTO lesson_content VALUES(303154,'untersucht',203); INSERT INTO lesson_content VALUES(303155,'deutlicher',203); INSERT INTO lesson_content VALUES(303156,'scheiterte',203); INSERT INTO lesson_content VALUES(303157,'erreichten',203); INSERT INTO lesson_content VALUES(303158,'deutlichen',203); INSERT INTO lesson_content VALUES(303159,'restlichen',203); INSERT INTO lesson_content VALUES(303160,'einrichten',203); INSERT INTO lesson_content VALUES(303161,'russischer',203); INSERT INTO lesson_content VALUES(303162,'iranischen',203); INSERT INTO lesson_content VALUES(303163,'ausreichen',203); INSERT INTO lesson_content VALUES(303164,'drastische',203); INSERT INTO lesson_content VALUES(303165,'entschieden',203); INSERT INTO lesson_content VALUES(303166,'entscheiden',203); INSERT INTO lesson_content VALUES(303167,'staatlichen',203); INSERT INTO lesson_content VALUES(303168,'ausreichend',203); INSERT INTO lesson_content VALUES(303169,'israelische',203); INSERT INTO lesson_content VALUES(303170,'entscheidet',203); INSERT INTO lesson_content VALUES(303171,'erleichtert',203); INSERT INTO lesson_content VALUES(303172,'untersuchen',203); INSERT INTO lesson_content VALUES(303173,'erleichtern',203); INSERT INTO lesson_content VALUES(303174,'erstaunlich',203); INSERT INTO lesson_content VALUES(303175,'asiatischen',203); INSERT INTO lesson_content VALUES(303176,'staatlicher',203); INSERT INTO lesson_content VALUES(303177,'anscheinend',203); INSERT INTO lesson_content VALUES(303178,'realistisch',203); INSERT INTO lesson_content VALUES(303179,'unterstrich',203); INSERT INTO lesson_content VALUES(303180,'drastischen',203); INSERT INTO lesson_content VALUES(303181,'steuerliche',203); INSERT INTO lesson_content VALUES(303182,'israelischen',203); INSERT INTO lesson_content VALUES(303183,'italienische',203); INSERT INTO lesson_content VALUES(303184,'entscheidend',203); INSERT INTO lesson_content VALUES(303185,'unterrichtet',203); INSERT INTO lesson_content VALUES(303186,'literarische',203); INSERT INTO lesson_content VALUES(303187,'ausreichende',203); INSERT INTO lesson_content VALUES(303188,'untersuchten',203); INSERT INTO lesson_content VALUES(303189,'erschienenen',203); INSERT INTO lesson_content VALUES(303190,'steuerlichen',203); INSERT INTO lesson_content VALUES(303191,'italienischen',203); INSERT INTO lesson_content VALUES(303192,'entscheidende',203); INSERT INTO lesson_content VALUES(303193,'unterscheiden',203); INSERT INTO lesson_content VALUES(303194,'unterscheidet',203); INSERT INTO lesson_content VALUES(303195,'literarischen',203); INSERT INTO lesson_content VALUES(303196,'australischen',203); INSERT INTO lesson_content VALUES(303197,'sicherstellen',203); INSERT INTO lesson_content VALUES(303198,'entscheidenden',203); INSERT INTO lesson_content VALUES(303199,'schlechthin',203); INSERT INTO lesson_content VALUES(303200,'hinsichtlich',203); INSERT INTO lesson_content VALUES(303201,'huch',203); INSERT INTO lesson_content VALUES(303202,'hecht',203); INSERT INTO lesson_content VALUES(303203,'hecheln',203); INSERT INTO lesson_content VALUES(303204,'ehrlich',203); INSERT INTO lesson_content VALUES(303205,'suchhund',203); INSERT INTO lesson_content VALUES(303206,'heucheln',203); INSERT INTO lesson_content VALUES(303207,'herrscht',203); INSERT INTO lesson_content VALUES(303208,'hindurch',203); INSERT INTO lesson_content VALUES(303209,'herrschte',203); INSERT INTO lesson_content VALUES(303210,'hessische',203); INSERT INTO lesson_content VALUES(303211,'herrschen',203); INSERT INTO lesson_content VALUES(303212,'hessischen',203); INSERT INTO lesson_content VALUES(303213,'inhaltlich',203); INSERT INTO lesson_content VALUES(303214,'ethnischen',203); INSERT INTO lesson_content VALUES(303215,'hinreichend',203); INSERT INTO lesson_content VALUES(303216,'einheitliche',203); INSERT INTO lesson_content VALUES(303217,'herrschenden',203); INSERT INTO lesson_content VALUES(303218,'einheitlichen',203); INSERT INTO lesson_content VALUES(303219,'hat',203); INSERT INTO lesson_content VALUES(303220,'ihr',203); INSERT INTO lesson_content VALUES(303221,'ihn',203); INSERT INTO lesson_content VALUES(303222,'hin',203); INSERT INTO lesson_content VALUES(303223,'her',203); INSERT INTO lesson_content VALUES(303224,'sah',203); INSERT INTO lesson_content VALUES(303225,'ehe',203); INSERT INTO lesson_content VALUES(303226,'nah',203); INSERT INTO lesson_content VALUES(304001,'ego',204); INSERT INTO lesson_content VALUES(304002,'sog',204); INSERT INTO lesson_content VALUES(304003,'geologe',204); INSERT INTO lesson_content VALUES(304004,'lego',204); INSERT INTO lesson_content VALUES(304005,'loge',204); INSERT INTO lesson_content VALUES(304006,'gold',204); INSERT INTO lesson_content VALUES(304007,'sorge',204); INSERT INTO lesson_content VALUES(304008,'gosse',204); INSERT INTO lesson_content VALUES(304009,'sogar',204); INSERT INTO lesson_content VALUES(304010,'sorgt',204); INSERT INTO lesson_content VALUES(304011,'dialog',204); INSERT INTO lesson_content VALUES(304012,'agonie',204); INSERT INTO lesson_content VALUES(304013,'sorgen',204); INSERT INTO lesson_content VALUES(304014,'sorgte',204); INSERT INTO lesson_content VALUES(304015,'geholt',204); INSERT INTO lesson_content VALUES(304016,'genauso',204); INSERT INTO lesson_content VALUES(304017,'solange',204); INSERT INTO lesson_content VALUES(304018,'sorgten',204); INSERT INTO lesson_content VALUES(304019,'gedroht',204); INSERT INTO lesson_content VALUES(304020,'goldene',204); INSERT INTO lesson_content VALUES(304021,'dortigen',204); INSERT INTO lesson_content VALUES(304022,'sonntags',204); INSERT INTO lesson_content VALUES(304023,'goldenen',204); INSERT INTO lesson_content VALUES(304024,'sogleich',204); INSERT INTO lesson_content VALUES(304025,'sonstige',204); INSERT INTO lesson_content VALUES(304026,'logische',204); INSERT INTO lesson_content VALUES(304027,'gestohlen',204); INSERT INTO lesson_content VALUES(304028,'regionale',204); INSERT INTO lesson_content VALUES(304029,'sonstigen',204); INSERT INTO lesson_content VALUES(304030,'ignoriert',204); INSERT INTO lesson_content VALUES(304031,'sogenannte',204); INSERT INTO lesson_content VALUES(304032,'regionalen',204); INSERT INTO lesson_content VALUES(304033,'geschossen',204); INSERT INTO lesson_content VALUES(304034,'angeordnet',204); INSERT INTO lesson_content VALUES(304035,'hochachtung',204); INSERT INTO lesson_content VALUES(304036,'sogenannten',204); INSERT INTO lesson_content VALUES(304037,'geschlossen',204); INSERT INTO lesson_content VALUES(304038,'organisiert',204); INSERT INTO lesson_content VALUES(304039,'sogenannter',204); INSERT INTO lesson_content VALUES(304040,'donnerstags',204); INSERT INTO lesson_content VALUES(304041,'hochgeachtet',204); INSERT INTO lesson_content VALUES(304042,'organisieren',204); INSERT INTO lesson_content VALUES(304043,'organisierte',204); INSERT INTO lesson_content VALUES(304044,'geschlossene',204); INSERT INTO lesson_content VALUES(304045,'angeschlossen',204); INSERT INTO lesson_content VALUES(304046,'organisierten',204); INSERT INTO lesson_content VALUES(304047,'geschlossenen',204); INSERT INTO lesson_content VALUES(304048,'ausgeschlossen',204); INSERT INTO lesson_content VALUES(304049,'eingeschlossen',204); INSERT INTO lesson_content VALUES(304050,'logo',204); INSERT INTO lesson_content VALUES(304051,'dogge',204); INSERT INTO lesson_content VALUES(304052,'gesorgt',204); INSERT INTO lesson_content VALUES(304053,'einloggen',204); INSERT INTO lesson_content VALUES(304054,'technologie',204); INSERT INTO lesson_content VALUES(304055,'so',204); INSERT INTO lesson_content VALUES(304056,'ging',204); INSERT INTO lesson_content VALUES(304057,'gegen',204); INSERT INTO lesson_content VALUES(304058,'genug',204); INSERT INTO lesson_content VALUES(304059,'ginge',204); INSERT INTO lesson_content VALUES(304060,'gegangen',204); INSERT INTO lesson_content VALUES(304061,'neo',204); INSERT INTO lesson_content VALUES(304062,'los',204); INSERT INTO lesson_content VALUES(304063,'gar',204); INSERT INTO lesson_content VALUES(304064,'gut',204); INSERT INTO lesson_content VALUES(304065,'gesagt',204); INSERT INTO lesson_content VALUES(304066,'lag',204); INSERT INTO lesson_content VALUES(304067,'gingen',204); INSERT INTO lesson_content VALUES(304068,'gelang',204); INSERT INTO lesson_content VALUES(304069,'gelegt',204); INSERT INTO lesson_content VALUES(304070,'eng',204); INSERT INTO lesson_content VALUES(304071,'tot',204); INSERT INTO lesson_content VALUES(304072,'gering',204); INSERT INTO lesson_content VALUES(304073,'rot',204); INSERT INTO lesson_content VALUES(304074,'gen',204); INSERT INTO lesson_content VALUES(304075,'arg',204); INSERT INTO lesson_content VALUES(304076,'dagegen',204); INSERT INTO lesson_content VALUES(304077,'gelingt',204); INSERT INTO lesson_content VALUES(304078,'gelegen',204); INSERT INTO lesson_content VALUES(304079,'geringe',204); INSERT INTO lesson_content VALUES(304080,'gelangt',204); INSERT INTO lesson_content VALUES(304081,'geistig',204); INSERT INTO lesson_content VALUES(305001,'mn',205); INSERT INTO lesson_content VALUES(305002,'mge',205); INSERT INTO lesson_content VALUES(305003,'mgen',205); INSERT INTO lesson_content VALUES(305004,'mhre',205); INSERT INTO lesson_content VALUES(305005,'mrser',205); INSERT INTO lesson_content VALUES(305006,'mchte',205); INSERT INTO lesson_content VALUES(305007,'mglich',205); INSERT INTO lesson_content VALUES(305008,'mchten',205); INSERT INTO lesson_content VALUES(305009,'mgliche',205); INSERT INTO lesson_content VALUES(305010,'rmische',205); INSERT INTO lesson_content VALUES(305011,'mglichst',205); INSERT INTO lesson_content VALUES(305012,'mglichen',205); INSERT INTO lesson_content VALUES(305013,'unmglich',205); INSERT INTO lesson_content VALUES(305014,'rmischen',205); INSERT INTO lesson_content VALUES(305015,'mglicher',205); INSERT INTO lesson_content VALUES(305016,'ermglicht',205); INSERT INTO lesson_content VALUES(305017,'ermglichen',205); INSERT INTO lesson_content VALUES(305018,'im',205); INSERT INTO lesson_content VALUES(305019,'um',205); INSERT INTO lesson_content VALUES(305020,'am',205); INSERT INTO lesson_content VALUES(305021,'dumm',205); INSERT INTO lesson_content VALUES(305022,'immer',205); INSERT INTO lesson_content VALUES(305023,'nimmt',205); INSERT INTO lesson_content VALUES(305024,'mit',205); INSERT INTO lesson_content VALUES(305025,'dem',205); INSERT INTO lesson_content VALUES(305026,'man',205); INSERT INTO lesson_content VALUES(305027,'ihm',205); INSERT INTO lesson_content VALUES(305028,'mir',205); INSERT INTO lesson_content VALUES(305029,'mal',205); INSERT INTO lesson_content VALUES(305030,'mag',205); INSERT INTO lesson_content VALUES(305031,'ums',205); INSERT INTO lesson_content VALUES(305032,'stammt',205); INSERT INTO lesson_content VALUES(305033,'stimmt',205); INSERT INTO lesson_content VALUES(305034,'meinem',205); INSERT INTO lesson_content VALUES(305035,'stammen',205); INSERT INTO lesson_content VALUES(305036,'stimmen',205); INSERT INTO lesson_content VALUES(305037,'sammeln',205); INSERT INTO lesson_content VALUES(305038,'stimmte',205); INSERT INTO lesson_content VALUES(305039,'schlimm',205); INSERT INTO lesson_content VALUES(305040,'sammelt',205); INSERT INTO lesson_content VALUES(305041,'manchem',205); INSERT INTO lesson_content VALUES(305042,'manchmal',205); INSERT INTO lesson_content VALUES(305043,'mehr',205); INSERT INTO lesson_content VALUES(305044,'mich',205); INSERT INTO lesson_content VALUES(305045,'genommen',205); INSERT INTO lesson_content VALUES(305046,'nahm',205); INSERT INTO lesson_content VALUES(305047,'immerhin',205); INSERT INTO lesson_content VALUES(305048,'mein',205); INSERT INTO lesson_content VALUES(305049,'muss',205); INSERT INTO lesson_content VALUES(305050,'hrt',205); INSERT INTO lesson_content VALUES(305051,'samt',205); INSERT INTO lesson_content VALUES(305052,'lst',205); INSERT INTO lesson_content VALUES(305053,'mehrmals',205); INSERT INTO lesson_content VALUES(305054,'stimmten',205); INSERT INTO lesson_content VALUES(305055,'momentan',205); INSERT INTO lesson_content VALUES(305056,'gestimmt',205); INSERT INTO lesson_content VALUES(305057,'arme',205); INSERT INTO lesson_content VALUES(305058,'umso',205); INSERT INTO lesson_content VALUES(305059,'gemeinsam',205); INSERT INTO lesson_content VALUES(305060,'gesammelt',205); INSERT INTO lesson_content VALUES(305061,'schlimmer',205); INSERT INTO lesson_content VALUES(305062,'mitmachen',205); INSERT INTO lesson_content VALUES(305063,'stammende',205); INSERT INTO lesson_content VALUES(305064,'niemandem',205); INSERT INTO lesson_content VALUES(305065,'entnommen',205); INSERT INTO lesson_content VALUES(305066,'macht',205); INSERT INTO lesson_content VALUES(305067,'mogul',205); INSERT INTO lesson_content VALUES(305068,'einem',205); INSERT INTO lesson_content VALUES(305069,'damit',205); INSERT INTO lesson_content VALUES(305070,'ihrem',205); INSERT INTO lesson_content VALUES(305071,'meint',205); INSERT INTO lesson_content VALUES(305072,'meine',205); INSERT INTO lesson_content VALUES(305073,'meist',205); INSERT INTO lesson_content VALUES(305074,'indem',205); INSERT INTO lesson_content VALUES(305075,'darum',205); INSERT INTO lesson_content VALUES(305076,'hren',205); INSERT INTO lesson_content VALUES(305077,'ntig',205); INSERT INTO lesson_content VALUES(305078,'hher',205); INSERT INTO lesson_content VALUES(305079,'gemeinsame',205); INSERT INTO lesson_content VALUES(305080,'schn',205); INSERT INTO lesson_content VALUES(305081,'somit',205); INSERT INTO lesson_content VALUES(305082,'lsen',205); INSERT INTO lesson_content VALUES(305083,'herum',205); INSERT INTO lesson_content VALUES(305084,'angenommen',205); INSERT INTO lesson_content VALUES(305085,'allem',205); INSERT INTO lesson_content VALUES(305086,'mache',205); INSERT INTO lesson_content VALUES(305087,'minus',205); INSERT INTO lesson_content VALUES(305088,'hohem',205); INSERT INTO lesson_content VALUES(305089,'lste',205); INSERT INTO lesson_content VALUES(305090,'einstimmig',205); INSERT INTO lesson_content VALUES(305091,'nehme',205); INSERT INTO lesson_content VALUES(305092,'neuem',205); INSERT INTO lesson_content VALUES(305093,'hrte',205); INSERT INTO lesson_content VALUES(305094,'enorm',205); INSERT INTO lesson_content VALUES(305095,'armen',205); INSERT INTO lesson_content VALUES(305096,'gutem',205); INSERT INTO lesson_content VALUES(305097,'strt',205); INSERT INTO lesson_content VALUES(305098,'tten',205); INSERT INTO lesson_content VALUES(305099,'manch',205); INSERT INTO lesson_content VALUES(306001,'NATO',206); INSERT INTO lesson_content VALUES(306002,'USA',206); INSERT INTO lesson_content VALUES(306003,'UNO',206); INSERT INTO lesson_content VALUES(306004,'USD',206); INSERT INTO lesson_content VALUES(306005,'OLG',206); INSERT INTO lesson_content VALUES(306006,'EUR',206); INSERT INTO lesson_content VALUES(306007,'UdSSR',206); INSERT INTO lesson_content VALUES(306008,'EU',206); INSERT INTO lesson_content VALUES(306009,'UN',206); INSERT INTO lesson_content VALUES(306010,'EG',206); INSERT INTO lesson_content VALUES(306011,'CD',206); INSERT INTO lesson_content VALUES(306012,'US',206); INSERT INTO lesson_content VALUES(306013,'In',206); INSERT INTO lesson_content VALUES(306014,'Es',206); INSERT INTO lesson_content VALUES(306015,'Im',206); INSERT INTO lesson_content VALUES(306016,'Er',206); INSERT INTO lesson_content VALUES(306017,'So',206); INSERT INTO lesson_content VALUES(306018,'Am',206); INSERT INTO lesson_content VALUES(306019,'Da',206); INSERT INTO lesson_content VALUES(306020,'Um',206); INSERT INTO lesson_content VALUES(306021,'An',206); INSERT INTO lesson_content VALUES(306022,'Sa',206); INSERT INTO lesson_content VALUES(306023,'Du',206); INSERT INTO lesson_content VALUES(306024,'Co',206); INSERT INTO lesson_content VALUES(306025,'l',206); INSERT INTO lesson_content VALUES(306026,'Do',206); INSERT INTO lesson_content VALUES(306027,'Di',206); INSERT INTO lesson_content VALUES(306028,'Mo',206); INSERT INTO lesson_content VALUES(306029,'Mi',206); INSERT INTO lesson_content VALUES(306030,'Ei',206); INSERT INTO lesson_content VALUES(306031,'De',206); INSERT INTO lesson_content VALUES(306032,'Die',206); INSERT INTO lesson_content VALUES(306033,'Der',206); INSERT INTO lesson_content VALUES(306034,'Das',206); INSERT INTO lesson_content VALUES(306035,'Sie',206); INSERT INTO lesson_content VALUES(306036,'Uhr',206); INSERT INTO lesson_content VALUES(306037,'Und',206); INSERT INTO lesson_content VALUES(306038,'Ein',206); INSERT INTO lesson_content VALUES(306039,'Mit',206); INSERT INTO lesson_content VALUES(306040,'Ich',206); INSERT INTO lesson_content VALUES(306041,'Als',206); INSERT INTO lesson_content VALUES(306042,'Tag',206); INSERT INTO lesson_content VALUES(306043,'Art',206); INSERT INTO lesson_content VALUES(306044,'Man',206); INSERT INTO lesson_content VALUES(306045,'Den',206); INSERT INTO lesson_content VALUES(306046,'Nur',206); INSERT INTO lesson_content VALUES(306047,'Aus',206); INSERT INTO lesson_content VALUES(306048,'Mai',206); INSERT INTO lesson_content VALUES(306049,'Mrd',206); INSERT INTO lesson_content VALUES(306050,'Mal',206); INSERT INTO lesson_content VALUES(306051,'Mio',206); INSERT INTO lesson_content VALUES(306052,'Tod',206); INSERT INTO lesson_content VALUES(306053,'Ihr',206); INSERT INTO lesson_content VALUES(306054,'Dem',206); INSERT INTO lesson_content VALUES(306055,'Nun',206); INSERT INTO lesson_content VALUES(306056,'Amt',206); INSERT INTO lesson_content VALUES(306057,'Ort',206); INSERT INTO lesson_content VALUES(306058,'Ist',206); INSERT INTO lesson_content VALUES(306059,'The',206); INSERT INTO lesson_content VALUES(306060,'Rom',206); INSERT INTO lesson_content VALUES(306061,'Tor',206); INSERT INTO lesson_content VALUES(306062,'Tat',206); INSERT INTO lesson_content VALUES(306063,'Rat',206); INSERT INTO lesson_content VALUES(306064,'Ton',206); INSERT INTO lesson_content VALUES(306065,'Ehe',206); INSERT INTO lesson_content VALUES(306066,'Mut',206); INSERT INTO lesson_content VALUES(306067,'Gut',206); INSERT INTO lesson_content VALUES(306068,'Not',206); INSERT INTO lesson_content VALUES(306069,'Hat',206); INSERT INTO lesson_content VALUES(306070,'See',206); INSERT INTO lesson_content VALUES(306071,'Eis',206); INSERT INTO lesson_content VALUES(306072,'Mir',206); INSERT INTO lesson_content VALUES(306073,'Arm',206); INSERT INTO lesson_content VALUES(306074,'Ost',206); INSERT INTO lesson_content VALUES(306075,'Gas',206); INSERT INTO lesson_content VALUES(306076,'Ihm',206); INSERT INTO lesson_content VALUES(306077,'All',206); INSERT INTO lesson_content VALUES(306078,'Uni',206); INSERT INTO lesson_content VALUES(306079,'Ali',206); INSERT INTO lesson_content VALUES(306080,'Ohr',206); INSERT INTO lesson_content VALUES(306081,'Hut',206); INSERT INTO lesson_content VALUES(306082,'Ulm',206); INSERT INTO lesson_content VALUES(306083,'Tal',206); INSERT INTO lesson_content VALUES(306084,'Ach',206); INSERT INTO lesson_content VALUES(306085,'Neu',206); INSERT INTO lesson_content VALUES(306086,'Rad',206); INSERT INTO lesson_content VALUES(306087,'Rot',206); INSERT INTO lesson_content VALUES(306088,'Sir',206); INSERT INTO lesson_content VALUES(306089,'Nie',206); INSERT INTO lesson_content VALUES(306090,'Uns',206); INSERT INTO lesson_content VALUES(306091,'Rau',206); INSERT INTO lesson_content VALUES(306092,'Tel',206); INSERT INTO lesson_content VALUES(306093,'Duo',206); INSERT INTO lesson_content VALUES(306094,'Tee',206); INSERT INTO lesson_content VALUES(306095,'Ude',206); INSERT INTO lesson_content VALUES(306096,'Dom',206); INSERT INTO lesson_content VALUES(306097,'Rio',206); INSERT INTO lesson_content VALUES(306098,'Los',206); INSERT INTO lesson_content VALUES(306099,'Gen',206); INSERT INTO lesson_content VALUES(306100,'Red',206); INSERT INTO lesson_content VALUES(306101,'Ltd',206); INSERT INTO lesson_content VALUES(306102,'Udo',206); INSERT INTO lesson_content VALUES(306103,'Des',206); INSERT INTO lesson_content VALUES(306104,'Ute',206); INSERT INTO lesson_content VALUES(306105,'Auch',206); INSERT INTO lesson_content VALUES(306106,'Nach',206); INSERT INTO lesson_content VALUES(306107,'Eine',206); INSERT INTO lesson_content VALUES(306108,'Ende',206); INSERT INTO lesson_content VALUES(306109,'Doch',206); INSERT INTO lesson_content VALUES(306110,'Mann',206); INSERT INTO lesson_content VALUES(306111,'Land',206); INSERT INTO lesson_content VALUES(306112,'Teil',206); INSERT INTO lesson_content VALUES(306113,'Denn',206); INSERT INTO lesson_content VALUES(306114,'Geld',206); INSERT INTO lesson_content VALUES(306115,'Dies',206); INSERT INTO lesson_content VALUES(306116,'Haus',206); INSERT INTO lesson_content VALUES(306117,'Seit',206); INSERT INTO lesson_content VALUES(306118,'Tage',206); INSERT INTO lesson_content VALUES(306119,'Dann',206); INSERT INTO lesson_content VALUES(306120,'Hhe',206); INSERT INTO lesson_content VALUES(306121,'Hier',206); INSERT INTO lesson_content VALUES(306122,'Lage',206); INSERT INTO lesson_content VALUES(306123,'Hand',206); INSERT INTO lesson_content VALUES(306124,'Euro',206); INSERT INTO lesson_content VALUES(306125,'Noch',206); INSERT INTO lesson_content VALUES(306126,'Ihre',206); INSERT INTO lesson_content VALUES(306127,'Sein',206); INSERT INTO lesson_content VALUES(306128,'Dort',206); INSERT INTO lesson_content VALUES(306129,'Erst',206); INSERT INTO lesson_content VALUES(306130,'Alle',206); INSERT INTO lesson_content VALUES(306131,'Raum',206); INSERT INTO lesson_content VALUES(306132,'Auto',206); INSERT INTO lesson_content VALUES(306133,'Sohn',206); INSERT INTO lesson_content VALUES(306134,'Herr',206); INSERT INTO lesson_content VALUES(306135,'Idee',206); INSERT INTO lesson_content VALUES(306136,'Mehr',206); INSERT INTO lesson_content VALUES(306137,'Sieg',206); INSERT INTO lesson_content VALUES(306138,'Rede',206); INSERT INTO lesson_content VALUES(306139,'Oder',206); INSERT INTO lesson_content VALUES(306140,'Sinn',206); INSERT INTO lesson_content VALUES(306141,'Erde',206); INSERT INTO lesson_content VALUES(306142,'Team',206); INSERT INTO lesson_content VALUES(306143,'Ohne',206); INSERT INTO lesson_content VALUES(306144,'Neue',206); INSERT INTO lesson_content VALUES(306145,'Rund',206); INSERT INTO lesson_content VALUES(306146,'Drei',206); INSERT INTO lesson_content VALUES(306147,'Name',206); INSERT INTO lesson_content VALUES(306148,'Mill',206); INSERT INTO lesson_content VALUES(306149,'Nein',206); INSERT INTO lesson_content VALUES(306150,'Laut',206); INSERT INTO lesson_content VALUES(306151,'Ruhe',206); INSERT INTO lesson_content VALUES(306152,'Hans',206); INSERT INTO lesson_content VALUES(306153,'Also',206); INSERT INTO lesson_content VALUES(306154,'Gott',206); INSERT INTO lesson_content VALUES(306155,'Rest',206); INSERT INTO lesson_content VALUES(306156,'Grad',206); INSERT INTO lesson_content VALUES(306157,'Auge',206); INSERT INTO lesson_content VALUES(306158,'Gang',206); INSERT INTO lesson_content VALUES(306159,'Stil',206); INSERT INTO lesson_content VALUES(306160,'Rang',206); INSERT INTO lesson_content VALUES(306161,'Tore',206); INSERT INTO lesson_content VALUES(306162,'Lust',206); INSERT INTO lesson_content VALUES(306163,'Nato',206); INSERT INTO lesson_content VALUES(306164,'Dach',206); INSERT INTO lesson_content VALUES(306165,'Gold',206); INSERT INTO lesson_content VALUES(306166,'Iran',206); INSERT INTO lesson_content VALUES(306167,'Gast',206); INSERT INTO lesson_content VALUES(306168,'Anna',206); INSERT INTO lesson_content VALUES(306169,'Mord',206); INSERT INTO lesson_content VALUES(306170,'Meer',206); INSERT INTO lesson_content VALUES(306171,'Saal',206); INSERT INTO lesson_content VALUES(306172,'Mein',206); INSERT INTO lesson_content VALUES(306173,'Sind',206); INSERT INTO lesson_content VALUES(306174,'Nase',206); INSERT INTO lesson_content VALUES(306175,'Otto',206); INSERT INTO lesson_content VALUES(306176,'Mund',206); INSERT INTO lesson_content VALUES(306177,'Glas',206); INSERT INTO lesson_content VALUES(306178,'Dame',206); INSERT INTO lesson_content VALUES(306179,'Haut',206); INSERT INTO lesson_content VALUES(306180,'Rand',206); INSERT INTO lesson_content VALUES(306181,'Tode',206); INSERT INTO lesson_content VALUES(306182,'Alte',206); INSERT INTO lesson_content VALUES(306183,'Hund',206); INSERT INTO lesson_content VALUES(306184,'Liga',206); INSERT INTO lesson_content VALUES(306185,'Arme',206); INSERT INTO lesson_content VALUES(306186,'Star',206); INSERT INTO lesson_content VALUES(306187,'Tier',206); INSERT INTO lesson_content VALUES(306188,'Etat',206); INSERT INTO lesson_content VALUES(306189,'Ring',206); INSERT INTO lesson_content VALUES(306190,'Tote',206); INSERT INTO lesson_content VALUES(306191,'Ehre',206); INSERT INTO lesson_content VALUES(306192,'Tour',206); INSERT INTO lesson_content VALUES(306193,'Mode',206); INSERT INTO lesson_content VALUES(306194,'Sand',206); INSERT INTO lesson_content VALUES(306195,'Lohn',206); INSERT INTO lesson_content VALUES(306196,'Last',206); INSERT INTO lesson_content VALUES(306197,'Tne',206); INSERT INTO lesson_content VALUES(306198,'Hals',206); INSERT INTO lesson_content VALUES(306199,'Test',206); INSERT INTO lesson_content VALUES(306200,'Loch',206); INSERT INTO lesson_content VALUES(306201,'Soll',206); INSERT INTO lesson_content VALUES(306202,'Gute',206); INSERT INTO lesson_content VALUES(306203,'Lied',206); INSERT INTO lesson_content VALUES(306204,'Haar',206); INSERT INTO lesson_content VALUES(306205,'Held',206); INSERT INTO lesson_content VALUES(306206,'Chor',206); INSERT INTO lesson_content VALUES(306207,'Null',206); INSERT INTO lesson_content VALUES(306208,'Dass',206); INSERT INTO lesson_content VALUES(306209,'Sehr',206); INSERT INTO lesson_content VALUES(306210,'Gerd',206); INSERT INTO lesson_content VALUES(306211,'Acht',206); INSERT INTO lesson_content VALUES(306212,'Orte',206); INSERT INTO lesson_content VALUES(306213,'Dasa',206); INSERT INTO lesson_content VALUES(306214,'Aids',206); INSERT INTO lesson_content VALUES(306215,'Male',206); INSERT INTO lesson_content VALUES(306216,'Nord',206); INSERT INTO lesson_content VALUES(306217,'Mond',206); INSERT INTO lesson_content VALUES(306218,'Heim',206); INSERT INTO lesson_content VALUES(306219,'Main',206); INSERT INTO lesson_content VALUES(306220,'Trio',206); INSERT INTO lesson_content VALUES(306221,'Turm',206); INSERT INTO lesson_content VALUES(306222,'Ruhm',206); INSERT INTO lesson_content VALUES(306223,'Hang',206); INSERT INTO lesson_content VALUES(306224,'Eier',206); INSERT INTO lesson_content VALUES(306225,'Atem',206); INSERT INTO lesson_content VALUES(306226,'Gene',206); INSERT INTO lesson_content VALUES(306227,'Roth',206); INSERT INTO lesson_content VALUES(306228,'Leid',206); INSERT INTO lesson_content VALUES(306229,'Ding',206); INSERT INTO lesson_content VALUES(306230,'Audi',206); INSERT INTO lesson_content VALUES(306231,'Ruth',206); INSERT INTO lesson_content VALUES(306232,'Lire',206); INSERT INTO lesson_content VALUES(306233,'Echo',206); INSERT INTO lesson_content VALUES(306234,'Mars',206); INSERT INTO lesson_content VALUES(306235,'Neun',206); INSERT INTO lesson_content VALUES(306236,'Ilse',206); INSERT INTO lesson_content VALUES(306237,'Hahn',206); INSERT INTO lesson_content VALUES(306238,'Erna',206); INSERT INTO lesson_content VALUES(306239,'Eher',206); INSERT INTO lesson_content VALUES(306240,'Hose',206); INSERT INTO lesson_content VALUES(306241,'Maus',206); INSERT INTO lesson_content VALUES(306242,'Adam',206); INSERT INTO lesson_content VALUES(306243,'Inge',206); INSERT INTO lesson_content VALUES(306244,'Geht',206); INSERT INTO lesson_content VALUES(306245,'Stau',206); INSERT INTO lesson_content VALUES(306246,'Song',206); INSERT INTO lesson_content VALUES(306247,'Oslo',206); INSERT INTO lesson_content VALUES(306248,'Hemd',206); INSERT INTO lesson_content VALUES(306249,'Hill',206); INSERT INTO lesson_content VALUES(306250,'Rose',206); INSERT INTO lesson_content VALUES(306251,'Seen',206); INSERT INTO lesson_content VALUES(306252,'Gras',206); INSERT INTO lesson_content VALUES(306253,'Hohe',206); INSERT INTO lesson_content VALUES(306254,'Reis',206); INSERT INTO lesson_content VALUES(306255,'Halt',206); INSERT INTO lesson_content VALUES(306256,'Heer',206); INSERT INTO lesson_content VALUES(306257,'Mama',206); INSERT INTO lesson_content VALUES(306258,'Anne',206); INSERT INTO lesson_content VALUES(306259,'Olga',206); INSERT INTO lesson_content VALUES(306260,'Euch',206); INSERT INTO lesson_content VALUES(306261,'Note',206); INSERT INTO lesson_content VALUES(306262,'Horn',206); INSERT INTO lesson_content VALUES(306263,'Eins',206); INSERT INTO lesson_content VALUES(306264,'Deal',206); INSERT INTO lesson_content VALUES(306265,'Sich',206); INSERT INTO lesson_content VALUES(306266,'Carl',206); INSERT INTO lesson_content VALUES(306267,'Rosa',206); INSERT INTO lesson_content VALUES(306268,'Hoch',206); INSERT INTO lesson_content VALUES(307001,'Na, meinetwegen.',207); INSERT INTO lesson_content VALUES(307002,'Und so weiter, und so weiter.',207); INSERT INTO lesson_content VALUES(307003,'Er war im Osten und im Westen.',207); INSERT INTO lesson_content VALUES(307004,'Und da war es aus.',207); INSERT INTO lesson_content VALUES(307005,'Wenigstens horchte ich.',207); INSERT INTO lesson_content VALUES(307006,'Die Wall Street meldet Wachstum.',207); INSERT INTO lesson_content VALUES(307007,'Stillschweigen herrschte.',207); INSERT INTO lesson_content VALUES(307008,'Marion wurde immer rter.',207); INSERT INTO lesson_content VALUES(307009,'Wenigstens schien es mir so.',207); INSERT INTO lesson_content VALUES(307010,'Und alles, alles still und leer.',207); INSERT INTO lesson_content VALUES(307011,'In Deinem Lehnstuhl regiertest Du die Welt.',207); INSERT INTO lesson_content VALUES(307012,'In der Regel.',207); INSERT INTO lesson_content VALUES(307013,'Unter anderem.',207); INSERT INTO lesson_content VALUES(307014,'Das ist mal nett.',207); INSERT INTO lesson_content VALUES(307015,'Ein Grad Celsius.',207); INSERT INTO lesson_content VALUES(307016,'Oma und Momo mogeln.',207); INSERT INTO lesson_content VALUES(307017,'Es stand nicht dran.',207); INSERT INTO lesson_content VALUES(307018,'Er hielt sein Gesicht.',207); INSERT INTO lesson_content VALUES(307019,'Da lag Deutschland.',207); INSERT INTO lesson_content VALUES(307020,'In guter Erinnerung.',207); INSERT INTO lesson_content VALUES(307021,'Herr Gans ging angeln.',207); INSERT INTO lesson_content VALUES(307022,'Es ist so ruhig und leer.',207); INSERT INTO lesson_content VALUES(307023,'Der Ehemann ist im Stress.',207); INSERT INTO lesson_content VALUES(307024,'Dummheit mge angenehm sein.',207); INSERT INTO lesson_content VALUES(307025,'Oder die Macht der Mutter.',207); INSERT INTO lesson_content VALUES(307026,'Mutter leidet so ohne Otto.',207); INSERT INTO lesson_content VALUES(307027,'Die Augen sind nun gesund.',207); INSERT INTO lesson_content VALUES(307028,'Los Angeles liegt in den USA.',207); INSERT INTO lesson_content VALUES(307029,'Darum handelte es sich auch nicht.',207); INSERT INTO lesson_content VALUES(307030,'Auch schon in der ehemaligen DDR.',207); INSERT INTO lesson_content VALUES(307031,'Michael Schumacher ist die Nummer eins.',207); INSERT INTO lesson_content VALUES(307032,'Der Mann eilte mutig aus dem Ort.',207); INSERT INTO lesson_content VALUES(307033,'Oma machte einen Monat lang Mhren.',207); INSERT INTO lesson_content VALUES(307034,'Er schlich niedergeschlagen nach Hause.',207); INSERT INTO lesson_content VALUES(307035,'Es ist eine unruhige und innige Nacht.',207); INSERT INTO lesson_content VALUES(307036,'Allerdings liegt der Eingang rechts hinten.',207); INSERT INTO lesson_content VALUES(308001,'Irgendein Zahn, z. B. den einer Ziege.',208); INSERT INTO lesson_content VALUES(308002,'Der Zahnarzt zog den Zahn.',208); INSERT INTO lesson_content VALUES(308003,'Der Zoll zollte.',208); INSERT INTO lesson_content VALUES(308004,'Zur Zeit nichts zu tun.',208); INSERT INTO lesson_content VALUES(308005,'In letzter Zeit zeigt sich Schulze selten.',208); INSERT INTO lesson_content VALUES(308006,'Wir bewegen den BMW.',208); INSERT INTO lesson_content VALUES(308007,'Aber so war seine ganze Erziehung.',208); INSERT INTO lesson_content VALUES(308008,'Wir waren in Bad Homburg.',208); INSERT INTO lesson_content VALUES(308009,'Aber dazu taugte ich nicht.',208); INSERT INTO lesson_content VALUES(308010,'Aber der Bau ist eben nicht nur ein Rettungsloch.',208); INSERT INTO lesson_content VALUES(308011,'Er ist bei Werder Bremen Mitglied.',208); INSERT INTO lesson_content VALUES(308012,'Lange horchte ich ihm noch in die Stille nach, ehe ich wieder zu arbeiten begann.',208); INSERT INTO lesson_content VALUES(308013,'Borussia Dortmund',208); INSERT INTO lesson_content VALUES(308014,'Aber mit der Liebe war es etwas geworden.',208); INSERT INTO lesson_content VALUES(308015,'Selten war das allerdings, aber es war wunderbar.',208); INSERT INTO lesson_content VALUES(308016,'Sie zogen sich wieder an.',208); INSERT INTO lesson_content VALUES(308017,'Wohl, es wird weiterziehen.',208); INSERT INTO lesson_content VALUES(308018,'Nur deshalb habe ich mich gegen die Annahme gewehrt.',208); INSERT INTO lesson_content VALUES(308019,'Der Indianer runzelte die Stirn.',208); INSERT INTO lesson_content VALUES(308020,'Und Borussia Dortmund gewann.',208); INSERT INTO lesson_content VALUES(308021,'Und immer wieder Bill Clinton.',208); INSERT INTO lesson_content VALUES(308022,'Er hat Augenbrauen wie Theo Waigel.',208); INSERT INTO lesson_content VALUES(308023,'Wir wollen nach Buenos Aires.',208); INSERT INTO lesson_content VALUES(308024,'Die Schwestern gingen nur zum Teil mit mir.',208); INSERT INTO lesson_content VALUES(308025,'Bitte wie gewhnlich an die alte Adresse.',208); INSERT INTO lesson_content VALUES(308026,'Die Chinesische Mauer ist an ihrer nrdlichsten Stelle beendet worden.',208); INSERT INTO lesson_content VALUES(309001,'Das Opfer, ein Papagei, lag dabei.',209); INSERT INTO lesson_content VALUES(309002,'Er rappelte sich auf.',209); INSERT INTO lesson_content VALUES(309003,'Es passierte am Potsdamer Platz.',209); INSERT INTO lesson_content VALUES(309004,'Dann aber empfand sie doch Reue.',209); INSERT INTO lesson_content VALUES(309005,'Die Anforderungen an das Fundament.',209); INSERT INTO lesson_content VALUES(309006,'Dem entsprach weiter deine geistige Oberherrschaft.',209); INSERT INTO lesson_content VALUES(309007,'Sogar Familien sind auf der Gegendemonstration.',209); INSERT INTO lesson_content VALUES(309008,'Das wollen wir nicht hoffen.',209); INSERT INTO lesson_content VALUES(309009,'Er rannte auf den Schulhof.',209); INSERT INTO lesson_content VALUES(309010,'Er hat geschlafen.',209); INSERT INTO lesson_content VALUES(309011,'Setz deinen Hut auf.',209); INSERT INTO lesson_content VALUES(309012,'Das Heulen hrte auf.',209); INSERT INTO lesson_content VALUES(309013,'Es ist alles fertig.',209); INSERT INTO lesson_content VALUES(309014,'Die Gase duften gut.',209); INSERT INTO lesson_content VALUES(309015,'Es spricht manches dagegen.',209); INSERT INTO lesson_content VALUES(309016,'Sie sprachen ihre Gebete.',209); INSERT INTO lesson_content VALUES(309017,'Susanne schielte auf Bernd.',209); INSERT INTO lesson_content VALUES(309018,'Alfred trottete nebenher.',209); INSERT INTO lesson_content VALUES(309019,'Die Gefahr war dringend.',209); INSERT INTO lesson_content VALUES(309020,'Sie machten ein Feuer an.',209); INSERT INTO lesson_content VALUES(309021,'Die Ferien nahten heran.',209); INSERT INTO lesson_content VALUES(309022,'Angst liegt in der Luft.',209); INSERT INTO lesson_content VALUES(309023,'Das Geld ist in Gefahr.',209); INSERT INTO lesson_content VALUES(309024,'Es geht uns gut Frau Gierig.',209); INSERT INTO lesson_content VALUES(309025,'Er sprang und tollte nicht mehr herum.',209); INSERT INTO lesson_content VALUES(309026,'Der Pinsel strich und strich.',209); INSERT INTO lesson_content VALUES(309027,'Ich habe wohl sehr lange geschlafen.',209); INSERT INTO lesson_content VALUES(309028,'Und an Mahnungen hat es nicht gefehlt.',209); INSERT INTO lesson_content VALUES(309029,'Manche Menschen stehen auf der Mauer.',209); INSERT INTO lesson_content VALUES(309030,'Nicht einmal in San Francisco.',209); INSERT INTO lesson_content VALUES(309031,'Endlose Fleischmassen hingen an ihm.',209); INSERT INTO lesson_content VALUES(309032,'Das ist ohnehin mal sehr frmlich.',209); INSERT INTO lesson_content VALUES(309033,'Sie waren doch alle frhlicher, frischer, ungezwungener, leichtlebiger und weniger streng als du.',209); INSERT INTO lesson_content VALUES(309034,'Zum einen finde ich es bld, zum anderen habe ich nichts damit zu tun.',209); INSERT INTO lesson_content VALUES(310001,'Vor Papa popelte Viktor versehentlich.',210); INSERT INTO lesson_content VALUES(310002,'Viel Zeit, viel Zeit, die besser verwendet werden knnte, kostet mich das kleine Volk.',210); INSERT INTO lesson_content VALUES(310003,'Morgen kommt Helmut Kohl.',210); INSERT INTO lesson_content VALUES(310004,'Der Verein VfB Stuttgart ist nach wie vor vorne mit dabei.',210); INSERT INTO lesson_content VALUES(310005,'Vor allem St. Pauli versagte.',210); INSERT INTO lesson_content VALUES(310006,'Ich verlor das Vertrauen zu eigenem Tun.',210); INSERT INTO lesson_content VALUES(310007,'Da stand sie schon mit den Koffern vor ihrem Haus.',210); INSERT INTO lesson_content VALUES(310008,'Die Mauer war doch, wie allgemein verbreitet wird und bekannt ist, zum Schutze gegen die Nordvlker gedacht.',210); INSERT INTO lesson_content VALUES(310009,'Von allen Seiten her kam ich in Deine Schuld.',210); INSERT INTO lesson_content VALUES(310010,'Mit Blick auf das Bankkonto.',210); INSERT INTO lesson_content VALUES(310011,'Sie fahren nach Tel Aviv.',210); INSERT INTO lesson_content VALUES(310012,'Dort war er in Wirklichkeit.',210); INSERT INTO lesson_content VALUES(310013,'Das hast du davon.',210); INSERT INTO lesson_content VALUES(310014,'Auf dem Kirchhof.',210); INSERT INTO lesson_content VALUES(310015,'Ein wundervoller Mann.',210); INSERT INTO lesson_content VALUES(310016,'Die Welt ist klein.',210); INSERT INTO lesson_content VALUES(310017,'Dann kamen die Masern.',210); INSERT INTO lesson_content VALUES(310018,'Das ist die Krnung.',210); INSERT INTO lesson_content VALUES(310019,'Sie hob stolz den Kopf.',210); INSERT INTO lesson_content VALUES(310020,'Sie war keine Prinzessin.',210); INSERT INTO lesson_content VALUES(310021,'Es steht in der Verfassung der Vereinigten Staaten.',210); INSERT INTO lesson_content VALUES(310022,'Mein Partner ist vor Ort.',210); INSERT INTO lesson_content VALUES(310023,'Und dann kam die Altstimme.',210); INSERT INTO lesson_content VALUES(310024,'Danke ihr guten Gtter.',210); INSERT INTO lesson_content VALUES(310025,'Der Herr Verteidiger hat das Wort.',210); INSERT INTO lesson_content VALUES(310026,'Du erinnerst Dich vielleicht auch daran.',210); INSERT INTO lesson_content VALUES(310027,'Aber vielleicht doch nicht gar so sehr.',210); INSERT INTO lesson_content VALUES(310028,'Ich dringe bis hinauf vor und horche.',210); INSERT INTO lesson_content VALUES(310029,'Er drehte den Kopf zur Seite.',210); INSERT INTO lesson_content VALUES(310030,'Sie verfolgte ihn am Prenzlauer Berg.',210); INSERT INTO lesson_content VALUES(310031,'Sie schwuren die schrecklichsten Eide.',210); INSERT INTO lesson_content VALUES(310032,'Er erbleichte und senkte die Augen.',210); INSERT INTO lesson_content VALUES(310033,'Ein schwaches Kichern entstand.',210); INSERT INTO lesson_content VALUES(310034,'Ein sehr kleiner Bengel stand auf.',210); INSERT INTO lesson_content VALUES(310035,'Auf den ersten Blick war er schn.',210); INSERT INTO lesson_content VALUES(310036,'Ein Irrtum war nicht mehr denkbar.',210); INSERT INTO lesson_content VALUES(310037,'Die Kiste war bald ausgegraben.',210); INSERT INTO lesson_content VALUES(310038,'Ich fahre nach Frankfurt am Main.',210); INSERT INTO lesson_content VALUES(310039,'Seine Sorgen und Nte nahm er in Kauf.',210); INSERT INTO lesson_content VALUES(310040,'Die Gedanken ohne oder nach dem Schlaf.',210); INSERT INTO lesson_content VALUES(310041,'Ich reite die Strecke tagelang.',210); INSERT INTO lesson_content VALUES(310042,'Aber wichtig oder unwichtig, wie sehr ich auch suche, ich finde nichts, oder vielmehr ich finde zuviel.',210); INSERT INTO lesson_content VALUES(310043,'Zum Beispiel in der Bundesrepublik Deutschland.',210); INSERT INTO lesson_content VALUES(310044,'Ich denke, sie werden diese Nacht den alten Huber holen.',210); INSERT INTO lesson_content VALUES(310045,'Nun, einen solchen Gegner habe ich nicht erwarten knnen.',210); INSERT INTO lesson_content VALUES(310046,'Aber dieser Scherz ist in gewissem Sinn keiner.',210); INSERT INTO lesson_content VALUES(310047,'Das bezog sich auf Gedanken so gut wie auf Menschen.',210); INSERT INTO lesson_content VALUES(310048,'Meinst du das wirklich, dann sind wir einig.',210); INSERT INTO lesson_content VALUES(310049,'Sie war zackig, im Gegensatz zu der lahmen Ziege.',210); INSERT INTO lesson_content VALUES(310050,'Man konnte bei ihr zwar immer Schutz finden, doch nur in Beziehung zu dir.',210); INSERT INTO lesson_content VALUES(310051,'Wenn ich in meiner Art in der Erde kratze und scharre, ist es doch ganz anders anzuhren.',210); INSERT INTO lesson_content VALUES(310052,'Ich glaubte daher den Klagen nicht und suchte irgendeine geheime Absicht hinter ihnen.',210); INSERT INTO lesson_content VALUES(311001,'ber nderungen das Glck verstrken.',211); INSERT INTO lesson_content VALUES(311002,'Fr die Bundeslnder ist es eine nderung.',211); INSERT INTO lesson_content VALUES(311003,'Fr sterreicher nderte sich alles.',211); INSERT INTO lesson_content VALUES(311004,'Darber hinaus wre es mglich zu flten.',211); INSERT INTO lesson_content VALUES(311005,'brigens fahre ich nchste Woche in Urlaub.',211); INSERT INTO lesson_content VALUES(311006,'Im brigen suche ich den Plan des Tieres zu entrtseln.',211); INSERT INTO lesson_content VALUES(311007,'Am nchsten der Mutter stehend, fgte sie sich dir auch hnlich, ohne viel Mhe und Schaden.',211); INSERT INTO lesson_content VALUES(311008,'Es ist berhaupt ein merkwrdiger Irrtum, wenn du glaubst, ich htte mich dir nie gefgt.',211); INSERT INTO lesson_content VALUES(311009,'Damals und berall htte ich die Aufmunterung gebraucht.',211); INSERT INTO lesson_content VALUES(311010,'Wie kann aber eine Mauer schtzen, die nicht zusammenhngend gebaut ist.',211); INSERT INTO lesson_content VALUES(311011,'Auch du hast brigens, entsprechend Deiner hnlichen Lage mir gegenber, eine Art Gegenwehr versucht.',211); INSERT INTO lesson_content VALUES(311012,'Wie oft hat sich das und hnliches wiederholen mssen, wie wenig hast du im Tatschlichen dadurch erreicht.',211); INSERT INTO lesson_content VALUES(311013,'brigens besteht zwischen uns dieser Unterschied heute noch hnlich.',211); INSERT INTO lesson_content VALUES(311014,'Es ist eine neue Welt, die neue Krfte gibt, und was oben Mdigkeit ist, gilt hier nicht als solche.',211); INSERT INTO lesson_content VALUES(311015,'Rcksichtslos haben wir auf sie eingehmmert, du von Deiner Seite, wir von unserer.',211); INSERT INTO lesson_content VALUES(311016,'Auch schien es mir fr meine Fhigkeiten ganz unerschwinglich, da es, wie du sagtest, selbst die Deinigen verbrauchte.',211); INSERT INTO lesson_content VALUES(311017,'In dieser Weise bewegten sich nicht die berlegungen, aber das Gefhl des Kindes.',211); INSERT INTO lesson_content VALUES(311018,'Mglich wre es.',211); INSERT INTO lesson_content VALUES(311019,'Im brigen geben wir grnes Licht.',211); INSERT INTO lesson_content VALUES(311020,'Zuerst das Geschft.',211); INSERT INTO lesson_content VALUES(311021,'Die Prfung begann.',211); INSERT INTO lesson_content VALUES(311022,'Er zgerte nun nicht lnger.',211); INSERT INTO lesson_content VALUES(311023,'Von Sdosten und Sdwesten wurde der Bau herangefhrt und hier vereinigt.',211); INSERT INTO lesson_content VALUES(311024,'Lieber hielt ich mich ans Tatschliche und Fortwhrende.',211); INSERT INTO lesson_content VALUES(311025,'In fnf Minuten war er angekleidet.',211); INSERT INTO lesson_content VALUES(311026,'Dann kam ein Haufen Buben und Mdel.',211); INSERT INTO lesson_content VALUES(311027,'Peter nahm seine Prgel in Empfang.',211); INSERT INTO lesson_content VALUES(311028,'Im Gotteshause wurde nicht geflstert.',211); INSERT INTO lesson_content VALUES(311029,'Dunkel und strmisch war die Nacht.',211); INSERT INTO lesson_content VALUES(311030,'Allmhlich tobte sich der Sturm aus.',211); INSERT INTO lesson_content VALUES(311031,'Sie allein htte es nie gemerkt.',211); INSERT INTO lesson_content VALUES(311032,'Das Mdchen begann zu heulen.',211); INSERT INTO lesson_content VALUES(311033,'Und er machte sich nochmal darber.',211); INSERT INTO lesson_content VALUES(311034,'Und sie schlief lchelnd wieder ein.',211); INSERT INTO lesson_content VALUES(311035,'Ich lasse von dieser Selbsttuschung ab.',211); INSERT INTO lesson_content VALUES(311036,'Ich werde nun meine Methode ndern.',211); INSERT INTO lesson_content VALUES(311037,'Ich war unbestndig, zweifelhaft.',211); INSERT INTO lesson_content VALUES(311038,'Alles Dank der Europischen Union.',211); INSERT INTO lesson_content VALUES(311039,'Er nahm ohne einen einzigen Schrei die saftigsten Prgel entgegen.',211); INSERT INTO lesson_content VALUES(311040,'Die Schweden sprechen anders deutsch als die Dnen.',211); INSERT INTO lesson_content VALUES(311041,'Man sah nur einen flachen, bewaldeten Uferstreifen und Huser.',211); INSERT INTO lesson_content VALUES(311042,'Nicht anders drfte es sich mit der Religion verhalten.',211); INSERT INTO lesson_content VALUES(311043,'Ich schttle den Kopf, ich habe noch keine.',211); INSERT INTO lesson_content VALUES(311044,'Ich war gespannt, aber sonst khl und ruhig.',211); INSERT INTO lesson_content VALUES(311045,'Ich verstehe pltzlich meinen frheren Plan nicht.',211); INSERT INTO lesson_content VALUES(311046,'Und noch weitere unntze Entdeckungen mache ich.',211); INSERT INTO lesson_content VALUES(311047,'Der neue vernnftige Plan lockt mich und lockt mich nicht.',211); INSERT INTO lesson_content VALUES(311048,'Nun aber bohrten sie also auch in den Gngen.',211); INSERT INTO lesson_content VALUES(311049,'Am glcklichsten in ihrer Stellung zu dir war Valli.',211); INSERT INTO lesson_content VALUES(311050,'Es ist, wie wenn einer gehngt werden soll.',211); INSERT INTO lesson_content VALUES(311051,'Du hast mir aber schon frh das Wort verboten.',211); INSERT INTO lesson_content VALUES(311052,'Das ist natrlich kein Vorwurf, nur Feststellung einer Tatsache.',211); INSERT INTO lesson_content VALUES(311053,'Das ist merkwrdig, ich sehe hier auch nicht ganz klar.',211); INSERT INTO lesson_content VALUES(311054,'Aber ebenso gnzlich schuldlos bin auch ich.',211); INSERT INTO lesson_content VALUES(311055,'Dieses letztere ist wahrscheinlich der einzige ausfhrbare Plan, den ich habe.',211); INSERT INTO lesson_content VALUES(311056,'Auch zum Burgplatz gehe ich nicht, um dort irgendeinen Plan auszufhren.',211); INSERT INTO lesson_content VALUES(311057,'Ich gehe deshalb den Gang abwrts bis zum Burgplatz und beginne dort zu horchen.',211); INSERT INTO lesson_content VALUES(311058,'Trotzdem konnte der Bau wohl nicht anders ausgefhrt werden, als es geschehen ist.',211); INSERT INTO lesson_content VALUES(311059,'Deshalb konnte ich dir fr alles nur bettlerhaft dankbar sein, durch die Tat nicht.',211); INSERT INTO lesson_content VALUES(311060,'Wird er wirklich gehenkt, dann ist er tot und es ist alles vorber.',211); INSERT INTO lesson_content VALUES(311061,'Das Schimpfen verstrktest du mit Drohen, und das galt nun auch schon mir.',211); INSERT INTO lesson_content VALUES(311062,'Irgendeine Ahnung dessen, was ich sagen will, hast du merkwrdigerweise.',211); INSERT INTO lesson_content VALUES(312001,'Eine Hexe namens Lili?',212); INSERT INTO lesson_content VALUES(312002,'Wo steht denn der Index?',212); INSERT INTO lesson_content VALUES(312003,'Oder hie der Fluss anders?',212); INSERT INTO lesson_content VALUES(312004,'Xavier und die anderen waren exzellent.',212); INSERT INTO lesson_content VALUES(312005,'Machte die Prinzessin groe Kulleraugen?',212); INSERT INTO lesson_content VALUES(312006,'Es war wohl ziemlich hei in der Schule?',212); INSERT INTO lesson_content VALUES(312007,'Ist dieses Vorgehen gem dem Regelwerk?',212); INSERT INTO lesson_content VALUES(312008,'Wo denn?',212); INSERT INTO lesson_content VALUES(312009,'Das uerst se Kind sa spaend da.',212); INSERT INTO lesson_content VALUES(312010,'Hpfen die?',212); INSERT INTO lesson_content VALUES(312011,'Mchtest du?',212); INSERT INTO lesson_content VALUES(312012,'Was ist das?',212); INSERT INTO lesson_content VALUES(312013,'Warum denn kssen?',212); INSERT INTO lesson_content VALUES(312014,'Was denn, Oliver?',212); INSERT INTO lesson_content VALUES(312015,'Was ist es denn?',212); INSERT INTO lesson_content VALUES(312016,'Es ist wie verhext.',212); INSERT INTO lesson_content VALUES(312017,'Verflixt und zugenht.',212); INSERT INTO lesson_content VALUES(312018,'Wo wollen wir graben?',212); INSERT INTO lesson_content VALUES(312019,'Wer hindert dich denn?',212); INSERT INTO lesson_content VALUES(312020,'Was ist kein Traum?',212); INSERT INTO lesson_content VALUES(312021,'Ist Boris Becker wahnsinnig?',212); INSERT INTO lesson_content VALUES(312022,'Was willst du dafr haben?',212); INSERT INTO lesson_content VALUES(312023,'Sie hat sich den Fu gestoen, daher geht sie heute nicht zum Fuballtraining.',212); INSERT INTO lesson_content VALUES(312024,'Er a und a, es war wirklich nicht schn anzusehen.',212); INSERT INTO lesson_content VALUES(312025,'Die Ausreier kehrten vergngt zurck.',212); INSERT INTO lesson_content VALUES(312026,'Dann stampfte sie mit ihrem kleinen Fu.',212); INSERT INTO lesson_content VALUES(312027,'Bertram sa auf dem Rande eines Bootes.',212); INSERT INTO lesson_content VALUES(312028,'Na, ist das denn keine Arbeit?',212); INSERT INTO lesson_content VALUES(312029,'Gehst du zum Essen nach Haus?',212); INSERT INTO lesson_content VALUES(312030,'Woher hattest du den blauen Zettel?',212); INSERT INTO lesson_content VALUES(312031,'Aber im brigen, was ist denn geschehen?',212); INSERT INTO lesson_content VALUES(312032,'Man wurde gewissermaen schon bestraft.',212); INSERT INTO lesson_content VALUES(312033,'Unter dir lag schlielich am meisten.',212); INSERT INTO lesson_content VALUES(312034,'Hattest du nicht Lust, zum Schwimmen zu gehen?',212); INSERT INTO lesson_content VALUES(312035,'Wie gefllt Ihnen unser neuer Verlagskatalog?',212); INSERT INTO lesson_content VALUES(312036,'Das war wieder Vergrerung des Schuldbewusstseins.',212); INSERT INTO lesson_content VALUES(312037,'Ich mager, schwach, schmal, du stark, gro, breit.',212); INSERT INTO lesson_content VALUES(312038,'Als ich Dein verrutes Gesicht sehe, wird mir erst die Gefahr bewusst.',212); INSERT INTO lesson_content VALUES(312039,'In beider Hinsicht wird entscheidend sein, ob und was das Tier von mir wei.',212); INSERT INTO lesson_content VALUES(312040,'Es gelingt, aber mir gelingt es nicht mich loszureien, ich bleibe hier in tiefem Schlaf.',212); INSERT INTO lesson_content VALUES(312041,'Nun ist es keine Arbeit mehr, nun rollt und fliet das Ganze fast von selbst hinab.',212); INSERT INTO lesson_content VALUES(312042,'Nur in diesem Zustand, ausschlielich in diesem Zustand, kann ich diese Sache ausfhren.',212); INSERT INTO lesson_content VALUES(312043,'Ich konnte, was du gabst, genieen, aber nur in Beschmung, Mdigkeit, Schwche, Schuldbewusstsein.',212); INSERT INTO lesson_content VALUES(313001,'Wo ist Jimmy?',213); INSERT INTO lesson_content VALUES(313002,'Felix, sexy, anonym, Xylophon.',213); INSERT INTO lesson_content VALUES(313003,'Ja, ich wei.',213); INSERT INTO lesson_content VALUES(313004,'Nicht nur in Bayern.',213); INSERT INTO lesson_content VALUES(313005,'Ja, das sagen sie immer.',213); INSERT INTO lesson_content VALUES(313006,'Jim begann zu schwanken.',213); INSERT INTO lesson_content VALUES(313007,'Naja, zur Zeit ziehe ich um.',213); INSERT INTO lesson_content VALUES(313008,'Myriaden von Eidechsen.',213); INSERT INTO lesson_content VALUES(313009,'Er war gnzlich anonym.',213); INSERT INTO lesson_content VALUES(313010,'Sie hatte ein sexy Kleid an.',213); INSERT INTO lesson_content VALUES(313011,'Gerhard Schrder sagte Ja.',213); INSERT INTO lesson_content VALUES(313012,'Das wird jetzt anders werden, hoffe ich.',213); INSERT INTO lesson_content VALUES(313013,'Den Jungen stand der Atem still.',213); INSERT INTO lesson_content VALUES(313014,'Man gnnt sich ja sonst nichts.',213); INSERT INTO lesson_content VALUES(313015,'Olympische Spiele sind groartig.',213); INSERT INTO lesson_content VALUES(313016,'Er hatte aber leider Syphilis.',213); INSERT INTO lesson_content VALUES(313017,'Tausend Yen kostete die Vase.',213); INSERT INTO lesson_content VALUES(313018,'Die Experten von Bayern Mnchen.',213); INSERT INTO lesson_content VALUES(313019,'New York ist eine verflixte Stadt.',213); INSERT INTO lesson_content VALUES(313020,'Im Grunde stimmt das junger Mann.',213); INSERT INTO lesson_content VALUES(313021,'Systematisch explodiert alles.',213); INSERT INTO lesson_content VALUES(313022,'Die Jungen vergaen alle Angst.',213); INSERT INTO lesson_content VALUES(313023,'Htte ich es denn sonst jemals geduldet?',213); INSERT INTO lesson_content VALUES(313024,'Essig durfte man nicht schlrfen, du ja.',213); INSERT INTO lesson_content VALUES(313025,'Es war Kult, nicht nur in den achtziger Jahren.',213); INSERT INTO lesson_content VALUES(313026,'In erster Linie Zigarren und Zigaretten in den siebziger Jahren.',213); INSERT INTO lesson_content VALUES(313027,'Ich sah das Polysandrion zum zweiten Mal.',213); INSERT INTO lesson_content VALUES(313028,'Lydia pickte auf ihrem Teller herum, mir sah sie bewundernd zu.',213); INSERT INTO lesson_content VALUES(313029,'Und nicht nur schimpfen, auch sonstige Tyrannei.',213); INSERT INTO lesson_content VALUES(313030,'Axiome liefern fr groe Systeme Vorhersagen.',213); INSERT INTO lesson_content VALUES(313031,'Das Experiment mit Polyesterfasern glckte.',213); INSERT INTO lesson_content VALUES(313032,'Es waren die Tyrannen mit xten und Speeren.',213); INSERT INTO lesson_content VALUES(313033,'Und je hher die Leistung, desto grer die Anforderungen.',213); INSERT INTO lesson_content VALUES(313034,'Knochen durfte man nicht zerreien, du ja.',213); INSERT INTO lesson_content VALUES(313035,'Ich war ja schon niedergedrckt durch Deine bloe Krperlichkeit.',213); INSERT INTO lesson_content VALUES(313036,'Jung wie ich war, wurde ich dadurch mehr neugierig als ngstlich.',213); INSERT INTO lesson_content VALUES(313037,'Was kmmert mich die Gefahr jetzt, da ich bei euch bin.',213); INSERT INTO lesson_content VALUES(313038,'Hier an der Moosdecke ist vielleicht jetzt die einzige Stelle an meinem Bau, wo ich stundenlang vergebens horchen kann.',213); INSERT INTO lesson_content VALUES(313039,'Ich rede hier nicht von irgendwelchen hohen Gedanken, sondern von jedem kleinen Unternehmen der Kinderzeit.',213); INSERT INTO lesson_content VALUES(313040,'Deine Meinung war richtig, jede andere war verrckt, berspannt, meschugge, nicht normal.',213); INSERT INTO lesson_content VALUES(313041,'Ja, im Mrchen geht alles im Fluge und zu den Mrchen gehrt auch dieser Trost.',213); INSERT INTO lesson_content VALUES(313042,'Ja, eine solche Mauer kann nicht nur nicht schtzen, der Bau selbst ist in fortwhrender Gefahr.',213); INSERT INTO lesson_content VALUES(313043,'Zu solchen Zeiten legte man sich hin und weinte vor Glck und weint jetzt wieder, whrend man es schreibt.',213); INSERT INTO lesson_content VALUES(313044,'Das war fr mich als Kind nicht einmal so blendend wie spter fr den heranwachsenden jungen Menschen.',213); INSERT INTO lesson_content VALUES(314001,'Das Klammerffchen: @',214); INSERT INTO lesson_content VALUES(314002,'Die Qualle heit Aqua? Nein.',214); INSERT INTO lesson_content VALUES(314003,'Ach Unsinn!',214); INSERT INTO lesson_content VALUES(314004,'Nicht wahr!',214); INSERT INTO lesson_content VALUES(314005,'Ach, Unsinn!',214); INSERT INTO lesson_content VALUES(314006,'Eines Tages:',214); INSERT INTO lesson_content VALUES(314007,'Sei still! Sonst setzt es was!',214); INSERT INTO lesson_content VALUES(314008,'Ganz recht, Herr!',214); INSERT INTO lesson_content VALUES(314009,'Garstiger Junge!',214); INSERT INTO lesson_content VALUES(314010,'Steffi Graf sagt:',214); INSERT INTO lesson_content VALUES(314011,'Schoten und Brassen!',214); INSERT INTO lesson_content VALUES(314012,'Angela Merkel kontert:',214); INSERT INTO lesson_content VALUES(314013,'Der Teig quillt ber.',214); INSERT INTO lesson_content VALUES(314014,'Du kannst es ja gar nicht!',214); INSERT INTO lesson_content VALUES(314015,'Das ist Oskar Lafontaine:',214); INSERT INTO lesson_content VALUES(314016,'Anschlieend qulte er sich.',214); INSERT INTO lesson_content VALUES(314017,'Quietscht es regelmig?',214); INSERT INTO lesson_content VALUES(314018,'Es geht: Gunst und Gnade.',214); INSERT INTO lesson_content VALUES(314019,'Sie sagte: Genau das ist es.',214); INSERT INTO lesson_content VALUES(314020,'Schnell, versteck Dich hinter dem Schrank! Du alter Spitzbube!',214); INSERT INTO lesson_content VALUES(314021,'Endlich auf meinem Burgplatz! Endlich werde ich ruhen drfen!',214); INSERT INTO lesson_content VALUES(314022,'Welch ein Held war Udo geworden!',214); INSERT INTO lesson_content VALUES(314023,'Machst du Quatsch? Ist das Spa?',214); INSERT INTO lesson_content VALUES(314024,'Herr G. sagt: ggf. gegen Gene.',214); INSERT INTO lesson_content VALUES(314025,'Grund der Strung: defekte Leitung.',214); INSERT INTO lesson_content VALUES(314026,'Er rhrte: Das ist die Gelegenheit.',214); INSERT INTO lesson_content VALUES(314027,'So ein Junge ist mir noch gar nicht vorgekommen!',214); INSERT INTO lesson_content VALUES(314028,'Se Quarkspeisen esse ich fr mein Leben gern.',214); INSERT INTO lesson_content VALUES(314029,'Am Fue des Berges kommt die Quelle zum Versiegen.',214); INSERT INTO lesson_content VALUES(314030,'Er rechtfertigte: Er hat Schaden ertragen.',214); INSERT INTO lesson_content VALUES(314031,'Im Gegenteil: Htte ich dir weniger gefolgt, du wrest sicher viel zufriedener mit mir.',214); INSERT INTO lesson_content VALUES(315001,'"Hey! Hau ab!" (rief Klausi)',215); INSERT INTO lesson_content VALUES(315002,'Die Tastatur (engl. "keyboard") macht mich verrckt (engl. "crazy")!',215); INSERT INTO lesson_content VALUES(315003,'"Ahoihoi" rief der Kapitn (mit einem Papagei auf der Schulter) den Besuchern zu.',215); INSERT INTO lesson_content VALUES(315004,'Bitte senden Sie eine E-Mail an Herrn Mustermann (mustermann@beispielfirma.com).',215); INSERT INTO lesson_content VALUES(315005,'New York - groartig;',215); INSERT INTO lesson_content VALUES(315006,'Die pfel (zwei Stck) lagen bereit.',215); INSERT INTO lesson_content VALUES(315007,'Achtung! Abstand halten! (wegen des Unfallrisikos)',215); INSERT INTO lesson_content VALUES(315008,'Das wre sehr bertrieben (und ich neige sogar zu dieser bertreibung).',215); INSERT INTO lesson_content VALUES(315009,'brigens magst du das Kafka''sche, soweit es sich in Frauen geuert hat, niemals besonders geliebt haben."',215); INSERT INTO lesson_content VALUES(315010,'"Gute Nacht" sagte sie.',215); INSERT INTO lesson_content VALUES(315011,'Na, wie geht''s? Luft''s gut?',215); INSERT INTO lesson_content VALUES(315012,'Das nenne ich "echt schrill"!',215); INSERT INTO lesson_content VALUES(315013,'"Ich verzichte," entgegnete er.',215); INSERT INTO lesson_content VALUES(315014,'Sven aber meinte: "Kann nicht."',215); INSERT INTO lesson_content VALUES(315015,'Ich will''s sehen.',215); INSERT INTO lesson_content VALUES(315016,'Und so etwas nennt sich "Experte"!',215); INSERT INTO lesson_content VALUES(315017,'Pfui, ich hasse sie;',215); INSERT INTO lesson_content VALUES(315018,'Das Fenster ging auf;',215); INSERT INTO lesson_content VALUES(315019,'Man msse es doch als "Schiff" betrachten.',215); INSERT INTO lesson_content VALUES(315020,'Und er war es in der Tat;',215); INSERT INTO lesson_content VALUES(315021,'Geht''s Dir hoffentlich gut?',215); INSERT INTO lesson_content VALUES(315022,'"Nicht ganz dicht" sagte der Mann mit dem Stock.',215); INSERT INTO lesson_content VALUES(315023,'Nach dem Zitat "Nicht drunter, sondern drber".',215); INSERT INTO lesson_content VALUES(315024,'Manchmal - nicht immer.',215); INSERT INTO lesson_content VALUES(315025,'Seine Ex-Freundin verliebt sich in ihren Ex-Freund.',215); INSERT INTO lesson_content VALUES(315026,'Wie Lwy - auch wy genannt - exmatrikuliert wurde.',215); INSERT INTO lesson_content VALUES(315027,'Zeit, Zug, Zeiger, Ziege; aber es zieht.',215); INSERT INTO lesson_content VALUES(315028,'Schau durch die Ritze - schnell!',215); INSERT INTO lesson_content VALUES(315029,'Ins Ohr will ich''s dir sagen.',215); INSERT INTO lesson_content VALUES(315030,'Du brauchst''s nicht zu sehen.',215); INSERT INTO lesson_content VALUES(315031,'Der Junge sprang ins Gebsch und murmelte: "Nicht jetzt, bitte nicht jetzt!".',215); INSERT INTO lesson_content VALUES(315032,'Beim Satan - der Stich sitzt.',215); INSERT INTO lesson_content VALUES(315033,'Der DAX-Wert stieg um zwlf Punkte.',215); INSERT INTO lesson_content VALUES(315034,'Expressdienst im In- und Ausland.',215); INSERT INTO lesson_content VALUES(315035,'Kommt ein Mann zum Metzger: "Ich htte gerne siebzig Gramm Wurst von der groben, fetten". Daraufhin der Metzger: "Tut mir leid, die ist heute in der Berufschule."',215); INSERT INTO lesson_content VALUES(315036,'Und? Wie luft''s so mit dem Zehnfingersystem?',215); INSERT INTO lesson_content VALUES(315037,'Die Jungen waren gercht - die Ferien da!',215); INSERT INTO lesson_content VALUES(315038,'Er liebte Andreas'' Freundin Sibille ber alles!',215); INSERT INTO lesson_content VALUES(315039,'Sie nannte den Stadtteil immer Prenzl''berg!',215); INSERT INTO lesson_content VALUES(315040,'Nutze das Zeichen - als Platzhalter fr ein Leerzeichen.',215); INSERT INTO lesson_content VALUES(315041,'Das Saxophon zischt nur - es ist verflixt.',215); INSERT INTO lesson_content VALUES(315042,'Xylophon spielen ist schwer - ich lerne es fix.',215); INSERT INTO lesson_content VALUES(315043,'In Zukunft zahlt er zgig; einhundert Zwickel.',215); INSERT INTO lesson_content VALUES(316001,'10 mal 24 plus 556 sind 796!',216); INSERT INTO lesson_content VALUES(316002,'Rufst Du mich an? (Meine Nummer lautet 67584930)',216); INSERT INTO lesson_content VALUES(316003,'So beginnt die Zahl "Pi": 3,14159265',216); INSERT INTO lesson_content VALUES(316004,'Im Jahr 1909 verhauten ihm 88 starke Mnner das Hinterteil.',216); INSERT INTO lesson_content VALUES(316005,'378 Seiten Manuskript.',216); INSERT INTO lesson_content VALUES(316006,'3 plus 8 sind 11. Ganz klar!',216); INSERT INTO lesson_content VALUES(316007,'In den 80er Jahren; ich war ungefhr 40.',216); INSERT INTO lesson_content VALUES(316008,'Mit 10 Fingern tippe ich schneller als mit 2 Fingern!',216); INSERT INTO lesson_content VALUES(316009,'Denke Dir eine Zahl zwischen 0 und 20000. Ich errate sie dann!',216); INSERT INTO lesson_content VALUES(316010,'Wahnsinn, bei dem Konzert waren ber 10 000 Personen!',216); INSERT INTO lesson_content VALUES(316011,'Gib mir meine 37 Euro!',216); INSERT INTO lesson_content VALUES(316012,'Du kennst ja den Polizeiruf 110, nicht wahr?',216); INSERT INTO lesson_content VALUES(316013,'In den 69''ern war alles ganz anders!',216); INSERT INTO lesson_content VALUES(316014,'Sagt die 0 zur 8: "Schicker Grtel!"',216); INSERT INTO lesson_content VALUES(316015,'Ich habe die Wartenummer 12. Es warten also noch 11 andere Personen.',216); INSERT INTO lesson_content VALUES(316016,'Die pfel (19 Stck) lagen bereit.',216); INSERT INTO lesson_content VALUES(316017,'Mit TIPP10 lerne ich das 10-Fingersystem schnell und effektiv!',216); INSERT INTO lesson_content VALUES(316018,'Er ergatterte Platz 7 in der Formel 1.',216); INSERT INTO lesson_content VALUES(316019,'Das kostet 43 Piepen! Bei dir piept es wohl!',216); INSERT INTO lesson_content VALUES(316020,'Sie hat im Lotto gewonnen - 1,5 Millionen. Man glaubt es nicht!',216); INSERT INTO lesson_content VALUES(316021,'Stellt man die 6 auf den Kopf, erhlt man geschwind eine 9. Das ist verrckt!',216); INSERT INTO lesson_content VALUES(316022,'Ich wrde Ihnen vielleicht insofern entgegenkommen, dass ich die honorarfreien Exemplare auf 14 Prozent heruntersetze.',216); INSERT INTO lesson_content VALUES(316023,'99 Luftballons - das sind einer zu wenig!',216); INSERT INTO lesson_content VALUES(316024,'Das Dokument - es ist gelb - liegt im 1. Stock.',216); INSERT INTO lesson_content VALUES(316025,'Ich htte dann bitte gerne noch 7 Kilo von den kstlichen Bananen.',216); INSERT INTO lesson_content VALUES(316026,'Mit einer 6 in Mathe braucht er gar nicht erst nach Hause zu kommen!',216); INSERT INTO lesson_content VALUES(317001,'Die Preisgrenze: "120 > Artikelpreis > 80 "',217); INSERT INTO lesson_content VALUES(317002,'Wenn a < b ist, dann ist -a > -b.',217); INSERT INTO lesson_content VALUES(317003,'"<=" entspricht -kleiner gleich-.',217); INSERT INTO lesson_content VALUES(317004,'Ich gebe 10 % Trinkgeld. Das sind dann 2,40 ',217); INSERT INTO lesson_content VALUES(317005,'Ich arbeite nun schon 50 % meines bisherigen Lebens bei Schmidt & Shne.',217); INSERT INTO lesson_content VALUES(317006,'Wie kommt es, dass Sie in 9 unseres Verlagsvertrages 15 % honorarfreie Exemplare berechnen?',217); INSERT INTO lesson_content VALUES(317007,'Ich habe sie einmal nachts geweckt, und, als sie aufschrak: <Sag etwas!> bat ich."',217); INSERT INTO lesson_content VALUES(317008,' steht fr Euro.',217); INSERT INTO lesson_content VALUES(317009,'# nennt man Raute.',217); INSERT INTO lesson_content VALUES(317010,'"#1", lies "Nummer 1".',217); INSERT INTO lesson_content VALUES(317011,'20 sind mir zu viel!',217); INSERT INTO lesson_content VALUES(317012,'Ein einfacher Pfeil: ->',217); INSERT INTO lesson_content VALUES(317013,'a < b bedeutet a ist kleiner als b.',217); INSERT INTO lesson_content VALUES(317014,'a > b bedeutet a ist grer als b.',217); INSERT INTO lesson_content VALUES(317015,'Er hatte $-Zeichen in den Augen!',217); INSERT INTO lesson_content VALUES(317016,'Heia! Ich hab 144 gewonnen.',217); INSERT INTO lesson_content VALUES(317017,'In der Schachnotation bedeutet ein # ein Mattsetzen des Gegners.',217); INSERT INTO lesson_content VALUES(317018,'In Amerika kostet so eine Fahrt gerade mal 13 $?"',217); INSERT INTO lesson_content VALUES(317019,'Gem 57 des Strafgesetzbuchs stimmt das so nicht.',217); INSERT INTO lesson_content VALUES(317020,'Merke Dir unbedingt diesen Sicherheitscode: #1234',217); INSERT INTO lesson_content VALUES(317021,'Seine Geheimnummer ist nicht so geheim: #007!',217); INSERT INTO lesson_content VALUES(317022,'Das Sternchen (*) wird in der Informatik fr die Multiplikation benutzt.',217); INSERT INTO lesson_content VALUES(318000, 'Dies ist die letzte Textlektion:',218); INSERT INTO lesson_content VALUES(319000, '13574962805',219); INSERT INTO lesson_content VALUES(319001, '1142',219); INSERT INTO lesson_content VALUES(319002, '8623',219); INSERT INTO lesson_content VALUES(319003, '9849',219); INSERT INTO lesson_content VALUES(319004, '2104',219); INSERT INTO lesson_content VALUES(319005, '0809',219); INSERT INTO lesson_content VALUES(319006, '2134',219); INSERT INTO lesson_content VALUES(319007, '1727',219); INSERT INTO lesson_content VALUES(319008, '8423',219); INSERT INTO lesson_content VALUES(319009, '990',219); INSERT INTO lesson_content VALUES(319010, '1652',219); INSERT INTO lesson_content VALUES(319011, '2847',219); INSERT INTO lesson_content VALUES(319012, '5530',219); INSERT INTO lesson_content VALUES(319013, '3661',219); INSERT INTO lesson_content VALUES(319014, '0071',219); INSERT INTO lesson_content VALUES(319015, '1821',219); INSERT INTO lesson_content VALUES(319016, '6744',219); INSERT INTO lesson_content VALUES(319017, '5215',219); INSERT INTO lesson_content VALUES(319018, '2211',219); INSERT INTO lesson_content VALUES(319019, '141',219); INSERT INTO lesson_content VALUES(319020, '9901',219); INSERT INTO lesson_content VALUES(319021, '21',219); INSERT INTO lesson_content VALUES(319022, '94',219); INSERT INTO lesson_content VALUES(319023, '16743',219); INSERT INTO lesson_content VALUES(319024, '8820',219); INSERT INTO lesson_content VALUES(319025, '002',219); INSERT INTO lesson_content VALUES(319026, '922',219); INSERT INTO lesson_content VALUES(319027, '336',219); INSERT INTO lesson_content VALUES(319028, '066',219); INSERT INTO lesson_content VALUES(319029, '1',219); INSERT INTO lesson_content VALUES(319030, '76',219); INSERT INTO lesson_content VALUES(319031, '924',219); INSERT INTO lesson_content VALUES(319032, '845',219); INSERT INTO lesson_content VALUES(319033, '3059',219); INSERT INTO lesson_content VALUES(319034, '23',219); INSERT INTO lesson_content VALUES(319035, '61',219); INSERT INTO lesson_content VALUES(319036, '97',219); INSERT INTO lesson_content VALUES(319037, '104',219); INSERT INTO lesson_content VALUES(319038, '12',219); INSERT INTO lesson_content VALUES(319039, '29',219); INSERT INTO lesson_content VALUES(319040, '18',219); INSERT INTO lesson_content VALUES(319041, '46',219); INSERT INTO lesson_content VALUES(319042, '404',219); INSERT INTO lesson_content VALUES(319043, '10',219); INSERT INTO lesson_content VALUES(319044, '3',219); INSERT INTO lesson_content VALUES(319045, '9',219); INSERT INTO lesson_content VALUES(319046, '5',219); INSERT INTO lesson_content VALUES(319047, '2',219); INSERT INTO lesson_content VALUES(319048, '7',219); INSERT INTO lesson_content VALUES(319049, '6',219); INSERT INTO lesson_content VALUES(319050, '4',219); INSERT INTO lesson_content VALUES(320000, '13/2+212-78*2+23,784',220); INSERT INTO lesson_content VALUES(320001, '54+900',220); INSERT INTO lesson_content VALUES(320002, '21/7',220); INSERT INTO lesson_content VALUES(320003, '22988,35/119*100',220); INSERT INTO lesson_content VALUES(320004, '66,72+47,76',220); INSERT INTO lesson_content VALUES(320005, '0,046*33',220); INSERT INTO lesson_content VALUES(320006, '24-9',220); INSERT INTO lesson_content VALUES(320007, '0,6*74+98',220); INSERT INTO lesson_content VALUES(320008, '91/12-6,53',220); INSERT INTO lesson_content VALUES(320009, '+28',220); INSERT INTO lesson_content VALUES(320010, '/47',220); INSERT INTO lesson_content VALUES(320011, '-64',220); INSERT INTO lesson_content VALUES(320012, '*4',220); INSERT INTO lesson_content VALUES(320013, '38',220); INSERT INTO lesson_content VALUES(320014, '/934',220); INSERT INTO lesson_content VALUES(320015, '/77,78',220); INSERT INTO lesson_content VALUES(320016, '*1000',220); INSERT INTO lesson_content VALUES(320017, '-89,3+10',220); INSERT INTO lesson_content VALUES(320018, '10,01*0,9',220); INSERT INTO lesson_content VALUES(320019, '+503/3600',220); INSERT INTO lesson_content VALUES(320020, '1,11694+5,736',220); INSERT INTO lesson_content VALUES(320021, '+10',220); INSERT INTO lesson_content VALUES(320022, '+300',220); INSERT INTO lesson_content VALUES(320023, '-45',220); INSERT INTO lesson_content VALUES(320024, '*19',220); INSERT INTO lesson_content VALUES(320025, '-900',220); INSERT INTO lesson_content VALUES(320026, '/16',220); INSERT INTO lesson_content VALUES(320027, '+3,6',220); INSERT INTO lesson_content VALUES(320028, '*0,19',220); INSERT INTO lesson_content VALUES(320029, '100*1,19',220); INSERT INTO lesson_content VALUES(320030, '0,6',220); DROP INDEX lesson_content_index; CREATE INDEX lesson_content_index ON lesson_content (content_id, content_lesson); // **************************************************************************** // Content of the Open Lessons // **************************************************************************** DROP TABLE open_content; CREATE TABLE open_content (content_id INTEGER PRIMARY KEY, content_text TEXT, content_lesson INTEGER); INSERT INTO open_content VALUES(1, 'Das uns heute bekannte Tastaturlayout wurde im Jahre 1868 von Christopher Latham Sholes fr die Schreibmaschine entwickelt und wird das QWERTY-System genannt.', 1); INSERT INTO open_content VALUES(2, 'Den Namen trgt es aufgrund der ersten sechs Tasten links oben auf der englischen Tastatur.', 1); INSERT INTO open_content VALUES(3, 'Das deutsche System wird aufgrund einer etwas anderen Tastaturbelegung QWERTZ genannt.', 1); INSERT INTO open_content VALUES(4, 'Fast jedes Land besitzt ein anderes Tastaturlayout, aber alle sind an das QWERTZ-System angelehnt.', 1); INSERT INTO open_content VALUES(5, 'Die Anordnung der Tasten wurde nicht, wie man es vermuten sollte, aufgrund rein ergonomischer Gesichtspunkte festgelegt. Vor allem mechanische Aspekte spielten eine Rolle.', 1); INSERT INTO open_content VALUES(6, 'So wollte man verhindern, dass sich die Typenhebel (Hmmerchen) der Schreibmaschine verhaken und ordnete die zuvor noch alphabetisch sortierten Tasten neu an.', 1); INSERT INTO open_content VALUES(7, 'Mit der Einfhrung von Computern wurde die Tastatur dann um zustzliche Tasten, wie die Funktions- und Navigationstasten sowie um einen abgetrennten Bereich fr numerische Tasten erweitert.', 1); INSERT INTO open_content VALUES(8, 'Die bisherige Tastenanordnung der Schreibmaschinen war bereits so verbreitet, dass sie direkt bernommen wurde.', 1); INSERT INTO open_content VALUES(9, 'Diese und andere Entscheidungen, wie beispielsweise die "Rollen"-Taste, haben heute eine enorme Auswirkung auf die Computerindustrie.', 1); INSERT INTO open_content VALUES(10, 'So knnen zwar modernste PC-Systeme und Bedienungsoberflchen entwickelt werden, alle unterliegen aber einem unpraktischen und, durch die Macht der Gewohnheit, kaum mehr vernderbaren Tastaturlayout.', 1); INSERT INTO open_content VALUES(11, 'Es existieren heute zahlreiche neu entwickelte Tastaturlayouts, wie beispielsweise das 1936 erfundene Dvorak-Tastaturlayout des Amerikaners August Dvorak oder das 2005 von "Jugend forscht" preisgekrnte Layout namens RISTOME.', 1); INSERT INTO open_content VALUES(12, 'Bei diesen Systemen sind die Tasten sinnvoller angeordnet und an die Hufigkeit der Schriftzeichen im Sprachgebrauch angepasst. Sie erlauben schnelleres und fr die Gelenke gesnderes Tippen.', 1); INSERT INTO open_content VALUES(13, 'Aufgrund der weiten Verbreitung des QWERTZ-Systems und des enormen Aufwands, der fr die Einfhrung eines neuen Systems ntig wre, haben sie sich bislang aber nur in kleinen Kreisen durchgesetzt.', 1); INSERT INTO open_content VALUES(14, 'Da alternative Tastaturlayouts erst neu erlernt werden mssen, sind sie vor allem fr Personen sinnvoll, die sehr viel schreiben und selten fremde Computer bedienen (z. B. Autoren).', 1); INSERT INTO open_content VALUES(15, 'Fast alle herkmmlichen Tastaturen lassen sich ohne viel Aufwand zu einem der Systeme umbauen, ausfhrliche Anleitungen dazu finden sich im Internet.', 1); INSERT INTO open_content VALUES(16, 'Mit TIPP10 lassen sich zustzlich zum deutschen und schweizerischen QWERTZ-System auch das amerikanische QWERTY-Layout, sowie die Tastaturen NEO, Dvorak und RISTOME trainieren.', 1); INSERT INTO open_content VALUES(83,'// Nachfolgend ein einfaches C++ Programm',2); INSERT INTO open_content VALUES(84,'//! Basisklasse fuer die Ein-/Ausgabe',2); INSERT INTO open_content VALUES(85,'#include <iostream>',2); INSERT INTO open_content VALUES(86,'//! BeispielKlasse multipliziert oder addiert zwei Ganzzahlwerte',2); INSERT INTO open_content VALUES(87,'/*!',2); INSERT INTO open_content VALUES(88,' BeispielKlasse haelt zwei Ganzzahlwerte und stellt Funktionen',2); INSERT INTO open_content VALUES(89,' zur Verfuegung, um das Ergebnis einer Multiplikation oder',2); INSERT INTO open_content VALUES(90,' einer Addition der Werte zurueckzugeben.',2); INSERT INTO open_content VALUES(91,' @author Name des Autors',2); INSERT INTO open_content VALUES(92,' @version Version des Quelltextes',2); INSERT INTO open_content VALUES(93,' @date Datum der letzten Aenderung',2); INSERT INTO open_content VALUES(94,'*/',2); INSERT INTO open_content VALUES(95,'class BeispielKlasse {',2); INSERT INTO open_content VALUES(96,' public:',2); INSERT INTO open_content VALUES(97,' //! Konstruktor, initialisiert die Klassenvariablen',2); INSERT INTO open_content VALUES(98,' /*!',2); INSERT INTO open_content VALUES(99,' @param x Erster Wert',2); INSERT INTO open_content VALUES(100,' @param y Zweiter Wert',2); INSERT INTO open_content VALUES(101,' @see wert1, wert2',2); INSERT INTO open_content VALUES(102,' */',2); INSERT INTO open_content VALUES(103,' BeispielKlasse(int x, int y);',2); INSERT INTO open_content VALUES(106,' //! Funktion, addiert zwei Werte',2); INSERT INTO open_content VALUES(107,' /*! @return int Summe der Werte */',2); INSERT INTO open_content VALUES(108,' int addiereWerte();',2); INSERT INTO open_content VALUES(109,' //! Funktion, multipliziert zwei Werte',2); INSERT INTO open_content VALUES(110,' /*! @return int Produkt der Werte */',2); INSERT INTO open_content VALUES(111,' multipliziereWerte();',2); INSERT INTO open_content VALUES(112,' ',2); INSERT INTO open_content VALUES(113,' private:',2); INSERT INTO open_content VALUES(114,' //! Erster Ganzzahlwert',2); INSERT INTO open_content VALUES(115,' int wert1;',2); INSERT INTO open_content VALUES(116,' //! Zweiter Ganzzahlwert',2); INSERT INTO open_content VALUES(117,' int wert2;',2); INSERT INTO open_content VALUES(118,'};',2); INSERT INTO open_content VALUES(119,'BeispielKlasse::BeispielKlasse(int x, int y) {',2); INSERT INTO open_content VALUES(120,' // Werte zuweisen',2); INSERT INTO open_content VALUES(121,' wert1 = x;',2); INSERT INTO open_content VALUES(122,' wert2 = y;',2); INSERT INTO open_content VALUES(123,'}',2); INSERT INTO open_content VALUES(126,'int addiereWerte() {',2); INSERT INTO open_content VALUES(127,' // Summe zurueckgeben',2); INSERT INTO open_content VALUES(128,' return wert1 + wert2;',2); INSERT INTO open_content VALUES(129,'}',2); INSERT INTO open_content VALUES(130,'int multipliziereWerte() {',2); INSERT INTO open_content VALUES(131,' // Produkt zurueckgeben',2); INSERT INTO open_content VALUES(132,' return wert1 * wert2;',2); INSERT INTO open_content VALUES(133,'}',2); INSERT INTO open_content VALUES(134,'// Und jetzt das Hauptprogramm:',2); INSERT INTO open_content VALUES(135,'int main() { ',2); INSERT INTO open_content VALUES(136,' // Objekt der Klasse erzeugen',2); INSERT INTO open_content VALUES(137,' BeispielKlasse *beispielKlasse = new BeispielKlasse(5, 5);',2); INSERT INTO open_content VALUES(138,' // Ergebnis der Addition ausgeben',2); INSERT INTO open_content VALUES(139,' cout << "Summe: " << beispielKlasse->addiereWerte() << ''\n'';',2); INSERT INTO open_content VALUES(140,' // Ergebnis der Multiplikation ausgeben',2); INSERT INTO open_content VALUES(141,' cout << "Produkt: " << beispielKlasse->multipliziereWerte() << ''\n'';',2); INSERT INTO open_content VALUES(142,' delete beispielKlasse;',2); INSERT INTO open_content VALUES(143,' return 0;',2); INSERT INTO open_content VALUES(144,'}',2); INSERT INTO open_content VALUES(160, 'Es folgt eine Fabel von Christian Frchtegott Gellert, 1746:', 3); INSERT INTO open_content VALUES(161, 'Die Spinne', 3); INSERT INTO open_content VALUES(162, 'Hochmthig ber ihre Knste,', 3); INSERT INTO open_content VALUES(163, 'Warf vom durchsichtigen Gespinste', 3); INSERT INTO open_content VALUES(164, 'Die Spinne manchen finstern Blick', 3); INSERT INTO open_content VALUES(165, 'Auf einen Seidenwurm zurck;', 3); INSERT INTO open_content VALUES(166, 'Hochmthig ber ihre Knste,', 3); INSERT INTO open_content VALUES(167, 'Warf vom durchsichtigen Gespinste', 3); INSERT INTO open_content VALUES(168, 'Die Spinne manchen finstern Blick', 3); INSERT INTO open_content VALUES(169, 'Auf einen Seidenwurm zurck;', 3); INSERT INTO open_content VALUES(170, 'So aufgeblht, wie ein Pedant,', 3); INSERT INTO open_content VALUES(171, 'Der itzt, von seinem Werth erhitzet,', 3); INSERT INTO open_content VALUES(172, 'In Werken seiner eignen Hand', 3); INSERT INTO open_content VALUES(173, 'Bis an den Bart vergraben sitzet,', 3); INSERT INTO open_content VALUES(174, 'Und auf den Schler, der ihn grt,', 3); INSERT INTO open_content VALUES(175, 'Den Blick mit halben Augen schiet.', 3); INSERT INTO open_content VALUES(176, 'Der Seidenwurm, den erst vor wenig Tagen', 3); INSERT INTO open_content VALUES(177, 'Der Herr zur Lust mit sich ins Haus getragen,', 3); INSERT INTO open_content VALUES(178, 'Sieht dieser Spinne lange zu,', 3); INSERT INTO open_content VALUES(179, 'Und fragt zuletzt: Was webst denn du?', 3); INSERT INTO open_content VALUES(180, 'Unwissender! lt sich die Spinn erbittert hren,', 3); INSERT INTO open_content VALUES(181, 'Du kannst mich noch durch solche Fragen stren?', 3); INSERT INTO open_content VALUES(182, 'Ich webe fr die Ewigkeit!', 3); INSERT INTO open_content VALUES(183, 'Doch kaum ertheilte sie den trotzigen Bescheid:', 3); INSERT INTO open_content VALUES(184, 'So reit die Magd, mit Borsten in den Hnden,', 3); INSERT INTO open_content VALUES(185, 'Von den noch nicht geputzten Wnden', 3); INSERT INTO open_content VALUES(186, 'Die Spinne nebst der Ewigkeit.', 3); INSERT INTO open_content VALUES(187, 'Eine Kurzgeschichte von Franz Kafka, 1912:', 4); INSERT INTO open_content VALUES(188, 'Groer Lrm', 4); INSERT INTO open_content VALUES(189, 'Ich sitze in meinem Zimmer im Hauptquartier des Lrms der ganzen Wohnung.', 4); INSERT INTO open_content VALUES(190, 'Alle Tren hre ich schlagen, durch ihren Lrm bleiben mir nur die Schritte der zwischen ihnen Laufenden erspart,', 4); INSERT INTO open_content VALUES(191, 'noch das Zuklappen der Herdtre in der Kche hre ich.', 4); INSERT INTO open_content VALUES(192, 'Der Vater durchbricht die Tren meines Zimmers und zieht im nachschleppenden Schlafrock durch,', 4); INSERT INTO open_content VALUES(193, 'aus dem Ofen im Nebenzimmer wird die Asche gekratzt, Valli fragt,', 4); INSERT INTO open_content VALUES(194, 'durch das Vorzimmer Wort fr Wort rufend, ob des Vaters Hut schon geputzt ist,', 4); INSERT INTO open_content VALUES(195, 'ein Zischen, das mir befreundet sein will, erhebt noch das Geschrei einer antwortenden Stimme.', 4); INSERT INTO open_content VALUES(196, 'Die Wohnungstre wird aufgeklinkt und lrmt, wie aus katarrhalischem Hals,', 4); INSERT INTO open_content VALUES(197, 'ffnet sich dann weiterhin mit dem Singen einer Frauenstimme', 4); INSERT INTO open_content VALUES(198, 'und schliet sich endlich mit einem dumpfen,', 4); INSERT INTO open_content VALUES(199, 'mnnlichen Ruck, der sich am rcksichtslosesten anhrt.', 4); INSERT INTO open_content VALUES(200, 'Der Vater ist weg, jetzt beginnt der zartere, zerstreutere,', 4); INSERT INTO open_content VALUES(201, 'hoffnungslosere Lrm, von den Stimmen der zwei Kanarienvgel angefhrt.', 4); INSERT INTO open_content VALUES(202, 'Schon frher dachte ich daran, bei den Kanarienvgeln fllt es mir von neuem ein,', 4); INSERT INTO open_content VALUES(203, 'ob ich nicht die Tre bis zu einer kleinen Spalte ffnen,', 4); INSERT INTO open_content VALUES(204, 'schlangengleich ins Nebenzimmer kriechen und', 4); INSERT INTO open_content VALUES(205, 'so auf dem Boden meine Schwestern und ihr Frulein um Ruhe bitten sollte.', 4); INSERT INTO open_content VALUES(206, 'Franz Kafka', 4); INSERT INTO open_content VALUES(207, 'Regeln fr meinen Stammtisch, von Peter Altenberg.', 5); INSERT INTO open_content VALUES(208, '(in "Mrchen des Lebens", Berlin 1911)', 5); INSERT INTO open_content VALUES(209, '1. Das Ngelschneiden bei Tische ist verboten, selbst mit einer eigenen mitgebrachten Schere alten Systems;', 5); INSERT INTO open_content VALUES(210, 'besonders aber mit der neuartigen Zwickmaschine, da die scharf abgezwickten Ngel dann leicht in die Bierglser springen knnen, und das Herausfischen mit Schwierigkeiten verbunden ist!', 5); INSERT INTO open_content VALUES(211, '2. Das Wort "Popo" oder hnliches ist tunlichst zu vermeiden.', 5); INSERT INTO open_content VALUES(212, 'Ist das aber unmglich, so soll es mehr oder weniger geflstert vorgebracht werden!', 5); INSERT INTO open_content VALUES(213, '3. Ganz private Angelegenheiten, persnlichen Ehrgeiz, Eitelkeit, Grenwahn, "Sichpatzigmachen" betreffend, sollen nicht ber drei Stunden lang gesprchsweise ausgedehnt werden.', 5); INSERT INTO open_content VALUES(214, 'Es wre denn, dass der Verbrecher einen Franzsischen Champagner dabei zahlt!', 5); INSERT INTO open_content VALUES(215, 'Jede Flasche verlngert die Zeitdauer des Gesprches, bis sie leer ist!', 5); INSERT INTO open_content VALUES(216, '4. Mitteilungen ber private Verdauungsstrungen samt Detailschilderung, die von keinem allgemeinen Gesichtspunkte getragen sind, haben dem unglcklichen Nebensitzenden in kurzen knappen Ausdrcken bermittelt zu werden;', 5); INSERT INTO open_content VALUES(217, 'auch muss das Mitgefhl des Zuhrers diskret gehalten sein, wobei er es versuchen muss, die natrliche Freude ber das Missgeschick seines Freundes taktvoll zurckzudmmen!', 5); INSERT INTO open_content VALUES(218, '5. Politische Gesprche haben ber die Phrase: "Ich glaube, in Amerika brandelt''s", nicht hinauszugehen!', 5); INSERT INTO open_content VALUES(219, '6. Gesprche ber Goethe haben nicht in eine grliche Anrempelei des Hugo von Hofmannsthal auszuarten!', 5); INSERT INTO open_content VALUES(220, '7. Damen an unserem Tische, die zeitweilig "wohin" gehen mssen, haben von ihrem Gatten oder Geliebten laut und vernehmlich 20 Heller zu verlangen, da wenigstens dieser Vorgang an die "kuflichen Mdchen" uns angenehm erinnert!', 5); INSERT INTO open_content VALUES(221, '8. Es durch lngere Zeit hindurch versuchen, ob Zndhlzchenkpfe an einer Porzellanreibflche abspringen, ist ungehrig, da es fr die Frage der "Entwicklung der Menschheit", der doch alles an diesem Stammtische dient, belanglos ist!', 5); INSERT INTO open_content VALUES(222, '9. Junge Kellnerburschen drfen nur gegen alle ihre Frechheiten von demjenigen in Schutz genommen werden, der sich ausweisen kann, dass er wirklich "homosexuell" sei!', 5); INSERT INTO open_content VALUES(223, '10. Gesprche allgemeiner Natur mssen eine perfid versteckte Spitze gegen irgend jemanden an unserem Stammtische besitzen;', 5); INSERT INTO open_content VALUES(224, 'es ist wie die Wrze zu Speisen, man verdaut sie dann besser!', 5); INSERT INTO open_content VALUES(225, '11. Liebespaare drfen an unseren Tisch kommen;', 5); INSERT INTO open_content VALUES(226, 'denn es ist ein untrgliches Anzeichen, dass sie wenigstens diese Stunden nicht miteinander allein verbringen wollen;', 5); INSERT INTO open_content VALUES(227, 'also eine Niederlage coram publico. Auerdem kann man die Dame vielleicht abspenstig machen!', 5); INSERT INTO open_content VALUES(228, 'der', 6); INSERT INTO open_content VALUES(229, 'die', 6); INSERT INTO open_content VALUES(230, 'und', 6); INSERT INTO open_content VALUES(231, 'in', 6); INSERT INTO open_content VALUES(232, 'den', 6); INSERT INTO open_content VALUES(233, 'von', 6); INSERT INTO open_content VALUES(234, 'zu', 6); INSERT INTO open_content VALUES(235, 'das', 6); INSERT INTO open_content VALUES(236, 'mit', 6); INSERT INTO open_content VALUES(237, 'sich', 6); INSERT INTO open_content VALUES(238, 'des', 6); INSERT INTO open_content VALUES(239, 'auf', 6); INSERT INTO open_content VALUES(240, 'fr', 6); INSERT INTO open_content VALUES(241, 'ist', 6); INSERT INTO open_content VALUES(242, 'im', 6); INSERT INTO open_content VALUES(243, 'dem', 6); INSERT INTO open_content VALUES(244, 'nicht', 6); INSERT INTO open_content VALUES(245, 'ein', 6); INSERT INTO open_content VALUES(246, 'eine', 6); INSERT INTO open_content VALUES(247, 'als', 6); INSERT INTO open_content VALUES(248, 'a', 7); INSERT INTO open_content VALUES(249, 'b', 7); INSERT INTO open_content VALUES(250, 'c', 7); INSERT INTO open_content VALUES(251, 'd', 7); INSERT INTO open_content VALUES(252, 'e', 7); INSERT INTO open_content VALUES(253, 'f', 7); INSERT INTO open_content VALUES(254, 'g', 7); INSERT INTO open_content VALUES(255, 'h', 7); INSERT INTO open_content VALUES(256, 'i', 7); INSERT INTO open_content VALUES(257, 'j', 7); INSERT INTO open_content VALUES(258, 'k', 7); INSERT INTO open_content VALUES(259, 'l', 7); INSERT INTO open_content VALUES(260, 'm', 7); INSERT INTO open_content VALUES(261, 'n', 7); INSERT INTO open_content VALUES(262, 'o', 7); INSERT INTO open_content VALUES(263, 'p', 7); INSERT INTO open_content VALUES(264, 'q', 7); INSERT INTO open_content VALUES(265, 'r', 7); INSERT INTO open_content VALUES(266, 's', 7); INSERT INTO open_content VALUES(267, 't', 7); INSERT INTO open_content VALUES(268, 'u', 7); INSERT INTO open_content VALUES(269, 'v', 7); INSERT INTO open_content VALUES(270, 'w', 7); INSERT INTO open_content VALUES(271, 'x', 7); INSERT INTO open_content VALUES(272, 'y', 7); INSERT INTO open_content VALUES(273, 'z', 7); INSERT INTO open_content VALUES(274, '', 7); INSERT INTO open_content VALUES(275, '', 7); INSERT INTO open_content VALUES(276, '', 7); INSERT INTO open_content VALUES(277, '', 7); INSERT INTO open_content VALUES(278, 'A', 7); INSERT INTO open_content VALUES(279, 'B', 7); INSERT INTO open_content VALUES(280, 'C', 7); INSERT INTO open_content VALUES(281, 'D', 7); INSERT INTO open_content VALUES(282, 'E', 7); INSERT INTO open_content VALUES(283, 'F', 7); INSERT INTO open_content VALUES(284, 'G', 7); INSERT INTO open_content VALUES(285, 'H', 7); INSERT INTO open_content VALUES(286, 'I', 7); INSERT INTO open_content VALUES(287, 'J', 7); INSERT INTO open_content VALUES(288, 'K', 7); INSERT INTO open_content VALUES(289, 'L', 7); INSERT INTO open_content VALUES(290, 'M', 7); INSERT INTO open_content VALUES(291, 'N', 7); INSERT INTO open_content VALUES(292, 'O', 7); INSERT INTO open_content VALUES(293, 'P', 7); INSERT INTO open_content VALUES(294, 'Q', 7); INSERT INTO open_content VALUES(295, 'R', 7); INSERT INTO open_content VALUES(296, 'S', 7); INSERT INTO open_content VALUES(297, 'T', 7); INSERT INTO open_content VALUES(298, 'U', 7); INSERT INTO open_content VALUES(299, 'V', 7); INSERT INTO open_content VALUES(300, 'W', 7); INSERT INTO open_content VALUES(301, 'X', 7); INSERT INTO open_content VALUES(302, 'Y', 7); INSERT INTO open_content VALUES(303, 'Z', 7); INSERT INTO open_content VALUES(304, '', 7); INSERT INTO open_content VALUES(305, '', 7); INSERT INTO open_content VALUES(306, '', 7); INSERT INTO open_content VALUES(307, 'Das erste McDonald''s Restaurant wurde am 15. Mai 1940 von Dick und Mac McDonald erffnet.', 8); INSERT INTO open_content VALUES(308, 'The first McDonald''s restaurant was opened by Dick and Mac McDonald on the 15th of May 1940.', 8); INSERT INTO open_content VALUES(309, 'Die am meisten verkauften Produkte in ihrem Restaurant waren Hamburger.', 8); INSERT INTO open_content VALUES(310, 'The best selling products at their restaurant were hamburgers.', 8); INSERT INTO open_content VALUES(311, 'Ich spreche jetzt viel flieender Englisch als letztes Jahr.', 8); INSERT INTO open_content VALUES(312, 'I speak English more fluently now than last year.', 8); INSERT INTO open_content VALUES(313, 'Sie grte mich am hflichsten von allen.', 8); INSERT INTO open_content VALUES(314, 'She greeted me most politely of all.', 8); INSERT INTO open_content VALUES(315, 'Hat Ihnen der Film gefallen?', 8); INSERT INTO open_content VALUES(316, 'Did you like the film?', 8); INSERT INTO open_content VALUES(317, 'Er hat keinen Sinn fr Humor.', 8); INSERT INTO open_content VALUES(318, 'He has no sense of humour.', 8); INSERT INTO open_content VALUES(319, 'Was hast du heute Abend vor?', 8); INSERT INTO open_content VALUES(320, 'What are your plans for tonight?', 8); INSERT INTO open_content VALUES(321, 'Du musst dich rasieren!', 8); INSERT INTO open_content VALUES(322, 'You need a shave!', 8); INSERT INTO open_content VALUES(323, 'Du siehst gut aus.', 8); INSERT INTO open_content VALUES(324, 'You''re looking very well.', 8); INSERT INTO open_content VALUES(325, 'Du hast ganz Recht.', 8); INSERT INTO open_content VALUES(326, 'You''re quite right.', 8); INSERT INTO open_content VALUES(327, 'Wann schlieen die Lden?', 8); INSERT INTO open_content VALUES(328, 'When do the shops close?', 8); INSERT INTO open_content VALUES(329, 'Am Montag um 3 Uhr.', 8); INSERT INTO open_content VALUES(330, 'On Monday at three o''clock.', 8); INSERT INTO open_content VALUES(331, 'Knnten sie mich mitnehmen?', 8); INSERT INTO open_content VALUES(332, 'Could you give me a lift?', 8); INSERT INTO open_content VALUES(333, 'Es ist nur ein kleiner Umweg.', 8); INSERT INTO open_content VALUES(334, 'It is only a short detour.', 8); INSERT INTO open_content VALUES(335, 'Fllen Sie bitte dieses Formular aus.', 8); INSERT INTO open_content VALUES(336, 'Fill in this form, please.', 8); INSERT INTO open_content VALUES(337, 'Wir verbringen unsere Ferien immer hier.', 8); INSERT INTO open_content VALUES(338, 'We always spend our holidays here.', 8); INSERT INTO open_content VALUES(339, 'Soll ich Ihnen eine Zeitung holen?', 8); INSERT INTO open_content VALUES(340, 'Shall I get you a newspaper?', 8); INSERT INTO open_content VALUES(341, 'Ich habe leider kein Geld bei mir.', 8); INSERT INTO open_content VALUES(342, 'I''m afraid I haven''t got any money on me.', 8); INSERT INTO open_content VALUES(343, 'Es ist ganz einfach.', 8); INSERT INTO open_content VALUES(344, 'It''s quite simple.', 8); INSERT INTO open_content VALUES(345, 'Genau das meine ich.', 8); INSERT INTO open_content VALUES(346, 'That''s exactly what I mean.', 8); INSERT INTO open_content VALUES(347, 'Das Kartenspiel, von Joachim Ringelnatz', 9); INSERT INTO open_content VALUES(348, 'Vier Mnner zogen sich zurck,', 9); INSERT INTO open_content VALUES(349, 'Schlossen sich ein, und drei', 9); INSERT INTO open_content VALUES(350, 'Von ihnen versuchten ihr Glck,', 9); INSERT INTO open_content VALUES(351, 'Spielten Karten.', 9); INSERT INTO open_content VALUES(352, 'Drauen im Garten', 9); INSERT INTO open_content VALUES(353, 'Blhte der Mai.', 9); INSERT INTO open_content VALUES(354, 'Im schwlen Zimmer saen die', 9); INSERT INTO open_content VALUES(355, 'Mnner bei ihren Karten.', 9); INSERT INTO open_content VALUES(356, 'Ihre Weiber lieen sie', 9); INSERT INTO open_content VALUES(357, 'Drauen weinen und warten.', 9); INSERT INTO open_content VALUES(358, 'Und spielten Spiel um Spiel zu dritt,', 9); INSERT INTO open_content VALUES(359, 'Und jeder schwitzte.', 9); INSERT INTO open_content VALUES(360, 'Der vierte Mann sah zu, kibit -', 9); INSERT INTO open_content VALUES(361, 'Kibitzte.', 9); INSERT INTO open_content VALUES(362, 'Geld hin - Geld her - Geld her - Geld hin -', 9); INSERT INTO open_content VALUES(363, 'Verlust - Gewinn -', 9); INSERT INTO open_content VALUES(364, 'Nach Kartengemisch.', 9); INSERT INTO open_content VALUES(365, 'Es wurde gebucht,', 9); INSERT INTO open_content VALUES(366, 'Gereizt und geflucht.', 9); INSERT INTO open_content VALUES(367, 'Man schlug auf den Tisch.', 9); INSERT INTO open_content VALUES(368, 'Man witzelte seicht.', 9); INSERT INTO open_content VALUES(369, 'Htte Pikdame statt Karozehn', 9); INSERT INTO open_content VALUES(370, 'Den Buben genommen,', 9); INSERT INTO open_content VALUES(371, 'Dann wre vielleicht', 9); INSERT INTO open_content VALUES(372, 'Alles anders gekommen.', 9); INSERT INTO open_content VALUES(373, 'Und noch einmal und noch und noch,', 9); INSERT INTO open_content VALUES(374, 'Verbissen und besessen. -', 9); INSERT INTO open_content VALUES(375, 'Ein Lftchen kam durchs Schlsselloch,', 9); INSERT INTO open_content VALUES(376, 'Roch nach verbranntem Essen.', 9); INSERT INTO open_content VALUES(377, 'Der Knig fiel.', 9); INSERT INTO open_content VALUES(378, 'Das letzte Spiel,', 9); INSERT INTO open_content VALUES(379, 'Das allerletzte Spiel begann.', 9); INSERT INTO open_content VALUES(380, 'Und wieder stach die Karozehn.', 9); INSERT INTO open_content VALUES(381, 'Der vierte Mann,', 9); INSERT INTO open_content VALUES(382, 'Der nichts getan als zugesehn,', 9); INSERT INTO open_content VALUES(383, 'Gewann.', 9); INSERT INTO open_content VALUES(384, 'Vier ghnende Mnner gingen', 9); INSERT INTO open_content VALUES(385, 'Hinaus ins Morgengraun.', 9); INSERT INTO open_content VALUES(386, 'Drauen hingen', 9); INSERT INTO open_content VALUES(387, 'Am Gartenzaun', 9); INSERT INTO open_content VALUES(388, 'Vier vertrocknete Fraun.', 9); INSERT INTO open_content VALUES(389, 'Die Affen, von Wilhelm Busch', 10); INSERT INTO open_content VALUES(390, 'Der Bauer sprach zu seinem Jungen:', 10); INSERT INTO open_content VALUES(391, '"Heut in der Stadt, da wirst du gaffen.', 10); INSERT INTO open_content VALUES(392, 'Wir fahren hin und sehn die Affen.', 10); INSERT INTO open_content VALUES(393, 'Es ist gelungen', 10); INSERT INTO open_content VALUES(394, 'Und um sich schiefzulachen,', 10); INSERT INTO open_content VALUES(395, 'Was die fr Streiche machen', 10); INSERT INTO open_content VALUES(396, 'Und fr Gesichter,', 10); INSERT INTO open_content VALUES(397, 'Wie rechte Bsewichter.', 10); INSERT INTO open_content VALUES(398, 'Sie krauen sich,', 10); INSERT INTO open_content VALUES(399, 'Sie zausen sich,', 10); INSERT INTO open_content VALUES(400, 'Sie hauen sich,', 10); INSERT INTO open_content VALUES(401, 'Sie lausen sich,', 10); INSERT INTO open_content VALUES(402, 'Beschnuppern dies, beknuppern das,', 10); INSERT INTO open_content VALUES(403, 'Und keiner gnnt dem andern was,', 10); INSERT INTO open_content VALUES(404, 'Und essen tun sie mit der Hand,', 10); INSERT INTO open_content VALUES(405, 'Und alles tun sie mit Verstand,', 10); INSERT INTO open_content VALUES(406, 'Und jeder stiehlt als wie ein Rabe.', 10); INSERT INTO open_content VALUES(407, 'Pa auf, das siehst du heute." -', 10); INSERT INTO open_content VALUES(408, '"O Vater", rief der Knabe,', 10); INSERT INTO open_content VALUES(409, '"Sind Affen denn auch Leute?" -', 10); INSERT INTO open_content VALUES(410, 'Der Vater sprach: "Nun ja,', 10); INSERT INTO open_content VALUES(411, 'Nicht ganz, doch so beinah."', 10); INSERT INTO open_content VALUES(412, 'Der Asket, von Wilhelm Busch', 11); INSERT INTO open_content VALUES(413, 'Im Hochgebirg vor seiner Hhle', 11); INSERT INTO open_content VALUES(414, 'Sa der Asket;', 11); INSERT INTO open_content VALUES(415, 'Nur noch ein Rest von Leib und Seele', 11); INSERT INTO open_content VALUES(416, 'Infolge uerster Dit.', 11); INSERT INTO open_content VALUES(417, 'Demtig ihm zu Fen kniet', 11); INSERT INTO open_content VALUES(418, 'Ein Jngling, der sich lngst bemht,', 11); INSERT INTO open_content VALUES(419, 'Des strengen Bers strenge Lehren', 11); INSERT INTO open_content VALUES(420, 'Nachdenklich prfend anzuhren.', 11); INSERT INTO open_content VALUES(421, 'Grad schliet der Klausner den Sermon', 11); INSERT INTO open_content VALUES(422, 'Und spricht: "Bekehre dich, mein Sohn!', 11); INSERT INTO open_content VALUES(423, 'Verla das bse Weltgetriebe.', 11); INSERT INTO open_content VALUES(424, 'Vor allem unterla die Liebe,', 11); INSERT INTO open_content VALUES(425, 'Denn grade sie erweckt aufs Neue', 11); INSERT INTO open_content VALUES(426, 'Das Leben und mit ihm die Reue.', 11); INSERT INTO open_content VALUES(427, 'Da, schau mich an. Ich bin so leicht,', 11); INSERT INTO open_content VALUES(428, 'Fast hab'' ich schon das Nichts erreicht,', 11); INSERT INTO open_content VALUES(429, 'Und bald verschwind'' ich in das reine', 11); INSERT INTO open_content VALUES(430, 'Zeit-, raum- und traumlos Allundeine."', 11); INSERT INTO open_content VALUES(431, 'Als so der Meister in Ekstase,', 11); INSERT INTO open_content VALUES(432, 'Sticht ihn ein Bienchen in die Nase.', 11); INSERT INTO open_content VALUES(433, 'Oh, welch ein Schrei!', 11); INSERT INTO open_content VALUES(434, 'Und dann das Mienenspiel dabei.', 11); INSERT INTO open_content VALUES(435, 'Der Jngling stutzt und ruft: "Was seh'' ich?', 11); INSERT INTO open_content VALUES(436, 'Wer solchermaen leidensfhig,', 11); INSERT INTO open_content VALUES(437, 'Wer so gefhlvoll und empfindlich,', 11); INSERT INTO open_content VALUES(438, 'Der, frcht'' ich, lebt noch viel zu grndlich', 11); INSERT INTO open_content VALUES(439, 'Und stirbt noch nicht zum letztenmal."', 11); INSERT INTO open_content VALUES(440, 'Mit diesem khlen Wort empfahl', 11); INSERT INTO open_content VALUES(441, 'Der Jngling sich und stieg hernieder', 11); INSERT INTO open_content VALUES(442, 'Ins tiefe Tal und kam nicht wieder.', 11); INSERT INTO open_content VALUES(443,'Als der kleine Luchs heute mit dem kleinen Bren spielte, war es irgendwie anders als sonst.',14); INSERT INTO open_content VALUES(444,'Der Br, der sonst so gerne Fangen spielte und hinter Schmetterlingen herlief, sah schon am Morgen mde aus.',14); INSERT INTO open_content VALUES(445,'Beim Versteckspiel schlief er regelmig in seinen Verstecken ein.',14); INSERT INTO open_content VALUES(446,'Und am Abend musste ihn seine Mutti in die Brenhhle zurckbringen, so mde war er.',14); INSERT INTO open_content VALUES(447,'Am nchsten Tag kam er nicht mal zum gemeinsamen Fische fangen.',14); INSERT INTO open_content VALUES(448,'Das war das erste Mal, dass der Br unpnktlich war.',14); INSERT INTO open_content VALUES(449,'"Hoffentlich ist alles in Ordnung!", dachte der kleine Luchs.',14); INSERT INTO open_content VALUES(450,'Als der kleine Br am nchsten Tag wieder nicht kam, begann sich der kleine Luchs ernsthaft Sorgen zu machen.',14); INSERT INTO open_content VALUES(451,'Er beschloss, den kleinen Bren in seiner Brenhhle zu besuchen, um nach dem Rechten zu sehen.',14); INSERT INTO open_content VALUES(452,'Als er vor der Hhle ankam, war es verdchtig still.',14); INSERT INTO open_content VALUES(453,'Nichts von der brummigen Stimme seines Kameraden zu hren, die ihn sonst schon von weitem verriet.',14); INSERT INTO open_content VALUES(454,'Nachdem keiner auf sein Klopfen reagierte, ging der kleine Luchs vorsichtig hinein.',14); INSERT INTO open_content VALUES(455,'Er sah den kleinen Bren in seinem Bettchen liegen. Dabei war es schon lngst Mittag!',14); INSERT INTO open_content VALUES(456,'"Geht es dir gut, kleiner Br?", fragte er.',14); INSERT INTO open_content VALUES(457,'Keine Antwort.',14); INSERT INTO open_content VALUES(458,'Er stupste den schlafenden Freund vorsichtig an.',14); INSERT INTO open_content VALUES(459,'Wieder keine Antwort. Der Br zuckte nicht einmal mit den Wimpern.',14); INSERT INTO open_content VALUES(460,'Er begann an dem mit weichem Moos berzogenen Bettchen zu rtteln.',14); INSERT INTO open_content VALUES(461,'Da kam Mama Br nach Hause.',14); INSERT INTO open_content VALUES(462,'"Kleiner Luchs, du musst den kleinen Bren schlafen lassen!"',14); INSERT INTO open_content VALUES(463,'"Aber ich mache mir Sorgen! Ist er krank?", wunderte sich der Luchs.',14); INSERT INTO open_content VALUES(464,'"Aber nein", lachte Mama Br. "Ihm geht es bestens. Aber wir Bren finden es im Winter viel zu kalt. Darum essen wir im Herbst so viel wir nur knnen, sammeln Vorrte in unserer Hhle und kuscheln uns gemtlich in unser Bettchen, um den ganzen Winter durchzuschlafen."',14); INSERT INTO open_content VALUES(465,'"Den ganzen Winter?", fragte der kleine Luchs unglubig.',14); INSERT INTO open_content VALUES(466,'"Ja, den ganzen Winter. Und im Frhjahr wird dein Freund aufwachen und wieder den ganzen Tag mit dir spielen knnen. Papa Br und ich sind auch schon ganz mde. Wir haben nur noch etwas Honig geholt und werden uns gleich schlafen legen."',14); INSERT INTO open_content VALUES(467,'"Ach so", sagte der kleine Luchs. "Dann kann ich also beruhigt nach Hause gehen. Meine Mama wartet sicher schon mit dem Essen auf mich. Schlaft gut, Familie Br! Und trumt was Schnes!"',14); INSERT INTO open_content VALUES(468,'Und whrend er noch Mama Br zum Abschied winkte, berlegte der kleine Luchs schon, was fr neue Spiele er und der kleine Br wohl im Frhling ausprobieren knnten.',14); INSERT INTO open_content VALUES(469,'"Komm schnell, kleiner Br, ich habe etwas ganz Unglaubliches entdeckt", rief der kleine Luchs und rang nach Atem.',15); INSERT INTO open_content VALUES(470,'"Was ist denn so wichtig, dass du mich beim Angeln strst?", fragte der Br.',15); INSERT INTO open_content VALUES(471,'"Das musst du dir ansehen! Ich habe eine Stelle im Wald entdeckt, wo die Sternchen vom Himmel herunterkommen und in der Luft tanzen, als wren sie Schneeflocken im Wind!"',15); INSERT INTO open_content VALUES(472,'"Das glaube ich erst, wenn ich es selbst gesehen habe", brummte der kleine Br und stand gemchlich auf, ganz nach Brenart.',15); INSERT INTO open_content VALUES(473,'Es war schon Abend, und der Weg war schwer zu finden. Aber der Luchs kannte den Wald wie seine Westentasche und so dauerte es nicht lange, bis sie an der magischen Lichtung angekommen waren.',15); INSERT INTO open_content VALUES(474,'Zuerst sahen sie nichts.',15); INSERT INTO open_content VALUES(475,'Doch als sie sich hinsetzten, um zu verschnaufen, flsterte der kleine Br pltzlich: "Schau, kleiner Luchs! Dort!"',15); INSERT INTO open_content VALUES(476,'Und er zeigte auf eine alte Fichte, aus deren Krone pltzlich ein kleiner, leuchtender Punkt tnzelnd hervorkam.',15); INSERT INTO open_content VALUES(477,'Ihm folgten noch mehr.',15); INSERT INTO open_content VALUES(478,'Und schon bald war die ganze Lichtung durch und durch erfllt von winzigen leuchtenden Sternchen.',15); INSERT INTO open_content VALUES(479,'"Hoffentlich tun die uns nichts", flsterte der Br, der ganz und gar nicht mehr so mutig wie sonst wirkte.',15); INSERT INTO open_content VALUES(480,'Doch da hrten sie pltzlich eine Stimme. Sie kam aus dem Gestrpp direkt neben ihnen.',15); INSERT INTO open_content VALUES(481,'"Keine Angst, Freunde. Sie werden euch mit Sicherheit nichts tun!"',15); INSERT INTO open_content VALUES(482,'"W-wer bi-bi-bist du?", fragten die beiden starr vor Schreck.',15); INSERT INTO open_content VALUES(483,'Da raschelte es im Gestrpp und hervor kam der alte Dachs.',15); INSERT INTO open_content VALUES(484,'"Ach du bist es, Onkel Dachs! Das haben wir natrlich lngst gewusst!", sagte der Br.',15); INSERT INTO open_content VALUES(485,'"Wir wollten nur so tun, als ob wir uns erschrocken htten!", fgte der kleine Luchs hinzu.',15); INSERT INTO open_content VALUES(486,'"Ja, natrlich", lachte der alte Dachs. "Und wie ich sehe, habt ihr auch schon meine Freunde kennen gelernt!"',15); INSERT INTO open_content VALUES(487,'"Deine Freunde?!"',15); INSERT INTO open_content VALUES(488,'"Ja", antwortete der alte Dachs. "Meine Freunde, die Glhwrmchen!"',15); INSERT INTO open_content VALUES(489,'"Glhwrmchen?"',15); INSERT INTO open_content VALUES(490,'"Ja. Diese kleinen Lichtlein, die ihr hier so geschftig herumschwirren seht, sind Glhwrmchen. Sie bereiten ihr groes Sommerfest vor und sind jetzt deswegen so beschftigt. Und die kleinen Lichter helfen ihnen dabei, auch noch am Abend ihren Weg zu finden."',15); INSERT INTO open_content VALUES(491,'Unsere beiden kleinen Freunde staunten nicht schlecht. Doch bald schon hatten sie sich an ihre ungewhnlichen kleinen Lichter gewhnt und lieen sich nicht zweimal bitten, noch zum Abendessen zu bleiben.',15); INSERT INTO open_content VALUES(492,'Auf dem Rckweg wurden sie von drei Glhwrmchen begleitet, die ihnen den Weg leuchteten. Zu Hause angekommen, hatten sie neue Freunde gefunden.',15); INSERT INTO open_content VALUES(493,'Hello, I''m Ronny!',17); INSERT INTO open_content VALUES(494,'Hallo, ich bin Ronny!',17); INSERT INTO open_content VALUES(495,'My father works in a hospital.',17); INSERT INTO open_content VALUES(496,'Mein Vater arbeitet in einem Krankenhaus.',17); INSERT INTO open_content VALUES(497,'He is a doctor.',17); INSERT INTO open_content VALUES(498,'Er ist Arzt.',17); INSERT INTO open_content VALUES(499,'My mother is a teacher in a language school.',17); INSERT INTO open_content VALUES(500,'Meine Mutter ist Lehrerin in einer Sprachenschule.',17); INSERT INTO open_content VALUES(501,'My favourite subjects are physical education, geography and biology.',17); INSERT INTO open_content VALUES(502,'Meine Lieblingsfcher sind Sport, Erdkunde und Biologie.',17); INSERT INTO open_content VALUES(503,'My father is from England and my mother comes from Germany.',17); INSERT INTO open_content VALUES(504,'Mein Vater ist aus England und meine Mutter kommt aus Deutschland.',17); INSERT INTO open_content VALUES(505,'That''s why I speak both languages equally good.',17); INSERT INTO open_content VALUES(506,'Darum spreche ich beide Sprachen gleich gut.',17); INSERT INTO open_content VALUES(507,'Every Saturday afternoon I play baseball in the park.',17); INSERT INTO open_content VALUES(508,'Jeden Samstag nachmittag spiele ich im Park Baseball.',17); INSERT INTO open_content VALUES(509,'I have many friends. But most of them like Rugby more.',17); INSERT INTO open_content VALUES(510,'Ich habe viele Freunde. Aber die meisten von ihnen bevorzugen Rugby.',17); INSERT INTO open_content VALUES(511,'When I grow up I want to become a professional baseball player.',17); INSERT INTO open_content VALUES(512,'Wenn ich erwachsen bin, mchte ich professioneller Baseballspieler werden.',17); INSERT INTO open_content VALUES(513,'Maybe I will become a fireman instead.',17); INSERT INTO open_content VALUES(514,'Vielleicht werde ich auch Feuerwehrmann.',17); INSERT INTO open_content VALUES(515,'I hope to visit Germany in the future.',17); INSERT INTO open_content VALUES(516,'Ich hoffe, dass ich spter einmal nach Deutschland reisen kann.',17); INSERT INTO open_content VALUES(517,'My grandparents still live there.',17); INSERT INTO open_content VALUES(518,'Meine Groeltern wohnen immer noch dort.',17); INSERT INTO open_content VALUES(519,'Some of my friends envy me growing up learning two languages simultaneously.',17); INSERT INTO open_content VALUES(520,'Manche meiner Freunde beneiden mich, dass ich zweisprachig aufwachse.',17); INSERT INTO open_content VALUES(521,'But sometimes I find it only tiring.',17); INSERT INTO open_content VALUES(522,'Aber ich finde das manchmal einfach nur anstrengend.',17); INSERT INTO open_content VALUES(523,'Everytime I do something wrong my parents shout at me in two languages.',17); INSERT INTO open_content VALUES(524,'Jedesmal, wenn ich etwas falsch mache, schimpfen mich meine Eltern in zwei Sprachen.',17); INSERT INTO open_content VALUES(525,'Addition (+)',18); INSERT INTO open_content VALUES(526,'12 + 18 = 30',18); INSERT INTO open_content VALUES(527,'34 + 14 = 48',18); INSERT INTO open_content VALUES(528,'122 + 122 = 244',18); INSERT INTO open_content VALUES(529,'x + y = y + x',18); INSERT INTO open_content VALUES(530,'(x + y) + z = x + (y + z) = x + y + z',18); INSERT INTO open_content VALUES(531,'n + 0 = n',18); INSERT INTO open_content VALUES(532,'Subtraktion (-)',18); INSERT INTO open_content VALUES(533,'12 - 11 = 1',18); INSERT INTO open_content VALUES(534,'144 - 45 = 99',18); INSERT INTO open_content VALUES(535,'4500 - 700 = 3800',18); INSERT INTO open_content VALUES(536,'1200 - 550 = 650',18); INSERT INTO open_content VALUES(537,'a - b = a + (-b)',18); INSERT INTO open_content VALUES(538,'Multiplikation (*)',18); INSERT INTO open_content VALUES(539,'2 * 4 = 8',18); INSERT INTO open_content VALUES(540,'18 * 2 = 36',18); INSERT INTO open_content VALUES(541,'1,25 * 4 = 5',18); INSERT INTO open_content VALUES(542,'6 * 6 = 36',18); INSERT INTO open_content VALUES(543,'9 * 7 = 63',18); INSERT INTO open_content VALUES(544,'x * y = y * x',18); INSERT INTO open_content VALUES(545,'Division (/)',18); INSERT INTO open_content VALUES(546,'16 / 2 = 8',18); INSERT INTO open_content VALUES(547,'64 / 8 = 8',18); INSERT INTO open_content VALUES(548,'1 / 4 = 0,25',18); INSERT INTO open_content VALUES(549,'144 / 12 = 12',18); INSERT INTO open_content VALUES(550,'1000 / 10 = 100',18); INSERT INTO open_content VALUES(551,'a / a = 1',18); INSERT INTO open_content VALUES(552,'Gemischte Aufgaben',18); INSERT INTO open_content VALUES(553,'(1 + 3) / (10 / 5) = 2',18); INSERT INTO open_content VALUES(554,'(1200 / 120) / (2 * 2) = 2,5',18); INSERT INTO open_content VALUES(555,'(36 - 18) + (34 * 10) + (42 / 2) = 379',18); INSERT INTO open_content VALUES(556,'(1200 * 1200 ) / 24 = 60000',18); INSERT INTO open_content VALUES(557,'[(240 - 50) / 10] - 3 * 6 = 1',18); INSERT INTO open_content VALUES(558,'{[(15 * 4) * (- 0,25)] + 45} / 5 = 660 / 110',18); INSERT INTO open_content VALUES(559,'{[(a + b) * (a - b)] / [(a - b) * (b - a)]} * (b + a) = x',18); INSERT INTO open_content VALUES(576,'Haben Sie auch schon mal einen Bodybuilder beobachtet, der ein Ei nach dem anderen aufschlgt, die Eidotter aber unangerhrt in den nchsten Abfalleimer wirft?',21); INSERT INTO open_content VALUES(577,'Und am Ende nur das verbliebene Eiklar zu einem "hocheffizienten" Powerdrink zusammenmischt?',21); INSERT INTO open_content VALUES(578,'Die Erklrung fr dieses Vorgehen lautet meist: "Als Kraftsportler bentige ich viel Eiwei zum Muskelaufbau, also nehme ich nur das aus den Eiern heraus, was ich brauche, und verzichte auf das fettreiche Eigelb."',21); INSERT INTO open_content VALUES(579,'Klingt einleuchtend - zumindest fr diese Art "Dit" ...',21); INSERT INTO open_content VALUES(580,'Allerdings ist dieses Vorgehen nur sehr begrenzt sinnvoll.',21); INSERT INTO open_content VALUES(581,'Zuallererst ist ein Verstndnis der verwendeten Bezeichnungen notwendig.',21); INSERT INTO open_content VALUES(582,'Die durchsichtige, gallertartige Flssigkeit, die sich in jedem Hhnerei befindet, wird nur im Volksmund "Eiwei" genannt.',21); INSERT INTO open_content VALUES(583,'Grund dafr ist wohl die weie Frbung, die beim Erhitzen entsteht.',21); INSERT INTO open_content VALUES(584,'Die eigentliche Bezeichnung lautet "Eiklar".',21); INSERT INTO open_content VALUES(585,'Und das Eiklar hat einen tatschlichen Eiweigehalt von ca. 11 %.',21); INSERT INTO open_content VALUES(586,'Der Proteingehalt im "Eigelb", oder genauer, Eidotter, ist sogar hher als im Eiklar und betrgt ca. 16 %.',21); INSERT INTO open_content VALUES(587,'Selbstverstndlich beinhaltet der Dotter auch Cholesterin und sollte daher nur in Maen eingenommen werden.',21); INSERT INTO open_content VALUES(588,'Somit wird klar: Das Hhnerei ist als Eiweilieferant deutlich berbewertet.',21); INSERT INTO open_content VALUES(589,'Wesentlich mehr tierisches Protein findet man z.B. in einem einfachen Harzer Kse.',21); INSERT INTO open_content VALUES(590,'Dieser verfgt ber einen Eiweigehalt von 30 %, whrend der Fettanteil gerade mal bei 0,7 % liegt.',21); INSERT INTO open_content VALUES(591,'Und wer lieber pflanzliches Eiwei zu sich nehmen mchte, dem seien Produkte aus der Sojabohne empfohlen.',21); INSERT INTO open_content VALUES(592,'Bis jetzt gab es eine klare Trennung der Olympischen Spiele fr krperlich unbelastete Sportler von den speziell fr Behinderte ausgerichteten Paralympics.',22); INSERT INTO open_content VALUES(593,'Letztere sollten vor allem den behinderten Sporttreibenden die Chance auf Erfolge geben, die sie im direkten Wettkampf mit den Teilnehmern der "normalen" Olympiade nicht erreichen knnten.',22); INSERT INTO open_content VALUES(594,'Zum ersten Mal seit der Austragung von Olympischen Spielen fr krperlich Behinderte 1948 hat sich die Situation jetzt aber um 180 gewendet.',22); INSERT INTO open_content VALUES(595,'Wegen eines Wettbewerbvorteils wurde dem sdafrikanischen Sportler Oscar Pistorius die Teilnahme an den Olympischen Spielen 2008 in Peking verweigert.',22); INSERT INTO open_content VALUES(596,'Der 21-jhrige, der ohne Wadenbeine zur Welt kam und dem im Alter von elf Monaten beide Unterschenkel abgenommen wurden, ist seit dem Kindesalter sportbegeistert.',22); INSERT INTO open_content VALUES(597,'In den letzten Jahren entwickelte er eine besondere Vorliebe fr Laufsportarten.',22); INSERT INTO open_content VALUES(598,'Insbesondere der 100-, 200- sowie 400-Meter-Lauf haben es ihm angetan.',22); INSERT INTO open_content VALUES(599,'Er konnte zahlreiche Wettbewerbe mit behinderten Mitstreitern fr sich entscheiden und die Paralympics 2004 in den entsprechenden Wettbewerben dominieren.',22); INSERT INTO open_content VALUES(600,'Es zeigte sich immer deutlicher, dass seine Leistung ein Niveau erreicht hatte, das dem Standard der konventionellen Olympiade entspricht.',22); INSERT INTO open_content VALUES(601,'Besonders in der Disziplin 400-Meter-Lauf braucht Pistorius sich nicht hinter den Zeiten nicht-behinderter Sprinter zu verstecken.',22); INSERT INTO open_content VALUES(602,'Seine Bewerbung fr die Olympiade wurde dennoch abgelehnt.',22); INSERT INTO open_content VALUES(603,'Als Begrndung wurden Untersuchungen des Biomechanik-Professors Gert-Peter Brggemann von der Sporthochschule Kln herangezogen.',22); INSERT INTO open_content VALUES(604,'Dabei wurde ein Wettbewerbsvorteil festgestellt, den der Sdafrikaner aufgrund der eigens fr ihn angefertigten Karbonprothesen gegenber Sportlern mit zwei natrlichen Beinen habe.',22); INSERT INTO open_content VALUES(605,'Vielen Flugreisenden wird es vielleicht bereits aufgefallen sein: zu den in Flugzeugen sehr hufig bestellten Getrnken zhlt definitiv der Tomatensaft.',23); INSERT INTO open_content VALUES(606,'Dies fllt umso mehr auf, wenn man sich folgende Zahlen vors Auge fhrt:',23); INSERT INTO open_content VALUES(607,'- Jhrlicher Tomatensaftkonsum in Deutschland (gesamt): ca. 40 000 000 Liter',23); INSERT INTO open_content VALUES(608,'- Jhrlicher Tomatensaftkonsum in Deutschland (nur Flugzeuge): ca. 1 200 000 Liter',23); INSERT INTO open_content VALUES(609,'Der in der Luft getrunkene Saft des roten Nachtschattengewchses betrgt somit etwa 3 % des auf der Erde konsumierten.',23); INSERT INTO open_content VALUES(610,'Im Vergleich dazu: bei Orangensaft betrgt der Prozentsatz nur ungefhr 0,4 %.',23); INSERT INTO open_content VALUES(611,'Woher also diese Vorliebe der fliegenden Bevlkerung fr gerade diesen Saft?',23); INSERT INTO open_content VALUES(612,'Es gibt bis jetzt keine eindeutige Erklrung fr dieses Phnomen.',23); INSERT INTO open_content VALUES(613,'Allerdings uerten einige Wissenschaftler die Vermutung, dass der in groen Hhen vermehrte Anteil oxidativer Stoffe ein Auslser fr den (unbewussten) Drang der Passagiere nach dem gesunden Fruchtdrink sein knnte.',23); INSERT INTO open_content VALUES(614,'Der in der Tomate enthaltene rote Farbstoff Lycopin, ein Carotinoid, wirkt nmlich nachweislich antioxidativ.',23); INSERT INTO open_content VALUES(615,'Es gibt sogar Studien, die belegen, dass regelmiger Tomatensaftkonsum das Risiko mancher Krebserkrankungen senken kann.',23); INSERT INTO open_content VALUES(616,'Zudem sind die Nhrwerte der Tomate hervorragend - in fast allen Bereichen ist sie dem guten alten Apfel berlegen.',23); INSERT INTO open_content VALUES(617,'So beinhalten 100 Gramm Tomate wesentlich mehr Kalium, Calcium, Vitamin C und Magnesium als dieselbe Menge Apfel.',23); INSERT INTO open_content VALUES(618,'Auch wenn sich also der hhenbedingte Durst nach Tomatensaft nicht eindeutig erklren lsst, steht dennoch fest: Ein Glas Tomatensaft am Tag, ob nun in der Luft oder auf dem Boden, gibt unserem Immunsystem einen Vitaminschub wie es nur wenige andere Getrnke vermgen.',23); INSERT INTO open_content VALUES(619,'Der englische Begriff "bionics" (Bionik) wurde im Jahr 1960 auf einer US-amerikanischen Luftfahrtkonferenz eingefhrt.',24); INSERT INTO open_content VALUES(620,'Der Grundgedanke, der hinter diesem Wort steht, ist aber schon wesentlich lter.',24); INSERT INTO open_content VALUES(621,'So ist das Streben des Menschen danach, die Errungenschaften der Natur zu seinem Vorteil nutzen zu knnen, bereits in der griechischen Sage von Ikarus und Ddalus dokumentiert.',24); INSERT INTO open_content VALUES(622,'Darin wird der Versuch beschrieben, durch das Nachahmen der Flugfhigkeit des Vogels einer Zukunft in Gefangenschaft zu entkommen.',24); INSERT INTO open_content VALUES(623,'Freilich ist der Einsatz von mit Wachs verklebten Flgeln aus wissenschaftlicher Sicht nicht erfolgversprechend.',24); INSERT INTO open_content VALUES(624,'Dennoch beweist der Mythos, dass eine Beobachtung und Nachahmung der Natur bereits lange Zeit vor Christi Geburt zum Repertoire des Homo Sapiens gehrte.',24); INSERT INTO open_content VALUES(625,'Im 19. Jahrhundert waren es ebenfalls Beobachtungen des Vogelfluges, die es dem Menschen ermglichten, endlich auch den Luftraum fr sich nutzbar zu machen.',24); INSERT INTO open_content VALUES(626,'Otto Lilienthal und die Gebrder Wright waren es, die das Flugverhalten von Vgeln, ihre Nutzung der Thermik sowie die Konstruktion von Vogelschwingen studierten und die daraus gewonnenen Erkenntnisse erstmals fr erfolgreiche Flugversuche nutzen konnten.',24); INSERT INTO open_content VALUES(627,'Doch die Natur bietet uns noch viel mehr Anstze, die wir in unseren Erfindungen sinnvoll einsetzen knnen.',24); INSERT INTO open_content VALUES(628,'So haben wir den Klettverschluss vor allem der namensgebenden Klette zu verdanken.',24); INSERT INTO open_content VALUES(629,'Auch Konstruktionen wie die Oper in Sydney und das Mnchener Olympiastadion sowie Erfindungen wie die Solarzelle oder das selbstreinigende Fenster finden ihre Vorbilder in der Natur.',24); INSERT INTO open_content VALUES(630,'Und wenn die Natur mal keine Idee fr das Erfinden noch nicht da gewesener Dinge liefert, so kann sie zumindest oft helfen, bereits Existierendes effizienter zu gestalten.',24); INSERT INTO open_content VALUES(631,'Nicht zuletzt den Haifischen haben zahlreiche Athleten, die an den Schwimmwettbewerben der Olympischen Spiele 2000 in Australien teilnahmen, ihre Rekordzeiten zu verdanken. Damals wurden erstmalig Schwimmanzge eingesetzt, die nach dem Vorbild der Haut der Raubfische entwickelt worden waren.',24); INSERT INTO open_content VALUES(632,'Auch Spinnenseide, die als besonders widerstandsfhig gilt, knnte schon bald zur Herstellung von besonders leichten kugelsicheren Westen oder Fallschirmen eingesetzt werden.',24); INSERT INTO open_content VALUES(633,'Es gibt unzhlige weitere Einsatzbereiche, wo mit Hilfe der Bionik sehr groe Fortschritte erzielt werden knnen, und so ist mit Spannung abzuwarten, welche weiteren pflanzlichen oder tierischen Vorbilder schon bald im Bro, auf dem Sportplatz oder im Haushalt fr neue Innovationen Pate stehen werden.',24); INSERT INTO open_content VALUES(660,'Die Inselgruppe Hawaii ist heute der 50. Bundesstaat der Vereinigten Staaten von Amerika.',27); INSERT INTO open_content VALUES(661,'Dass der Staat - heute vor allem wegen der gelassenen Lebensweise der Einwohner und der endlosen, zum Wellenreiten und Sonnenbaden einladenden Strnde ein beliebtes Urlaubsziel - bis ins Jahr 1891 ein unabhngiges Knigreich war, ist jedoch nicht jedem Mitteleuroper bekannt.',27); INSERT INTO open_content VALUES(662,'Auch dass das Land den Erhalt seiner traditionellen Kultur zu einem groen Teil dem charismatischen Knig David Kalakaua verdankt, wissen nur die wenigsten.',27); INSERT INTO open_content VALUES(663,'Knig Kalakaua (1836-1891), auch "The Merrie Monarch" (der frhliche Monarch) genannt, war der erste Herrscher Hawaiis, der eine Weltreise unternahm.',27); INSERT INTO open_content VALUES(664,'Diese fhrte ihn ber Asien und Afrika nach Europa und schlielich nach Nordamerika.',27); INSERT INTO open_content VALUES(665,'Motiviert von den Eindrcken, vor allem die Wiener Lebensweise mit dem ausgelassenen Treiben in den Straen und Wirtshusern hatte es ihm angetan, fhrte er nach seiner Heimkehr den traditionellen Hula-Tanz wieder ein.',27); INSERT INTO open_content VALUES(666,'Dieser war zuvor von jesuitischen Missionaren wegen seiner Freizgigkeit verboten worden.',27); INSERT INTO open_content VALUES(667,'Ebenso die Verbreitung des heute sehr beliebten Surfsports sowie der traditionellen Kampfkunst Lua lsst sich auf das Engagement des Knigs zurckfhren.',27); INSERT INTO open_content VALUES(668,'Noch heute erinnert die Nationalhymne Hawai''i pono''i an den lebenslustigen Monarchen und seine Verbundenheit mit der europischen Kultur.',27); INSERT INTO open_content VALUES(669,'Die Worte stammen von Kalakaua selbst, die Melodie ist eine Komposition des deutschen Militrmusikers und kniglichen Hofkapellmeisters Heinrich Berger.',27); INSERT INTO open_content VALUES(670,'Das Stck ist, ebenso wie der Wiener Walzer, im Dreivierteltakt gehalten.',27); INSERT INTO open_content VALUES(671,'Nach dem Tod Kalkauas im Jahr 1891 dauerte es nicht lange, bis amerikanische Marines in Hawaii einmarschierten und das ehemalige unabhngige Knigreich annektierten.',27); INSERT INTO open_content VALUES(672,'Zumindest als Kind wird wohl jeder von uns der einen oder anderen Fabel begegnet sein. Sei es in der Schule beim Lesen von Jean de La Fontaine oder Hans Sachs oder whrend eines Besuchs bei der Gromutter, die dann die lehrreichen kurzen Erzhlungen aus der eigenen Erinnerung vortrug.',28); INSERT INTO open_content VALUES(673,'In den Geschichten traf man auf Fchse, Wlfe, Eulen oder andere Tiere und Fabelwesen, die menschliche Wesenszge besaen und einem die jeweiligen Schwchen und Fehlbarkeiten deutlich vor Augen fhrten.',28); INSERT INTO open_content VALUES(674,'Am Ende stand fr gewhnlich eine Moral oder Pointe, welche den Leser belehren und erziehen sollte.',28); INSERT INTO open_content VALUES(675,'Diese beliebte Erzhlform gibt es schon sehr lange. So gab es in Mesopotamien hnliche Sagen mit Gleichnischarakter bereits im dritten Jahrtausend vor Christi Geburt, in Indien wurde das Panchatantra ca. 300 v. Chr. als Hofdichtung entwickelt.',28); INSERT INTO open_content VALUES(676,'In unseren Breitengraden galt die Form der Fabel wegen ihrer mndlichen berlieferungsart lange Zeit als volkstmliche Kunstform.',28); INSERT INTO open_content VALUES(677,'Als der Begrnder der europischen Fabel gilt sop, ein griechischer Sklave, der ca. 600 v. Chr. gelebt haben soll.',28); INSERT INTO open_content VALUES(678,'Alle ber ihn vorhandenen Berichte haben mehr sagenhaften oder mythischen als historischen Charakter, so dass sich ber die tatschliche Person sop heutzutage nur sehr wenig sagen lsst. Viele der ihm zugeordneten Eigenschaften und Erlebnisse wurden nachtrglich von anderen Autoren hinzugefgt, so zum Beispiel eine extreme Hsslichkeit oder eine Lebensweise, die sich mit den Geschichten rund um Till Eulenspiegel vergleichen lsst.',28); INSERT INTO open_content VALUES(679,'Dennoch: Nicht hoch genug einzustufen ist der Einfluss, den sop auf das Werk vieler anderer Schriftsteller hatte. Selbst Lessing bezieht sich bei seinen aufklrerischen Fabeln auf sops Werk.',28); INSERT INTO open_content VALUES(680,'Wie zeitlos die aufgegriffenen Themen sind, lsst sich am besten erkennen, wenn man selbst einen Blick auf eine solche Fabel wirft:',28); INSERT INTO open_content VALUES(681,'sop: Das Lamm und der Wolf',28); INSERT INTO open_content VALUES(682,'Ein Lmmchen lschte an einem Bache seinen Durst. Fern von ihm, aber nher der Quelle, tat ein Wolf das Gleiche. Kaum erblickte er das Lmmchen, so schrie er:',28); INSERT INTO open_content VALUES(683,'"Warum trbst du mir das Wasser, das ich trinken will?"',28); INSERT INTO open_content VALUES(684,'"Wie wre das mglich", erwiderte schchtern das Lmmchen, "ich stehe hier unten und du so weit oben; das Wasser fliet ja von dir zu mir; glaube mir, es kam mir nie in den Sinn, dir etwas Bses zu tun!"',28); INSERT INTO open_content VALUES(685,'"Ei, sieh doch! Du machst es gerade wie dein Vater vor sechs Monaten; ich erinnere mich noch sehr wohl, dass auch du dabei warst, aber glcklich entkamst, als ich ihm fr sein Schmhen das Fell abzog!"',28); INSERT INTO open_content VALUES(686,'"Ach, Herr!" flehte das zitternde Lmmchen, "ich bin ja erst vier Wochen alt und kannte meinen Vater gar nicht, so lange ist er schon tot; wie soll ich denn fr ihn ben."',28); INSERT INTO open_content VALUES(687,'"Du Unverschmter!" so endigt der Wolf mit erheuchelter Wut, indem er die Zhne fletschte. "Tot oder nicht tot, wei ich doch, dass euer ganzes Geschlecht mich hasset, und dafr muss ich mich rchen."',28); INSERT INTO open_content VALUES(688,'Ohne weitere Umstnde zu machen, zerriss er das Lmmchen und verschlang es.',28); INSERT INTO open_content VALUES(689,'Das Gewissen regt sich selbst bei dem grten Bsewichte; er sucht doch nach Vorwand, um dasselbe damit bei Begehung seiner Schlechtigkeiten zu beschwichtigen.',28); INSERT INTO open_content VALUES(690,'Whrend in den meisten westlichen Lndern das neue Jahr traditionsgem am 1. Januar beginnt, ist das in China, Hongkong, Macao, Taiwan und vielen anderen Lndern Asiens etwas anders.',29); INSERT INTO open_content VALUES(691,'Dort wird inzwischen zwar auch das "westliche Neujahr" als willkommene Gelegenheit zum Feiern begrt, allerdings ist das wesentlich wichtigere Fest das Chinesische Neue Jahr oder auch Frhlingsfest.',29); INSERT INTO open_content VALUES(692,'Das Datum fllt von Jahr zu Jahr unterschiedlich aus, da das Neue Jahr an den Mondkalender gebunden ist.',29); INSERT INTO open_content VALUES(693,'Die erste Neumondnacht zwischen dem 21. Januar und dem 20. Februar bestimmt den Termin fr das groe Fest.',29); INSERT INTO open_content VALUES(694,'Fr viele Asiaten ist es sehr wichtig, das Neujahrsfest mit der Familie zu verbringen.',29); INSERT INTO open_content VALUES(695,'Deswegen sollte jeder Tourist, der in dieser Zeit einen Ausflug in den Fernen Osten plant, auf kilometerlange Staus auf den Straen sowie gewaltige Menschenmassen an Flughfen und Bahnhfen gefasst sein.',29); INSERT INTO open_content VALUES(696,'Flugtickets sollten am besten lange Zeit zuvor gekauft werden, da es in der Saison um das Frhlingsfest sehr schwierig werden kann, berhaupt noch eine Reisemglichkeit zu bekommen.',29); INSERT INTO open_content VALUES(697,'Da es sich beim Neujahr um ein Fest handelt, das fr gewhnlich im Kreis der Familie gefeiert wird, kann man sich als Europer glcklich schtzen, wenn man an diesem besonderen Abend von einer chinesischen Familie eingeladen wird.',29); INSERT INTO open_content VALUES(698,'Man kann dann einige interessante Bruche beobachten.',29); INSERT INTO open_content VALUES(699,'So wird zum Beispiel die Wohnung mit vielen speziellen Symbolen ausgehngt, die in der Regel die Farbe Rot haben und Glck, Wohlstand oder Gesundheit symbolisieren - alles Dinge, die man sich fr das kommende Jahr wnscht.',29); INSERT INTO open_content VALUES(700,'Auch werden unter den Familienmitgliedern Geschenke ausgetauscht - allerdings anders als bei uns: statt Sachgeschenken gibt es sogenannte "Hong Bao", das sind rote Umschlge, welche Geld beinhalten.',29); INSERT INTO open_content VALUES(701,'Selbstverstndlich darf an Neujahr auch ein ordentliches Feuerwerk nicht fehlen, sind doch die Chinesen als die Erfinder dieser Tradition bekannt.',29); INSERT INTO open_content VALUES(702,'Je mehr Lrm die Kanonenschlge und Knallfrsche verursachen, desto besser - auf diese Weise sollen nmlich bse Geister in Schach gehalten werden.',29); INSERT INTO open_content VALUES(703,'Eine zentrale Rolle spielt natrlich auch das Essen, wie so oft in Asien. Unzhlige traditionelle Speisen werden serviert, in der Regel weitaus mehr, als die Familie am Ende berhaupt essen kann.',29); INSERT INTO open_content VALUES(704,'brigens steht jedes Jahr im Zeichen eines von zwlf Tieren. Das Jahr 2008 ist das Jahr der Ratte, 2009 gefolgt vom Jahr des Bffels.',29); INSERT INTO open_content VALUES(705,'Alle zwlf Jahre gibt es also ein Jahr, das dem eigenen chinesischen Sternzeichen gewidmet ist, welches wiederum durch das Geburtsjahr (nicht durch den Monat, wie etwa bei den westlichen Sternzeichen) seine Bestimmung findet.',29); INSERT INTO open_content VALUES(706,'Washington D.C., 8th June 2007',30); INSERT INTO open_content VALUES(707,'Thomas Dixon',30); INSERT INTO open_content VALUES(708,'Goldberg & Co.',30); INSERT INTO open_content VALUES(709,'Level 11 / 12 Liberation Street',30); INSERT INTO open_content VALUES(710,'Canberra SA 4000',30); INSERT INTO open_content VALUES(711,'Dear Mr. Dixon,',30); INSERT INTO open_content VALUES(712,'Re: software engineer position',30); INSERT INTO open_content VALUES(713,'I am writing in response to the software engineer position as seen in The Canberra Daily on Friday, April 5, 2006.',30); INSERT INTO open_content VALUES(714,'I have a bachelor degree in computer engineering with 15 years experience at Canberra''s leading software company SoftInc, Ltd. I also have commercial experience on a contract basis with network administration, IT security and storage management.',30); INSERT INTO open_content VALUES(715,'My special abilities lie in the area of C++ programming. I am very passionate about all aspects of software design and believe that I have a unique blend of skills and qualities which make me ideal for this position.',30); INSERT INTO open_content VALUES(716,'Please find attached a copy of my Curriculum Vitae for your reference. If you require any further information I can be contacted directly on 0313 433 560, otherwise I look forward to your reply in due course.',30); INSERT INTO open_content VALUES(717,'Yours Sincerely,',30); INSERT INTO open_content VALUES(718,'Jonathan Clarkson',30); INSERT INTO open_content VALUES(719,'B.Software Engineering',30); INSERT INTO open_content VALUES(720,'A: "Excuse me, I am looking for the Guggenheim Art Museum. How can I get there?"',31); INSERT INTO open_content VALUES(721,'B: "Let me think about it... Do you know the way to the Central Park Subway Station?"',31); INSERT INTO open_content VALUES(722,'A: "Sorry, I am not from New York. I come from Boston and it''s my first time here."',31); INSERT INTO open_content VALUES(762,'B: "I need to go to my office now, but if you like you can come with me as the station is on my way."',31); INSERT INTO open_content VALUES(763,'A: "That would be great. Thanks a lot!"',31); INSERT INTO open_content VALUES(764,'B: "You''re welcome."',31); INSERT INTO open_content VALUES(765,'A: "So how long have you been living here?"',31); INSERT INTO open_content VALUES(766,'B: "It''s been quite a while now. I am from England originally, but my company sent me here to build up their overseas headquarter. Although this work is done already, I decided to stay longer."',31); INSERT INTO open_content VALUES(767,'A: "I could imagine to live here, too. Even though it''s been only a few days since I arrived, I already really learned to love this city."',31); INSERT INTO open_content VALUES(768,'B: "Yes, it''s nice, especially when you are interested in the arts. Look, we are almost there. Do you see this park over there? That''s the Central Park. The Guggenheim Museum is between here and the East River area."',31); INSERT INTO open_content VALUES(769,'A: "Thanks a lot for your help."',31); INSERT INTO open_content VALUES(770,'B: "I''m glad I could help you. From here you should get there easily. However, if you feel tired already you can take a cab. There''s a taxi stand around the corner. Have a nice day!"',31); INSERT INTO open_content VALUES(771,'A: "Thanks! Good bye!"',31); INSERT INTO open_content VALUES(772,'Teacher: This is Mr. Braun. He is new to our English course. Let''s say hello to him.',32); INSERT INTO open_content VALUES(773,'Class: Hello, Mr. Brown!',32); INSERT INTO open_content VALUES(774,'Mr. Braun: Thank you. I''m glad to join your class.',32); INSERT INTO open_content VALUES(775,'Teacher: Mr. Brown, could you please introduce yourself briefly? Where are you from and why do you want to improve your English skills? Of course the other students can feel free to ask questions as well.',32); INSERT INTO open_content VALUES(776,'Mr. Braun: Hello everybody, my name is Andreas Braun. I am from Germany and good English skills are fundamental in my profession.',32); INSERT INTO open_content VALUES(777,'Mrs. Rodriguez: Hello, Mr. Braun. My name is Maria Rodriguez. I''m from Spain. What profession are you working in?',32); INSERT INTO open_content VALUES(778,'Mr. Braun: I''m working as a construction engineer for a major European construction firm. As we have a lot of international business partners, English is usually the language of choice.',32); INSERT INTO open_content VALUES(779,'Mr. Harada: I''m from Kyoto, Japan and my name is Shinji Harada. Did you come to London for business purposes?',32); INSERT INTO open_content VALUES(780,'Mr. Braun: No, this time I''m here for private reasons only. My daughter has been working in London for more than three years now and I decided to take a few weeks off and pay her a visit.',32); INSERT INTO open_content VALUES(781,'Ms. Busoni: I''m Giana Busoni from Italy. Your English sounds really good. How long have you been learning?',32); INSERT INTO open_content VALUES(782,'Mr. Braun: Like most Germans I started in grammar school already. Later, during my university study, I spent two semesters in Canada as an exchange student.',32); INSERT INTO open_content VALUES(783,'And after graduating my company let me work abroad frequently - all together I spent around two more years working in Canada and the US.',32); INSERT INTO open_content VALUES(784,'Teacher: If there are no more questions, let us just continue with the regular class material. Please open your exercise books.',32); INSERT INTO open_content VALUES(859,'Als Timo aus der Schule nach Hause kam, hatte er wie immer viele Fragen an seinen Vater.',12); INSERT INTO open_content VALUES(860,'Da dieser sehr belesen war und auch sonst von vielen Dingen Ahnung hatte, war er ideal, um Tag fr Tag den Wissensdurst des kleinen Jungen zu stillen.',12); INSERT INTO open_content VALUES(861,'Diesmal fragte Timo erst nach einigen Dingen aus der Biologie, die ihm nicht ganz einleuchten wollten.',12); INSERT INTO open_content VALUES(862,'So wollte er zum Beispiel wissen, ob nun der Religions- oder der Biologielehrer im Recht waren, was die Entstehung des Menschen angeht.',12); INSERT INTO open_content VALUES(863,'Doch schlielich kam es zu folgendem Dialog:',12); INSERT INTO open_content VALUES(864,'"Papa, ist denn ein Vater immer klger als sein Sohn?"',12); INSERT INTO open_content VALUES(865,'"Ja, selbstverstndlich. Schlielich ist der Vater ja auch immer lter und verfgt ber entsprechend mehr Erfahrung", erwiderte der alte Herr.',12); INSERT INTO open_content VALUES(866,'"Also wei der Vater immer mehr und kann vom Sohn nicht berflgelt werden?", bohrte Timo nach.',12); INSERT INTO open_content VALUES(867,'"Das liegt in der Natur der Sache."',12); INSERT INTO open_content VALUES(868,'"Nun", sagte der kleine Timo nachdenklich, "ich bin genau der selben Ansicht wie du.',12); INSERT INTO open_content VALUES(869,'Nur eines kann ich dabei einfach nicht verstehen.',12); INSERT INTO open_content VALUES(870,'Wir haben heute etwas ber den Erfinder Edison gelernt.',12); INSERT INTO open_content VALUES(871,'Und bis jetzt frage ich mich, warum es Thomas Edison war, der die Glhlampe und all die anderen Dinge erfunden hat, und nicht sein Vater."',12); INSERT INTO open_content VALUES(872,'Dies war das erste Mal, dass Timos Vater keine Antwort einfiel.',12); INSERT INTO open_content VALUES(873,'Ich betete:',13); INSERT INTO open_content VALUES(874,'Du hast sie, Herr, in meine Hand gegeben,',13); INSERT INTO open_content VALUES(875,'Dies treue Herz an meine Brust gelegt,',13); INSERT INTO open_content VALUES(876,'Du hast ihr friedlich, kindlich heiteres Leben',13); INSERT INTO open_content VALUES(877,'Durch meines Lebens trben Ernst bewegt.',13); INSERT INTO open_content VALUES(878,'Drum wolle, Herr, so viel des Glckes geben,',13); INSERT INTO open_content VALUES(879,'Dass nicht zu sehr die Sorge Raum gewinnt,',13); INSERT INTO open_content VALUES(880,'Dass der Geliebten anspruchsloses Leben',13); INSERT INTO open_content VALUES(881,'An meinem Herzen friedlich still verrinnt.',13); INSERT INTO open_content VALUES(882,'Der Herr sprach:',13); INSERT INTO open_content VALUES(883,'Ich wandle meiner Weisheit ew''ge Wege,',13); INSERT INTO open_content VALUES(884,'Von mir beschrieben ist jedwede Bahn;',13); INSERT INTO open_content VALUES(885,'Wie du gebeten, kann''s erfllt nicht werden,',13); INSERT INTO open_content VALUES(886,'Doch wie''s erfllt wird, ist es wohlgetan!',13); INSERT INTO open_content VALUES(887,'Du sollst verwehen wie die Spreu im Winde,',13); INSERT INTO open_content VALUES(888,'Und sie soll weinen, lang in bitterm Schmerz.',13); INSERT INTO open_content VALUES(889,'Doch auch verrinnen sollen diese Trnen,',13); INSERT INTO open_content VALUES(890,'In mild Vergessen tauchen sie ihr Herz.',13); INSERT INTO open_content VALUES(891,'Und wenn sie dann das matte Haupt erhebet,',13); INSERT INTO open_content VALUES(892,'Soll sie erblicken sanften Sonnenschein;',13); INSERT INTO open_content VALUES(893,'Zwei helle Augen will ich ihr entznden',13); INSERT INTO open_content VALUES(894,'Und neuer Liebe herzlichen Verein.',13); INSERT INTO open_content VALUES(895,'Wie du gebeten, kann''s erfllt nicht werden,',13); INSERT INTO open_content VALUES(896,'Doch wie''s erfllt wird, ist es wohlgetan.',13); INSERT INTO open_content VALUES(897,'Drum sorge nicht! Wenn lange du verschollen,',13); INSERT INTO open_content VALUES(898,'Bricht ihres Glckes spter Morgen an.',13); INSERT INTO open_content VALUES(949,'Die Europische Union besteht aus 27 Mitgliedsstaaten.',16); INSERT INTO open_content VALUES(950,'Eine Jahrtausend alte Geschichte verbindet uns mit unseren Nachbarn auf der Landkarte.',16); INSERT INTO open_content VALUES(951,'Normalerweise kennt man den Namen seiner Nachbarn, alles andere gilt als unhflich.',16); INSERT INTO open_content VALUES(952,'Aber kennen wir auch alle Namen unserer Nachbarlnder? Oder gar die ihrer Hauptstdte?',16); INSERT INTO open_content VALUES(953,'Wahrscheinlich knnten die wenigsten von uns diese Frage aus dem Stegreif mit "Ja!" beantworten.',16); INSERT INTO open_content VALUES(954,'Deswegen kann jeder, der sich bei dem einen oder anderen Land nicht ganz sicher ist, hier sein Gedchtnis etwas auffrischen.',16); INSERT INTO open_content VALUES(955,'Fangen wir also direkt vor unserer Haustr an.',16); INSERT INTO open_content VALUES(956,'Dass die Hauptstadt Deutschlands Berlin ist, sollte jedem bekannt sein.',16); INSERT INTO open_content VALUES(957,'Im Osten grenzen die Lnder Polen und Tschechien mit ihren Hauptstdten Warschau und Prag an.',16); INSERT INTO open_content VALUES(958,'Nordstlich von Polen befinden sich die Baltischen Staaten Litauen, Lettland und Estland. Ihre Hauptstdte sind Wilna (Vilnius), Riga und Tallinn.',16); INSERT INTO open_content VALUES(959,'Mchte man von Estland weiter in Richtung Norden, so sollte man ein Schiff nehmen. Nachdem man dann den stlichen Seitenarm der Ostsee berquert hat, kommt man schlielich nach Finnland und kann seiner Hauptstadt Helsinki einen Besuch abstatten.',16); INSERT INTO open_content VALUES(960,'Finnland teilt sich an seinem nrdlichen Ende eine Grenze mit Schweden, dessen Hauptstadt Stockholm ist.',16); INSERT INTO open_content VALUES(961,'Bewegt man sich von Schweden wiederum nach Sden, so kommt man, nach einer nicht allzu langen berquerung der Ostsee, wieder in Deutschland an.',16); INSERT INTO open_content VALUES(962,'Auf dem Weg kann man allerdings einen kurzen Stopp in Dnemark und seiner Hauptstadt Kopenhagen einlegen.',16); INSERT INTO open_content VALUES(963,'Starten wir nun erneut von Polen aus, nur diesmal in die entgegengesetzte Richtung, nmlich nach Sden.',16); INSERT INTO open_content VALUES(964,'Ohne die EU zu verlassen kann man dabei durch fnf weitere Lnder fahren, die eines an das andere angrenzen.',16); INSERT INTO open_content VALUES(965,'Diese sind: die Slowakei (Bratislava), Ungarn (Budapest), Rumnien (Bukarest), Bulgarien (Sofia) und schlielich Griechenland (Athen).',16); INSERT INTO open_content VALUES(966,'Ist man schlielich am Mittelmeer angekommen, so befindet man sich schon nicht mehr weit von Zypern, dem sdstlichsten Land der Union. Die Hauptstadt Zyperns ist Nikosia.',16); INSERT INTO open_content VALUES(967,'Doch gehen wir nun zurck zum Ausgangspunkt Deutschland.',16); INSERT INTO open_content VALUES(968,'Mchten wir von Deutschland aus Italiens Hauptstadt Rom einen Besuch abstatten, so empfiehlt es sich, den Weg durch sterreich zu nehmen (die Hauptstadt lautet brigens Wien), wobei man jedoch den sdlichen Grenznachbarn sterreichs, Slowenien (Ljubljana), aus Zeitgrnden umfahren kann.',16); INSERT INTO open_content VALUES(969,'Sdlich von Italiens Sdspitze liegt eine Insel, die der mit Abstand kleinste Mitgliedsstaat der Europischen Union ist: Malta mit ihrer Hauptstadt La Valletta.',16); INSERT INTO open_content VALUES(970,'Im Westen hat Deutschland gleich vier direkte Nachbarn: die drei Beneluxstaaten Belgien (Brssel), Luxemburg (Luxemburg ist ein Stadtstaat und somit Land und Hauptstadt in einem) und die Niederlande (Amsterdam - der Regierungssitz ist allerdings in Den Haag) sowie Frankreich mit seiner Hauptstadt Paris.',16); INSERT INTO open_content VALUES(971,'Im Sdwesten teilt sich Frankreich eine Grenze mit Spanien, dessen Hauptstadt Madrid heit.',16); INSERT INTO open_content VALUES(972,'Spanien wiederum grenzt im Westen an Portugal (Lissabon) an.',16); INSERT INTO open_content VALUES(973,'Kommen wir nun zu den letzten beiden Staaten auf unserer Reise:',16); INSERT INTO open_content VALUES(974,'In nur 35 Minuten kann man durch den Eurotunnel, der unter dem rmelkanal verluft, von Frankreich aus das Vereinigte Knigreich erreichen, von dessen Hauptstadt London wohl schon jeder Europer gehrt hat.',16); INSERT INTO open_content VALUES(975,'Von dort aus ist es nun nicht mehr weit zu unserer letzten Station, Irland, und seiner Hauptstadt Dublin.',16); INSERT INTO open_content VALUES(976,'Hoffentlich konnte euch unsere kleine Reise helfen, die Lnder- und Stdtenamen unserer europischen Nachbarn aufzufrischen. Um sie euch aber noch besser zu merken, knnt ihr einfach einen Atlas zur Hand nehmen und die einzelnen Stationen noch einmal durchgehen.',16); INSERT INTO open_content VALUES(977,'Wie gesagt: Es lohnt sich, die Namen seiner Nachbarn zu kennen - und schon bald werden neue dazustoen. Gute Reise!',16); INSERT INTO open_content VALUES(1045,'THE KANGAROO.',19); INSERT INTO open_content VALUES(1046,'"Well," said little Herbert Joyce, as he looked over the books of drawings which his cousin had just brought home from Australia, "I never saw anything so extraordinary before in all my life; why here is an animal with three heads, and two of them are very low down, and much smaller than the others."',19); INSERT INTO open_content VALUES(1047,'"What do you mean, Herbert?" asked his cousin, who just then came into the room.',19); INSERT INTO open_content VALUES(1048,'"There are no three-headed animals - let me see the picture. Oh! No wonder you were puzzled; it does look like a queer creature.',19); INSERT INTO open_content VALUES(1049,'That is a kangaroo, and the small heads belong to her children, whom she carries about in a bag formed by a hole in her skin, until they are old enough to walk; and the little things seem very happy there; and sometimes, as their mother moves along over the grass, you may see them nibbling it."',19); INSERT INTO open_content VALUES(1050,'LITTLE OWLS.',19); INSERT INTO open_content VALUES(1051,'Who has not at one time or other of his life read fairy tales and sympathized with stories of enchanted princes and princesses?',19); INSERT INTO open_content VALUES(1052,'I once thought of this when a country boy offered me a nest with four of the young of the Little Owl.',19); INSERT INTO open_content VALUES(1053,'I put them into a large cage, where they could stare at each other and at my pigeons to their hearts'' content.',19); INSERT INTO open_content VALUES(1054,'Let me say that this little owl is a very useful bird, for it keeps mice, bats, beetles, and other creatures in check, which might otherwise multiply too fast.',19); INSERT INTO open_content VALUES(1055,'On a spring or summer evening you may hear its plaintive hoot among the apple-blossoms of an orchard, or the sheaves of a cornfield.',19); INSERT INTO open_content VALUES(1056,'Curiously enough, this simple sound earned the little bird the name of being the harbinger of death, and peasants believed that whenever its cry was heard where sickness was in the family, the patient was sure to die.',19); INSERT INTO open_content VALUES(1057,'CARRIER PIGEONS.',19); INSERT INTO open_content VALUES(1058,'The carrier pigeon is remarkable for the degree in which it possesses the instinct and power of returning from a distance to its accustomed home.',19); INSERT INTO open_content VALUES(1059,'In Eastern countries it is the practice to bathe the pigeon''s feet in vinegar to keep them cool, and to prevent it from alighting in quest of water, by which the letter might sustain injury.',19); INSERT INTO open_content VALUES(1060,'Pigeons intended for this use must be brought from the place to which they are to return, within a short period, and must be kept in the dark and without food for at least eight hours before being let loose.',19); INSERT INTO open_content VALUES(1061,'The carrier pigeon was of great service during the siege of Paris in 1871, and conveyed many important messages.',19); INSERT INTO open_content VALUES(1062,'It goes through the air at the rate of thirty miles an hour, but has been known to fly even faster.',19); INSERT INTO open_content VALUES(1134,'Wohl der erste beschriebene Versuch des Menschen, ein Bauwerk zu errichten, das bis hinauf in den Himmel ragt, ist die biblische Geschichte vom Turmbau zu Babel.',25); INSERT INTO open_content VALUES(1135,'Seit dem Jahr 1913 ist dank archologischer Funde bewiesen, dass der Turm nicht nur ein Symbol fr die Megalomanie des Menschen ist, sondern auch als historisches Bauwerk tatschlich existierte.',25); INSERT INTO open_content VALUES(1136,'Da das Gebude im Laufe der Geschichte Babylons mehrere Male zerstrt und anschlieend wieder aufgebaut worden ist, lsst sich das ursprngliche Errichtungsdatum aus heutiger Sicht nicht eindeutig bestimmen.',25); INSERT INTO open_content VALUES(1137,'Es gilt jedoch als geschichtlich belegt, dass Alexander der Groe bei seinem Einmarsch in Babylon (323 v. Chr.) den stark verfallenen Turm bis auf die Grundmauern abreien lie, um ihn anschlieend in seiner alten Pracht wieder aufzubauen.',25); INSERT INTO open_content VALUES(1138,'Leider konnte nur die erste Hlfte seines Plans umgesetzt werden - der griechisch-makedonische Knig verstarb wenige Monate spter im Alter von 33 Jahren.',25); INSERT INTO open_content VALUES(1139,'Die Ausmae des antiken Wolkenkratzers waren fr die damaligen Verhltnisse enorm: mit 91 Metern entspricht die Gebudehhe in etwa der eines 30-stckigen Wohnhauses.',25); INSERT INTO open_content VALUES(1140,'Trotz des in der Bibel beschriebenen Scheiterns des Unterfangens lieen sich Konstrukteure aus aller Welt bis heute nicht entmutigen, immer hhere Bauwerke zu errichten, sei es um bestimmten Landstrichen das erwnschte Prestige zu verschaffen oder einfach um knappen und teuren Boden fr mehr Menschen nutzbar zu machen.',25); INSERT INTO open_content VALUES(1141,'Das Rennen um das Hchste von Menschen bewohnbare Gebude wurde lange Zeit von den Petronas Twin Towers, einem Wolkenkratzerpaar in Kuala Lumpur, der Hauptstadt Malaysias, angefhrt.',25); INSERT INTO open_content VALUES(1142,'Die beiden Trme haben jeweils eine Hhe von 452 Metern und wurden 1998 im Auftrag des Minerallkonzern Petronas errichtet.',25); INSERT INTO open_content VALUES(1143,'Im Jahr 2003 wurden die Petronas Towers auf den zweiten Platz der Rangliste verbannt und das Taipei Financial Center, auch Taipei 101 genannt, bernahm mit seinen 101 Stockwerken und 508 Metern Hhe die Fhrung.',25); INSERT INTO open_content VALUES(1144,'Der besondere Verdienst der Architekten und Ingenieure ist hier aber nicht lediglich in der reinen Hhe des Gebudes zu sehen.',25); INSERT INTO open_content VALUES(1145,'Die hufigen Taifune und Erdbeben, welche Taiwan Jahr fr Jahr heimsuchen, machten eine spezielle Konstruktion notwendig, um dem Gebude dauerhaft einen sicheren Stand zu gewhrleisten.',25); INSERT INTO open_content VALUES(1146,'Bald schon scheint sich der Kreis jedoch zu schlieen: In Dubai, nur wenige Kilometer von den Fundamenten des biblischen Turms von Babel entfernt, entsteht derzeit ein Gebude, das mit seinen Ausmaen alles bisher Dagewesene in den Schatten stellen soll.',25); INSERT INTO open_content VALUES(1147,'Die genauen Daten werden von den Bauherren noch vor der ffentlichkeit geheim gehalten, allerdings steht jetzt schon fest, dass das Gebude mit seinen mindestens 800 Metern Hhe ber mehr als 150 nutzbare Stockwerke verfgen wird.',25); INSERT INTO open_content VALUES(1148,'Menschen mit Lhmungserscheinungen, Muskelschwund oder hnlichen gesundheitlichen Schwchen sind hufig nicht in der Lage, selbst ihren Alltag zu meistern.',26); INSERT INTO open_content VALUES(1149,'Einfache Ttigkeiten wie das Tragen von Einkufen oder der Gang zur Toilette stellen sie vor ein unberwindbares Hindernis.',26); INSERT INTO open_content VALUES(1150,'Deshalb bentigen sie meist Hilfe.',26); INSERT INTO open_content VALUES(1151,'Doch dies knnte dank einer Erfindung des Japaners Yoshiyuki Sankai schon bald der Vergangenheit angehren.',26); INSERT INTO open_content VALUES(1152,'Der Professor von der Tsukuba-Universitt entwickelte vor kurzem zusammen mit seinem Team ein Hilfsgert namens HAL.',26); INSERT INTO open_content VALUES(1153,'Diese Abkrzung steht fr "Hybrid Assistive Limb" und bezeichnet einen futuristisch anmutenden Anzug, dessen Design direkt aus einem Manga Comic zu stammen scheint.',26); INSERT INTO open_content VALUES(1154,'Das Gert besitzt Sensoren an zentralen Stellen wie Knie, Ellbogen oder Hfte.',26); INSERT INTO open_content VALUES(1155,'Diese werden mit Informationen gespeist, die aus dem Gehirn des Benutzers kommen.',26); INSERT INTO open_content VALUES(1156,'Will also der Trger des Anzuges beispielsweise seinen rechten Arm heben, so erkennt das Gert die Absicht rechtzeitig und untersttzt die Bewegung.',26); INSERT INTO open_content VALUES(1157,'Auf diese Weise ist es unter anderem mglich, wesentlich schwerere Objekte zu heben als zuvor.',26); INSERT INTO open_content VALUES(1158,'Der HAL befindet sich derzeit noch in der Testphase und wird in diversen Kliniken und Pflegeheimen auf Herz und Nieren geprft.',26); INSERT INTO open_content VALUES(1159,'Doch schon bald knnte das Gert in Serie gehen und das Leben vieler pflegebedrftiger Menschen einfacher und lebenswerter machen.',26); INSERT INTO open_content VALUES(1206,'Den Hhepunkt seiner traurigen Bekanntheit erreichte der Begriff "Tsunami" wohl im Dezember 2004.',20); INSERT INTO open_content VALUES(1207,'Damals ereignete sich die fr die Menschheit bislang verheerendste Flutkatastrophe in der Neuzeit.',20); INSERT INTO open_content VALUES(1208,'Die Schden erstreckten sich ber acht Lnder (Indonesien, Sri Lanka, Indien, Thailand, Myanmar, Malediven, Malaysia und Bangladesch) und zwei Kontinente.',20); INSERT INTO open_content VALUES(1209,'Mehr als 231 000 Menschen lieen dabei ihr Leben.',20); INSERT INTO open_content VALUES(1210,'Wie aber verluft eine so gewaltige Naturkatastrophe? Und wie entsteht sie eigentlich?',20); INSERT INTO open_content VALUES(1211,'Der Begriff "Tsunami" (Tsu = Hafen, Nami = Welle) stammt aus Japan und wurde von den dortigen Fischern geprgt, die bei ihrer Ankunft im Hafen oft ein Bild der Verwstung vorfanden, obgleich sie zuvor keine Anzeichen fr einen aufkommenden Seesturm erkennen konnten.',20); INSERT INTO open_content VALUES(1212,'Eine Tsunami-Flutwelle hat nmlich einen ganz anderen Ursprung als andere Flutwellen und kann, solange sie auf dem offenen Meer stattfindet, mit bloem Auge kaum wahrgenommen werden.',20); INSERT INTO open_content VALUES(1213,'Sie fngt mit einem Seebeben an, das ist ein Erdbeben, das auf dem Meeresgrund stattfindet.',20); INSERT INTO open_content VALUES(1214,'Das Beben muss dabei mindestens die Stufe sieben auf der Richterskala aufweisen, um als Tsunami bezeichnet zu werden.',20); INSERT INTO open_content VALUES(1215,'Besonders hufig kommt es im pazifischen Raum zu Tsunamis, was an der besonderen Aktivitt der tektonischen Platten auf diesem Erdteil liegt.',20); INSERT INTO open_content VALUES(1216,'Die durch ein solches Seebeben ausgelste Welle ist, wie gesagt, nicht deutlich wahrnehmbar und offenbart ihre ganze Gewalt erst beim Zusammenprall mit der Kste.',20); INSERT INTO open_content VALUES(1217,'Ein Anzeichen gibt es dennoch, welches das unmittelbare Bevorstehen eines Tsunamis ankndigt: Bevor es zu dem gewaltigen Aufprall kommt, zieht sich das Wasser zuerst weit hinter die bliche Grenze zurck.',20); INSERT INTO open_content VALUES(1218,'In den USA und Japan werden bereits seit geraumer Zeit Frhwarnsysteme eingesetzt, die dabei helfen, einen aufkommenden Tsunami rechtzeitig zu erkennen und die notwendigen Evakuierungsarbeiten vorzunehmen.',20); INSERT INTO open_content VALUES(1219,'2004 gab es leider keine solchen Systeme im indischen Ozean, was jede Art von Schutzmanahmen unmglich machte.',20); INSERT INTO open_content VALUES(1220,'Derzeit wird in Indonesien an der Implementierung eines Frhwarnsystems gearbeitet, welches im Auftrag der Bundesregierung vom Geoforschungszentrum Potsdam entwickelt wurde.',20); INSERT INTO open_content VALUES(1221,'Des Weiteren werden seit 2005 die von der UNO durchgefhrten seismologischen Messungen zur Erdbeben-Frherkennung verwendet, welche ursprnglich ausschlielich dem Aufspren unerlaubter Atomwaffentests dienen sollten.',20); INSERT INTO open_content VALUES(1239,'The Grasshopper, singing',33); INSERT INTO open_content VALUES(1240,'All summer long,',33); INSERT INTO open_content VALUES(1241,'Now found winter stinging,',33); INSERT INTO open_content VALUES(1242,'And ceased in his song.',33); INSERT INTO open_content VALUES(1243,'Not a morsel or crumb in his cupboard -',33); INSERT INTO open_content VALUES(1244,'So he shivered, and ceased in his song.',33); INSERT INTO open_content VALUES(1245,'Miss Ant was his neighbor;',33); INSERT INTO open_content VALUES(1246,'To her he went:',33); INSERT INTO open_content VALUES(1247,'"O, you''re rich from labor,',33); INSERT INTO open_content VALUES(1248,'And I''ve not a cent.',33); INSERT INTO open_content VALUES(1249,'Lend me food, and I vow I''ll return it,',33); INSERT INTO open_content VALUES(1250,'Though at present I have not a cent."',33); INSERT INTO open_content VALUES(1251,'The Ant''s not a lender,',33); INSERT INTO open_content VALUES(1252,'I must confess.',33); INSERT INTO open_content VALUES(1253,'Her heart''s far from tender',33); INSERT INTO open_content VALUES(1254,'To one in distress.',33); INSERT INTO open_content VALUES(1255,'So she said: "Pray, how passed you the summer,',33); INSERT INTO open_content VALUES(1256,'That in winter you come to distress?"',33); INSERT INTO open_content VALUES(1257,'"I sang through the summer,"',33); INSERT INTO open_content VALUES(1258,'Grasshopper said.',33); INSERT INTO open_content VALUES(1259,'"But now I am glummer',33); INSERT INTO open_content VALUES(1260,'Because I''ve no bread."',33); INSERT INTO open_content VALUES(1261,'"So you sang!" sneered the Ant. "That relieves me.',33); INSERT INTO open_content VALUES(1262,'Now it''s winter - go dance for your bread!"',33); INSERT INTO open_content VALUES(1263,'The Old Oaken Bucket, by Samuel Woodworth',34); INSERT INTO open_content VALUES(1264,'How dear to this heart are the scenes of my childhood,',34); INSERT INTO open_content VALUES(1265,'When fond recollection presents them to view!',34); INSERT INTO open_content VALUES(1266,'The orchard, the meadow, the deep-tangled wild-wood,',34); INSERT INTO open_content VALUES(1267,'And every loved spot which my infancy knew!',34); INSERT INTO open_content VALUES(1268,'The wide-spreading pond, and the mill that stood by it,',34); INSERT INTO open_content VALUES(1269,'The bridge, and the rock where the cataract fell,',34); INSERT INTO open_content VALUES(1270,'The cot of my father, the dairy-house nigh it,',34); INSERT INTO open_content VALUES(1271,'And e''en the rude bucket that hung in the well-',34); INSERT INTO open_content VALUES(1272,'The old oaken bucket, the iron-bound bucket,',34); INSERT INTO open_content VALUES(1273,'The moss-covered bucket which hung in the well.',34); INSERT INTO open_content VALUES(1274,'That moss-covered vessel I hailed as a treasure,',34); INSERT INTO open_content VALUES(1275,'For often at noon, when returned from the field,',34); INSERT INTO open_content VALUES(1276,'I found it the source of an exquisite pleasure,',34); INSERT INTO open_content VALUES(1277,'The purest and sweetest that nature can yield.',34); INSERT INTO open_content VALUES(1278,'How ardent I seized it, with hands that were glowing,',34); INSERT INTO open_content VALUES(1279,'And quick to the white-pebbled bottom it fell;',34); INSERT INTO open_content VALUES(1280,'Then soon, with the emblem of truth overflowing,',34); INSERT INTO open_content VALUES(1281,'And dripping with coolness, it rose from the well,',34); INSERT INTO open_content VALUES(1282,'The old oaken bucket, the iron-bound bucket,',34); INSERT INTO open_content VALUES(1283,'The moss-covered bucket arose from the well.',34); INSERT INTO open_content VALUES(1284,'How sweet from the green, mossy brim to receive it,',34); INSERT INTO open_content VALUES(1285,'As, poised on the curb, it inclined to my lips!',34); INSERT INTO open_content VALUES(1286,'Not a full, blushing goblet could tempt me to leave it,',34); INSERT INTO open_content VALUES(1287,'The brightest that beauty or revelry sips.',34); INSERT INTO open_content VALUES(1288,'And now, far removed from the loved habitation,',34); INSERT INTO open_content VALUES(1289,'The tear of regret will intrusively swell,',34); INSERT INTO open_content VALUES(1290,'As fancy reverts to my father''s plantation,',34); INSERT INTO open_content VALUES(1291,'And sighs for the bucket that hangs in the well,',34); INSERT INTO open_content VALUES(1292,'The old oaken bucket, the iron-bound bucket,',34); INSERT INTO open_content VALUES(1293,'The moss-covered bucket that hangs in the well.',34); INSERT INTO open_content VALUES(1294,'Bei einem wackern Edelmann, meinem Freunde, der ein altes Schloss mit einer starken Familie bewohnte, war eine Waise erzogen worden, die, als sie herangewachsen und vierzehn Jahre alt war, meist um die Dame vom Hause sich beschftigte und die nchsten Dienste ihrer Person verrichtete.',35); INSERT INTO open_content VALUES(1295,'Man war mit ihr wohl zufrieden, und sie schien nichts weiter zu wnschen, als durch Aufmerksamkeit und Treue ihren Wohlttern dankbar zu sein.',35); INSERT INTO open_content VALUES(1296,'Sie war wohlgebildet, und es fanden sich einige Freier um sie ein. Man glaubte nicht, dass eine dieser Verbindungen zu ihrem Glck gereichen wrde, und sie zeigte auch nicht das mindeste Verlangen, ihren Zustand zu ndern.',35); INSERT INTO open_content VALUES(1297,'Auf einmal begab sich''s, dass man, wenn das Mdchen in dem Hause Geschfte halber herumging, unter ihr, hier und da, pochen hrte.',35); INSERT INTO open_content VALUES(1298,'Anfangs schien es zufllig, aber da das Klopfen nicht aufhrte und beinahe jeden ihrer Schritte bezeichnete, ward sie ngstlich und traute sich kaum, aus dem Zimmer der gndigen Frau herauszugehen, als in welchem sie alleine Ruhe hatte.',35); INSERT INTO open_content VALUES(1299,'Dieses Pochen ward von jedermann vernommen, der mit ihr ging oder nicht weit von ihr stand.',35); INSERT INTO open_content VALUES(1300,'Anfangs scherzte man darber, endlich aber fing die Sache an, unangenehm zu werden.',35); INSERT INTO open_content VALUES(1301,'Der Herr vom Hause, der von einem lebhaften Geist war, untersuchte nun selbst die Umstnde.',35); INSERT INTO open_content VALUES(1302,'Man hrte das Pochen nicht eher, als bis das Mdchen ging, und nicht sowohl, indem sie den Fu aufsetzte, als indem sie ihn zum Weiterschreiten aufhob. Doch fielen die Schlge manchmal unregelmig, und besonders waren sie sehr stark, wenn sie quer ber einen groen Saal den Weg nahm.',35); INSERT INTO open_content VALUES(1303,'Der Hausvater hatte eines Tages Handwerksleute in der Nhe und lie, da das Pochen am heftigsten war, gleich hinter ihr einige Dielen aufreien.',35); INSERT INTO open_content VALUES(1304,'Es fand sich nichts, auer dass bei dieser Gelegenheit ein paar groe Ratten zum Vorschein kamen, deren Jagd viel Lrm im Hause verursachte.',35); INSERT INTO open_content VALUES(1305,'Entrstet ber diese Begebenheit und Verwirrung, griff der Hausherr zu einem strengen Mittel, nahm seine grte Hetzpeitsche von der Wand und schwur, dass er das Mdchen bis auf den Tod prgeln wolle, wenn sich noch ein einzigmal das Pochen hren liee.',35); INSERT INTO open_content VALUES(1306,'Von der Zeit an ging sie ohne Anfechtung im ganzen Hause herum, und man vernahm von dem Pochen nichts weiter.',35); INSERT INTO open_content VALUES(1307,'Es war ein Geier, der hackte in meine Fe. Stiefel und Strmpfe hatte er schon aufgerissen, nun hackte er schon in die Fe selbst.',36); INSERT INTO open_content VALUES(1308,'Immer schlug er zu, flog dann unruhig mehrmals um mich und setzte dann die Arbeit fort.',36); INSERT INTO open_content VALUES(1309,'Es kam ein Herr vorber, sah ein Weilchen zu und fragte dann, warum ich den Geier dulde.',36); INSERT INTO open_content VALUES(1310,'"Ich bin ja wehrlos", sagte ich, "er kam und fing zu hacken an, da wollte ich ihn natrlich wegtreiben, versuchte ihn sogar zu wrgen, aber ein solches Tier hat groe Krfte, auch wollte er mir schon ins Gesicht springen, da opferte ich lieber die Fe.',36); INSERT INTO open_content VALUES(1311,'Nun sind sie schon fast zerrissen."',36); INSERT INTO open_content VALUES(1312,'"Dass Sie sich so qulen lassen", sagte der Herr, "ein Schuss und der Geier ist erledigt."',36); INSERT INTO open_content VALUES(1313,'"Ist das so?", fragte ich, "und wollen Sie das besorgen?"',36); INSERT INTO open_content VALUES(1314,'"Gern", sagte der Herr, "ich muss nur nach Hause gehen und mein Gewehr holen. Knnen Sie noch eine halbe Stunde warten?"',36); INSERT INTO open_content VALUES(1315,'"Das wei ich nicht", sagte ich und stand eine Weile starr vor Schmerz, dann sagte ich: "Bitte, versuchen Sie es fr jeden Fall."',36); INSERT INTO open_content VALUES(1316,'"Gut", sagte der Herr, "ich werde mich beeilen."',36); INSERT INTO open_content VALUES(1317,'Der Geier hatte whrend des Gesprches ruhig zugehrt und die Blicke zwischen mir und dem Herrn wandern lassen.',36); INSERT INTO open_content VALUES(1318,'Jetzt sah ich, dass er alles verstanden hatte, er flog auf, weit beugte er sich zurck, um genug Schwung zu bekommen und stie dann wie ein Speerwerfer den Schnabel durch meinen Mund tief in mich.',36); INSERT INTO open_content VALUES(1319,'Zurckfallend fhlte ich befreit, wie er in meinem alle Tiefen fllenden, alle Ufer berflieenden Blut unrettbar ertrank.',36); INSERT INTO open_content VALUES(1320,'Mit einem Dach und seinem Schatten dreht',37); INSERT INTO open_content VALUES(1321,'sich eine kleine Weile der Bestand',37); INSERT INTO open_content VALUES(1322,'von bunten Pferden, alle aus dem Land,',37); INSERT INTO open_content VALUES(1323,'das lange zgert, eh es untergeht.',37); INSERT INTO open_content VALUES(1324,'Zwar manche sind an Wagen angespannt,',37); INSERT INTO open_content VALUES(1325,'doch alle haben Mut in ihren Mienen;',37); INSERT INTO open_content VALUES(1326,'ein bser Lwe geht mit ihnen',37); INSERT INTO open_content VALUES(1327,'und dann und wann ein weier Elefant.',37); INSERT INTO open_content VALUES(1328,'Sogar ein Hirsch ist da, ganz wie im Wald,',37); INSERT INTO open_content VALUES(1329,'nur dass er einen Sattel trgt und drber',37); INSERT INTO open_content VALUES(1330,'ein kleines blaues Mdchen aufgeschnallt.',37); INSERT INTO open_content VALUES(1331,'Und auf dem Lwen reitet wei ein Junge',37); INSERT INTO open_content VALUES(1332,'und hlt sich mit der kleinen heien Hand',37); INSERT INTO open_content VALUES(1333,'dieweil der Lwe Zhne zeigt und Zunge.',37); INSERT INTO open_content VALUES(1334,'Und dann und wann ein weier Elefant.',37); INSERT INTO open_content VALUES(1335,'Und auf den Pferden kommen sie vorber,',37); INSERT INTO open_content VALUES(1336,'auch Mdchen, helle, diesem Pferdesprunge',37); INSERT INTO open_content VALUES(1337,'fast schon entwachsen; mitten in dem Schwunge',37); INSERT INTO open_content VALUES(1338,'schauen sie auf, irgendwohin, herber -',37); INSERT INTO open_content VALUES(1339,'Und dann und wann ein weier Elefant.',37); INSERT INTO open_content VALUES(1340,'Und das geht hin und eilt sich, dass es endet,',37); INSERT INTO open_content VALUES(1341,'und kreist und dreht sich nur und hat kein Ziel.',37); INSERT INTO open_content VALUES(1342,'Ein Rot, ein Grn, ein Grau vorbeigesendet,',37); INSERT INTO open_content VALUES(1343,'ein kleines kaum begonnenes Profil -.',37); INSERT INTO open_content VALUES(1344,'Und manchesmal ein Lcheln, hergewendet,',37); INSERT INTO open_content VALUES(1345,'ein seliges, das blendet und verschwendet',37); INSERT INTO open_content VALUES(1346,'an dieses atemlose blinde Spiel ...',37); INSERT INTO open_content VALUES(1347,'Whrend eines Hochwassers strmen die Bewohner eines 4-stckigen Wohnhauses die Wohnung des dort ebenfalls wohnenden Priesters.',38); INSERT INTO open_content VALUES(1348,'"Kommen Sie mit, das Wasser steigt immer schneller!" rufen sie ihm aufgeregt zu. "Aber wir haben noch Platz auf unserem Schlauchboot!"',38); INSERT INTO open_content VALUES(1349,'Der Priester jedoch bleibt sehr gelassen und sagt: "Fahrt ohne mich. Ich werde hier bleiben und beten, Gott wird mich mit Sicherheit retten."',38); INSERT INTO open_content VALUES(1350,'Fnf Minuten spter klopft es wieder: "Wir fahren jetzt los, wollen Sie es sich nicht noch einmal berlegen? Wir haben wirklich noch genug Platz fr alle."',38); INSERT INTO open_content VALUES(1351,'"Nein", antwortet der Priester. "Mein Glaube ist stark und ich wei, dass Gott alles Ntige unternehmen wird, um mich aus dieser Situation zu befreien. Fahrt ohne mich."',38); INSERT INTO open_content VALUES(1352,'Das Wasser hat schon beinahe das Dach erreicht, auf dem der Priester nun sitzt und seelenruhig um seine Rettung betet.',38); INSERT INTO open_content VALUES(1353,'Da sieht er, wie das Schlauchboot, das sich eigentlich schon auf dem Weg zu einem sicheren Ufer befand, umkehrt.',38); INSERT INTO open_content VALUES(1354,'"Wir konnten nicht einfach zusehen wie Sie ertrinken und haben beschlossen umzukehren. Kommen Sie mit, in wenigen Minuten werden Sie ertrinken!"',38); INSERT INTO open_content VALUES(1355,'Auch diesmal bleibt der Priester aber hartnckig, weigert sich einzusteigen und zwingt die hilfsbereiten Leute weiterzufahren.',38); INSERT INTO open_content VALUES(1356,'Das Wasser steigt weiter und der Priester ertrinkt in den Fluten.',38); INSERT INTO open_content VALUES(1357,'Als er sich danach seinem Schpfer gegenbersieht, fragt er erstaunt: "Warum hast du meine Gebete nicht erhrt und mich ertrinken lassen, o Allmchtiger? War ich dir etwa zeitlebens kein guter Diener?!"',38); INSERT INTO open_content VALUES(1358,'"Wie?! Ich habe deine Gebete nicht erhrt?!" antwortet Gott erzrnt. "Dreimal habe ich ein Boot geschickt, um dich zu retten!"',38); DROP INDEX open_content_index; CREATE INDEX open_content_index ON open_content (content_id, content_lesson); // **************************************************************************** // END OF FILE // **************************************************************************** COMMIT; tipp10-2.1.0/widget/000077500000000000000000000000001274324046000141145ustar00rootroot00000000000000tipp10-2.1.0/widget/checkversion.cpp000066400000000000000000000064471274324046000173160ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the CheckVersion class ** File name: checkversion.cpp ** ****************************************************************/ #include #include #include #include #include "checkversion.h" #include "def/defines.h" // Constructor CheckVersion::CheckVersion() { // QHttp object provides interface to HTTP http = new QHttp(); connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), this, SLOT(readResponseHeader(const QHttpResponseHeader &))); connect(http, SIGNAL(done(bool)), this, SLOT(httpDownloadFinished(bool))); connect(http, SIGNAL(dataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int))); } void CheckVersion::checkVersion() { tempVersionFile = new QTemporaryFile; if (!tempVersionFile->open()) { return; } http->setHost(UPDATE_URL); // Proxy server? //http->setProxy(txtProxyServer->text(), txtProxyPort->text().toInt()); http->get(UPDATE_URL_VERSION, tempVersionFile); } void CheckVersion::updateDataReadProgress(int bytesRead, int totalBytes) { } void CheckVersion::readResponseHeader(const QHttpResponseHeader &responseHeader) { if (responseHeader.statusCode() != 200) { http->abort(); return; } } void CheckVersion::httpDownloadFinished(bool error) { // Download finished if (error) { return; } if (checkVersionFile()) { // DB Version is new delete tempVersionFile; emit newVersionAvailable(); } } bool CheckVersion::checkVersionFile() { // Go to the beginning of the version file tempVersionFile->seek(0); QSqlQuery query; QTextStream in(tempVersionFile); // Read only the first line (server DB version) QString updateVersion = in.readLine(); if (updateVersion.isNull()) { return false; } else { // Check DB version of software if (!query.exec("SELECT * FROM db_version ORDER BY version DESC;")) { return false; } else { if (!query.first()) { return false; } else { // Server DB version is 0 or bigger than current version QString softwareVersion = query.value(0).toString(); if (updateVersion.trimmed() == "0" || softwareVersion.trimmed() != updateVersion.trimmed()) { return true; } } } } return false; } tipp10-2.1.0/widget/checkversion.h000066400000000000000000000042211274324046000167470ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the CheckVersion class ** File name: checkversion.h ** ****************************************************************/ #ifndef CHECKVERSION_H #define CHECKVERSION_H #include #include #include //! The CheckVersion class checks for new software version. /*! @author Tom Thielicke, s712715 @version 0.0.1 @date 02.01.2011 */ class CheckVersion : public QObject { Q_OBJECT public: CheckVersion(); //! Slot, download the database version from server. void checkVersion(); signals: void newVersionAvailable(); private slots: //! Slot, data read progress while downloading. /*! @param bytesRead Number of bytes read @param totalBytes Number total bytes */ void updateDataReadProgress(int bytesRead, int totalBytes); //! Slot, http response header read. /*! @param responseHeader http response header */ void readResponseHeader(const QHttpResponseHeader &responseHeader); //! Slot, download has finished. /*! @param error An error occured true/false */ void httpDownloadFinished(bool error); private: //! Checks wether the version is new. bool checkVersionFile(); QHttp *http; QTemporaryFile *tempVersionFile; }; #endif // CHECKVERSION_H tipp10-2.1.0/widget/companylogo.cpp000066400000000000000000000035671274324046000171620ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the CompanyLogo class ** File name: companylogo.cpp ** ****************************************************************/ #include #include #include "companylogo.h" #include "def/errordefines.h" #include "def/defines.h" #include "errormessage.h" CompanyLogo::CompanyLogo(QWidget *parent, bool white) : QWidget(parent) { // Load the company logo loadLogo(white); // Set widget size to image size (fixed) setFixedSize(logo.width(), logo.height()); } void CompanyLogo::paintEvent(QPaintEvent *revent) { QPainter painter(this); // Draw the image in the left top corner of the widget painter.drawImage(0, 0, logo); } void CompanyLogo::loadLogo(bool white) { QString logoColor; // Set the color as part of the file name if (white) { logoColor = "white"; } else { logoColor = "orange"; } // Load the image if (!logo.load(":/img/logo_" + logoColor + ".png")) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LOGO_PIC, TYPE_WARNING, CANCEL_OPERATION); } } tipp10-2.1.0/widget/companylogo.h000066400000000000000000000053421274324046000166200ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the CompanyLogo class ** File name: companylogo.h ** ****************************************************************/ #ifndef COMPANYLOGO_H #define COMPANYLOGO_H #include #include #include //! The CompanyLogo class provides a company logo widget. /*! The CompanyLogo class loads a company image and provide it in a widget. By default a orange logo is load. If parameter white in contructor is true the logo is white (used not be an eye catcher while practice a lesson). @author Tom Thielicke, s712715 @version 0.0.4 @date 02.06.2006 */ class CompanyLogo : public QWidget { public: //! Constructor: loads the company logo and resizes the widget. /*! In this contructor the function loadLogo is called. If parameter white is set true a white logo will be loaded. At the end the widget size is set to the fixed size of the image. @param parent The parent QWidget @param white Flag to load a white or orange image @see loadLogo */ CompanyLogo(QWidget *parent = 0, bool white = false); protected: //! Paintevent, draws the company logo. /*! The paintevent is called every time when the window changes. It draws the logo (that was loaded in variable logo) in the left top corner of the widget. @param event Event of the paint function @see logo */ void paintEvent(QPaintEvent *event); private: //! Loads the company image in a QImage object logo. /*! This function defines the file name of the logo and load it in the QImage object logo. If white is true the file name is "logo_white.png", if white is false the file name is "logo_orange.png". The files are located in the directory "img/". @param white Flag to load a white or orange image @return Bool value @see logo */ void loadLogo(bool white); //! Object of the company logo. QImage logo; }; #endif // COMPANYLOGO_H tipp10-2.1.0/widget/downloaddialog.cpp000066400000000000000000000234021274324046000176100ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the DownloadDialog class ** File name: downloaddialog.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include "downloaddialog.h" #include "def/defines.h" #include "def/errordefines.h" #include "errormessage.h" DownloadDialog::DownloadDialog(QStringList *data, QWidget *parent) : QDialog(parent) { setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint); // QHttp object provides interface to HTTP http = new QHttp(this); setWindowTitle(tr("Lektion downloaden")); setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME))); lessonData = data; createProgressinfo(); // Create dialog content createControls(); createLayout(); createConnections(); readSettings(); lineImportPath->setFocus(); setMinimumSize(APP_WIDTH_STANDARD, APP_HEIGHT_STANDARD); } void DownloadDialog::showHelp() { helpBrowser = new HelpBrowser("lessons.html#ownlesson", this); helpBrowser->show(); } void DownloadDialog::createProgressinfo() { labelImportPath = new QLabel(tr("Bitte geben Sie die Internetadresse zu einer " "Textdatei ein:")); labelImportPath->setWordWrap(true); progressBar = new QProgressBar(this); progressBar->setVisible(false); } void DownloadDialog::createControls() { lineImportPath = new QLineEdit(); //Buttons buttonOk = new QPushButton(tr("&Download starten")); buttonCancel = new QPushButton(tr("&Abbrechen")); buttonHelp = new QPushButton(tr("&Hilfe")); checkProxy = new QCheckBox(tr("Ueber einen Proxyserver verbinden")); txtProxyServer = new QLineEdit(); txtProxyServer->setShown(false); txtProxyPort = new QLineEdit(); txtProxyPort->setShown(false); labelProxyServer = new QLabel(tr("Server:")); labelProxyServer->setShown(false); labelProxyPort = new QLabel(tr("Port:")); labelProxyPort->setShown(false); buttonOk->setDefault(true); } void DownloadDialog::createLayout() { QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->addWidget(buttonCancel); buttonLayout->addSpacing(10); buttonLayout->addWidget(buttonHelp); buttonLayout->addWidget(buttonOk); QHBoxLayout *proxyLayout = new QHBoxLayout; proxyLayout->addWidget(labelProxyServer); proxyLayout->addWidget(txtProxyServer); proxyLayout->addWidget(labelProxyPort); proxyLayout->addWidget(txtProxyPort); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(labelImportPath); mainLayout->addWidget(lineImportPath); mainLayout->addWidget(progressBar); mainLayout->addWidget(checkProxy); mainLayout->addLayout(proxyLayout); mainLayout->addLayout(buttonLayout); mainLayout->setSizeConstraint(QLayout::SetFixedSize); setLayout(mainLayout); } void DownloadDialog::createConnections() { connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), this, SLOT(readResponseHeader(const QHttpResponseHeader &))); connect(http, SIGNAL(done(bool)), this, SLOT(httpDownloadFinished(bool))); connect(http, SIGNAL(dataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int))); connect(buttonOk, SIGNAL(clicked()), this, SLOT(downloadTxtFile())); connect(buttonCancel, SIGNAL(clicked()), this, SLOT(writeSettings())); connect(buttonCancel, SIGNAL(clicked()), this, SLOT(reject())); connect(checkProxy, SIGNAL(toggled(bool)), txtProxyServer, SLOT(setShown(bool))); connect(checkProxy, SIGNAL(toggled(bool)), txtProxyPort, SLOT(setShown(bool))); connect(checkProxy, SIGNAL(toggled(bool)), labelProxyServer, SLOT(setShown(bool))); connect(checkProxy, SIGNAL(toggled(bool)), labelProxyPort, SLOT(setShown(bool))); connect(buttonHelp, SIGNAL(clicked()), this, SLOT(showHelp())); } bool DownloadDialog::checkTxtFile() { lessonData->clear(); lessonData->append(lineImportPath->text()); int bytesRead = 0; int totalBytes = tempTxtFile->size(); QString line; // Go to the beginning of the text file tempTxtFile->seek(0); QTextStream in(tempTxtFile); // Read all lines of the downloaded file while (!in.atEnd()) { line = in.readLine(); lessonData->append(line); bytesRead += line.size(); updateDataReadProgress(bytesRead, totalBytes); } delete tempTxtFile; updateDataReadProgress(totalBytes, totalBytes); if (lessonData->size() < 2) { return false; } return true; } void DownloadDialog::downloadTxtFile() { writeSettings(); downloadCanceled = false; showProgressControls(true); labelImportPath->setText(tr("Textdatei herunterladen...")); labelImportPath->update(); qApp->processEvents(); tempTxtFile = new QTemporaryFile; if (!tempTxtFile->open()) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_TEMP_FILE_CREATION, TYPE_WARNING, CANCEL_OPERATION); delete tempTxtFile; showProgressControls(false); close(); return; } QString userUrl = lineImportPath->text(); // Check if user forgot the "http" if (userUrl.left(4) != "http") { userUrl = "http://" + userUrl; } QUrl url(userUrl); if (url.path() == "") { url.setPath("/"); } http->setHost(url.host()); // Proxy server? if (checkProxy->isChecked()) { http->setProxy(txtProxyServer->text(), txtProxyPort->text().toInt()); } http->get(url.path(), tempTxtFile); } void DownloadDialog::updateDataReadProgress(int bytesRead, int totalBytes) { progressBar->setMaximum(totalBytes); progressBar->setValue(bytesRead); } void DownloadDialog::showProgressControls(bool show) { if (show) { lineImportPath->setVisible(false); progressBar->setVisible(true); buttonOk->setEnabled(false); } else { lineImportPath->setVisible(true); progressBar->setVisible(false); buttonOk->setEnabled(true); } } void DownloadDialog::readResponseHeader(const QHttpResponseHeader &responseHeader) { if (responseHeader.statusCode() != 200) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_DOWNLOAD_EXECUTION, TYPE_WARNING, CANCEL_OPERATION); downloadCanceled = true; return; } } void DownloadDialog::httpDownloadFinished(bool error) { // Download finished if (downloadCanceled) { showProgressControls(false); http->abort(); return; } if (error) { // Error message + additional error information ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_DOWNLOAD_EXECUTION, TYPE_WARNING, CANCEL_OPERATION, http->errorString()); showProgressControls(false); http->abort(); return; } // Execute sql file and analyze current text in DB labelImportPath->setText(tr("Lektion " "ueberpruefen...")); labelImportPath->update(); qApp->processEvents(); if (checkTxtFile()) { this->accept(); } else { close(); } } void DownloadDialog::readSettings() { // Saves settings of the startwiget // (uses the default constructor of QSettings, passing // the application and company name see main function) #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("lesson"); lineImportPath->setText(settings.value("downloadpath", LESSON_DOWNLOAD_URL).toString()); settings.endGroup(); settings.beginGroup("proxy"); checkProxy->setChecked(settings.value("check_proxy", false).toBool()); txtProxyServer->setText(settings.value("proxy_server", "").toString()); txtProxyPort->setText(settings.value("proxy_port", "").toString()); settings.endGroup(); // Show proxy settings if proxy is checked if (checkProxy->isChecked()) { labelProxyServer->setVisible(true); txtProxyServer->setVisible(true); labelProxyPort->setVisible(true); txtProxyPort->setVisible(true); } } void DownloadDialog::writeSettings() { // Saves settings of the startwiget // (uses the default constructor of QSettings, passing // the application and company name see main function) #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("lesson"); settings.setValue("downloadpath", lineImportPath->text()); settings.endGroup(); settings.beginGroup("proxy"); settings.setValue("check_proxy", checkProxy->isChecked()); settings.setValue("proxy_server", txtProxyServer->text()); settings.setValue("proxy_port", txtProxyPort->text()); settings.endGroup(); } tipp10-2.1.0/widget/downloaddialog.h000066400000000000000000000067361274324046000172700ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the DownloadDialog class ** File name: downloaddialog.h ** ****************************************************************/ #ifndef DOWNLOADDIALOG_H #define DOWNLOADDIALOG_H #include #include #include #include #include #include #include #include #include #include #include #include #include "helpbrowser.h" //! The DownloadDialog class provides a license input widget. /*! The DownloadDialog class shows a dialog to enter a license key. @author Tom Thielicke, s712715 @version 0.0.1 @date 09.09.2008 */ class DownloadDialog : public QDialog { Q_OBJECT public: //! Constructor, creates two table objects and provide it in two tabs. DownloadDialog(QStringList *data, QWidget *parent = 0); public slots: private slots: //! Slot, download the text file from server. void downloadTxtFile(); //! Slot, data read progress while downloading. /*! @param bytesRead Number of bytes read @param totalBytes Number total bytes */ void updateDataReadProgress(int bytesRead, int totalBytes); //! Slot, http response header read. /*! @param responseHeader http response header */ void readResponseHeader(const QHttpResponseHeader &responseHeader); //! Slot, download has finished. /*! @param error An error occured true/false */ void httpDownloadFinished(bool error); //! Slot, shows the help dialog. /*! This slot shows the help dialog. It creates an object of the QDialog class with an QTextbrowser. */ void showHelp(); private: //! Creates the progress bar and status label. void createProgressinfo(); void showProgressControls(bool show); bool checkTxtFile(); //! Creates the controls. void createControls(); //! Creates the connections between widgets an QHttp functions. void createConnections(); //! Creates the layout of the complete class. void createLayout(); //! Writes user settings void writeSettings(); //! Reads user settings void readSettings(); //! Object of the help browser dialog HelpBrowser *helpBrowser; QHttp *http; QTemporaryFile *tempTxtFile; QPushButton *buttonOk; QPushButton *buttonHelp; QPushButton *buttonCancel; QLabel *labelImportPath; QLineEdit *lineImportPath; QStringList *lessonData; QCheckBox *checkProxy; QLineEdit *txtProxyServer; QLabel *labelProxyServer; QLineEdit *txtProxyPort; QLabel *labelProxyPort; QProgressBar *progressBar; bool downloadCanceled; }; #endif //DOWNLOADDIALOG_H tipp10-2.1.0/widget/errormessage.cpp000066400000000000000000000265121274324046000173240ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the ErrorMessage class ** File name: errormessage.cpp ** ****************************************************************/ #include #include "errormessage.h" #include "def/errordefines.h" #include "def/defines.h" ErrorMessage::ErrorMessage(QWidget *parent) : QWidget(parent) { } void ErrorMessage::showMessage(int errorNo, int errorType, int cancelProcedure, QString addon) { QString message; // First generate the error text message = getErrorText(errorNo); // If exist, append an additional text if (addon != "") { message.append("\n" + addon); } /*if (cancelProcedure != CANCEL_NO) { // Append fix text message.append(tr("\n\nBitte melden Sie den Fehler " "(Fehlernummer) und die Umstaende unter denen er aufgetreten " "ist im Internet unter: ") + APP_URL + tr("\nSo kann ") + APP_NAME + tr(" verbessert werden. Danke!")); }*/ // Append, what the program do now message.append("\n\n" + getCancelText(cancelProcedure)); // Choose a message style switch (errorType) { case TYPE_INFO: QMessageBox::information(0, APP_NAME, message); break; case TYPE_WARNING: QMessageBox::warning(0, APP_NAME, message); break; case TYPE_CRITICAL: default: QMessageBox::critical(0, APP_NAME, message); break; } } QString ErrorMessage::getCancelText(int number) { QString cancelText = ""; switch (number) { case CANCEL_NO: cancelText = ""; break; case CANCEL_OPERATION: cancelText = tr("Der Vorgang wird abgebrochen."); break; case CANCEL_UPDATE: cancelText = tr("Das Update wird abgebrochen."); break; case CANCEL_PROGRAM: default: cancelText = tr("Die Anwendung wird beendet."); break; } return cancelText; } QString ErrorMessage::getErrorText(int number) { QString errorText = ""; switch (number) { case ERR_LOGO_PIC: errorText = tr("Das Programmlogo konnte nicht geladen " "werden."); break; case ERR_KEY_PIC: errorText = tr("Ein Tastatur-Bitmap konnte nicht geladen " "werden."); break; case ERR_TICKER_PIC: errorText = tr("Der Lauftext-Hintergund konnte nicht " "geladen werden."); break; case ERR_STATUS_PIC: errorText = tr("Der Statusleisten-Hintergund konnte " "nicht geladen werden."); break; case ERR_SQL_DB_APP_EXIST: errorText = tr("Die Datenbank ") + APP_DB + tr(" im Programmverzeichnis konnte " "leider nicht gefunden werden.\n" "Sie muss existieren, um die Software starten zu koennen."); break; case ERR_SQL_DB_USER_EXIST: errorText = tr("Im angegebenen Verzeichnis konnte keine " "Datenbank gefunden werden. Es wird nun " "versucht, eine neue, leere Datenbank in diesem " "Verzeichnis anzulegen.\n\n" "Den Verzeichnispfad zur Datenbank koennen Sie " "in den Einstellungen veraendern.\n"); break; case ERR_SQL_DB_APP_COPY: errorText = tr("Die Benutzer-Datenbank konnte nicht in " "Ihrem HOME-Verzeichnis angelegt werden. Eventell fehlen die Schreibrechte.\n" "Es wird nun versucht, die Original-Datenbank im Programmverzeichnis zu verwenden.\n\n" "Den Verzeichnispfad zur Datenbank koennen Sie anschliessend in den " "Einstellungen veraendern.\n"); break; case ERR_SQL_DB_USER_COPY: errorText = tr("Die Benutzer-Datenbank konnte nicht im " "angegebenen Verzeichnis angelegt werden. " "Eventell fehlt das Verzeichnis oder es " "sind keine Schreibrechte vorhanden.\n" "Es wird nun versucht, eine Datenbank in Ihrem HOME-Verzeichnis anzulegen.\n\n" "Den Verzeichnispfad zur Datenbank koennen Sie anschliessend in den " "Einstellungen veraendern.\n"); break; case ERR_SQL_CONNECTION: errorText = tr("Die Verbindung zur Datenbank ist leider " "fehlgeschlagen."); break; case ERR_DB_VERSION_EXIST: errorText = tr("Die Verbindung zur Datenbank ist leider " "fehlgeschlagen."); break; case ERR_USER_LESSONS_FLUSH: errorText = tr( "Die Benutzertabelle mit den Lektionendaten kann nicht\n" "geleert werden.\nSQL-Statement fehlgeschlagen."); break; case ERR_USER_ERRORS_FLUSH: errorText = tr( "Die Benutzertabelle mit den Fehlerdaten kann nicht\n" "geleert werden.\nSQL-Statement fehlgeschlagen."); break; case ERR_LESSONS_EXIST: errorText = tr("Keine Lektionen vorhanden."); break; case ERR_LESSONS_SELECTED: errorText = tr("Es wurde keine Lektion selektiert.\n" "Bitte waehlen Sie eine Lektion aus."); break; case ERR_LESSONS_CREATION: errorText = tr("Lektion konnte nicht erstellt werden.\n" "SQL-Statement fehlgeschlagen."); break; case ERR_LESSONS_UPDATE: errorText = tr( "Die Lektion konnte nicht aktualisiert werden, weil kein\n" "Zugriff auf die Datenbank moeglich ist.\n\n" "Falls dieses Problem erst auftrat, nachem der Schreibtrainer\n" "zuvor einige Zeit anstandslos lief, ist voraussichtlich die\n" "Datenbank beschaedigt worden (z.B. durch einen Absturz des\n" "Computers).\n" "Um zu ueberpruefen ob die Datenbank beschaedigt wurde, koennen\n" "Sie die Datenbank-Datei testweise einmal umbenennen und die\n" "Software dann neu starten (es sollte dann auomatisch eine\n" "neue, leere Datenbank angelegt werden). Den Pfad zur Datenbank\n" "\"") + APP_USER_DB + tr("\" koennen Sie den Grundeinstellungen entnehmen.\n\n" "Wenn dieses Problem gleich nach dem ersten Start der Software\n" "auftrat, fehlen voraussichtlich die Schreibrechte auf die\n" "Datenbank-Datei. Bitte ueberpruefen Sie diese.\n"); break; case ERR_USER_ERRORS_REFRESH: errorText = tr( "Die Benutzertabelle mit den Fehlerdaten konnte nicht\n" "aktualisiert werden, weil kein Zugriff auf die Datenbank\n" "moeglich ist.\n\n" "Falls dieses Problem erst auftrat, nachem der Schreibtrainer\n" "zuvor einige Zeit anstandslos lief, ist voraussichtlich die\n" "Datenbank beschaedigt worden (z.B. durch einen Absturz des\n" "Computers).\n" "Um zu ueberpruefen ob die Datenbank beschaedigt wurde, koennen\n" "Sie die Datenbank-Datei testweise einmal umbenennen und die\n" "Software dann neu starten (es sollte dann auomatisch eine\n" "neue, leere Datenbank angelegt werden). Den Pfad zur Datenbank\n" "\"") + APP_USER_DB + tr("\" koennen Sie den Grundeinstellungen entnehmen.\n\n" "Wenn dieses Problem gleich nach dem ersten Start der Software\n" "auftrat, fehlen voraussichtlich die Schreibrechte auf die\n" "Datenbank-Datei. Bitte ueberpruefen Sie diese.\n"); break; case ERR_USER_LESSONS_REFRESH: errorText = tr( "Die Benutzertabelle mit den Lektionendaten konnte nicht\n" "aktualisiert werden, weil kein Zugriff auf die Datenbank\n" "moeglich ist.\n\n" "Falls dieses Problem erst auftrat, nachem der Schreibtrainer\n" "zuvor einige Zeit anstandslos lief, ist voraussichtlich die\n" "Datenbank beschaedigt worden (z.B. durch einen Absturz des\n" "Computers).\n" "Um zu ueberpruefen ob die Datenbank beschaedigt wurde, koennen\n" "Sie die Datenbank-Datei testweise einmal umbenennen und die\n" "Software dann neu starten (es sollte dann auomatisch eine\n" "neue, leere Datenbank angelegt werden). Den Pfad zur Datenbank\n" "\"") + APP_USER_DB + tr("\" koennen Sie den Grundeinstellungen entnehmen.\n\n" "Wenn dieses Problem gleich nach dem ersten Start der Software\n" "auftrat, fehlen voraussichtlich die Schreibrechte auf die\n" "Datenbank-Datei. Bitte ueberpruefen Sie diese.\n"); break; case ERR_USER_LESSON_ADD: errorText = tr("Die Lektion konnte nicht gespeichert " "werden.\n" "SQL-Statement fehlgeschlagen."); break; case ERR_USER_LESSON_GET: errorText = tr("Die Lektion konnte nicht angefordert " "werden.\n" "SQL-Statement fehlgeschlagen."); break; case ERR_USER_LESSON_ANALYZE: errorText = tr("Die Lektion konnte nicht analysiert " "werden.\n" "SQL-Statement fehlgeschlagen."); break; case ERR_USER_IMPORT_READ: errorText = tr("Die Datei konnte leider nicht importiert " "werden.\n" "Bitte ueberpruefen Sie, ob es sich um eine lesbare Textdatei " "handelt.\n"); break; case ERR_USER_IMPORT_EMPTY: errorText = tr("Die Datei konnte leider nicht importiert " "werden, weil sie leer ist.\n" "Bitte ueberpruefen Sie, ob es sich um eine lesbare Textdatei " "mit\nInhalt handelt.\n"); break; case ERR_USER_DOWNLOAD_EXECUTION: errorText = tr( "Die Datei konnte leider nicht importiert werden.\n" "Ueberpruefen Sie bitte die Schreibweise der Internetadresse,\n" "es muss sich um eine lesbare Textdatei und um eine gueltige\n" "URL handeln.\n" "Ueberpruefen Sie bitte ausserdem Ihre Internetverbindung.\n"); break; case ERR_USER_EXPORT_WRITE: errorText = tr("Die Datei konnte leider nicht exportiert " "werden.\n" "Bitte ueberpruefen Sie, ob es sich um eine beschreibbare Textdatei " "handelt.\n"); break; case ERR_TEMP_FILE_CREATION: errorText = tr("Temporaere Datei konnte nicht erzeugt " "werden."); break; case ERR_UPDATE_EXECUTION: errorText = tr("Das Update konnte leider nicht " "durchgefuehrt werden.\nBitte ueberpruefen Sie Ihre " "Internetverbindung und die Proxyeinstellung."); break; case ERR_ONLINE_VERSION_READABLE: errorText = tr("Die Online-Versionsinformation konnte " "nicht gelesen werden."); break; case ERR_DB_VERSION_READABLE: errorText = tr("Die Datenbank-Versionsinformation konnte " "nicht gelesen werden."); break; case ERR_UPDATE_SQL_EXECUTION: errorText = tr("SQL-String konnte nicht verarbeitet " "werden"); break; case ERR_ERROR_DEFINES_EXIST: errorText = tr("Keine Tippfehler-Definitonen vorhanden."); break; case ERR_LESSON_CONTENT_EXIST: errorText = tr("Temporaere Datei konnte nicht erzeugt " "werden.\nDas Update wird abgebrochen."); break; case ERR_ANALYZE_TABLE_CREATION: errorText = tr("Analyse-Tabelle kann nicht erstellt " "werden."); break; case ERR_ANALYZE_INDEX_CREATION: errorText = tr("Analyse-Index kann nicht erstellt " "werden."); break; case ERR_ANALYZE_TABLE_FILL: errorText = tr("Analyse-Tabelle kann nicht mit " "Inhalten gefuellt werden"); break; default: errorText = tr("Ein Fehler ist aufgetreten."); break; } // Append the error number errorText.append(tr("\n(Fehlernummer: ") + QString::number(number) + tr(")\n")); return errorText; } tipp10-2.1.0/widget/errormessage.h000066400000000000000000000046011274324046000167640ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the ErrorMessage class ** File name: errormessage.h ** ****************************************************************/ #ifndef ERRORMESSAGE_H #define ERRORMESSAGE_H #include #include //! The ErrorMessage class provides an error message. /*! The ErrorMessage class puts different parameters together to a full error message. @author Tom Thielicke, s712715 @version 0.0.3 @date 02.07.2006 */ class ErrorMessage : public QWidget { Q_OBJECT public: //! Empty constructor. /*! @param parent The parent QWidget */ ErrorMessage(QWidget *parent = 0); //! Shows a message window /*! This function puts different parameters together using the functions getCancelText() and getErrorText. After that ist shows the message on the screen. @param errorNo Number of the error @param errorType Number of the message type @param cancelProcedure Number of an additional cancel text @param addon Free text to apend it on the message text @see getCancelText(), getErrorText() */ void showMessage(int errorNo, int errorType, int cancelProcedure, QString addon = ""); private: //! Selects the corresponding cancel text of the cancel text number /*! @param number Number of the cancel text @return Corresponding cancel text */ QString getCancelText(int number); //! Selects the corresponding error text of the error text number /*! @param number Number of the error text @return Corresponding error text */ QString getErrorText(int number); }; #endif //ERRORMESSAGE_H tipp10-2.1.0/widget/evaluationwidget.cpp000066400000000000000000000333461274324046000202040ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the EvaluationWidget class ** File name: evaluationwidget.cpp ** ****************************************************************/ #include #include #include "evaluationwidget.h" EvaluationWidget::EvaluationWidget(int row, int type, QList charList, QList mistakeList, QWidget *parent) : QWidget(parent) { currentRow = row; // Set the logo companyLogo = new CompanyLogo(this); // Create tab widget tabEvaluation = new QTabWidget(this); // Object of the user's lesson table lessonTableSql = new LessonTableSql(row, type, charList, mistakeList, this); // Object of the user's char table charTableSql = new CharTableSql(this); // Object of the progression chart widget progressionWidget = new ProgressionWidget(this); // Object of the finger error rate chart widget fingerWidget = new FingerWidget(this); // Object of the comparison chart widget QWidget *comparisonContainer = new QWidget(); comparisonWidget = new QTextBrowser(comparisonContainer); QVBoxLayout *comparisonLayout = new QVBoxLayout; comparisonLayout->addWidget(comparisonWidget); comparisonContainer->setLayout(comparisonLayout); createComparisonTable(); if (row > 0) { lessonResult = new LessonResult(row, type, charList, mistakeList, this); tabEvaluation->addTab(lessonResult, tr("Bericht")); } // Add three tabs and insert the table objects tabEvaluation->addTab(lessonTableSql, tr("Lektionenuebersicht")); tabEvaluation->addTab(progressionWidget, tr("Lektionenverlauf")); tabEvaluation->addTab(charTableSql, tr("Schriftzeichen")); tabEvaluation->addTab(fingerWidget, tr("Finger")); tabEvaluation->addTab(comparisonContainer, tr("Vergleichstabelle")); // Create exit (ready) button createButtons(); // Set the layout of all widgets above createLayout(); // Button connection to private slot clickReady() connect(buttonReady, SIGNAL(clicked()), this, SLOT(clickReady())); connect(buttonHelp, SIGNAL(clicked()), this, SLOT(showHelp())); // Set focus on button //buttonReady->setFocus(); } void EvaluationWidget::createButtons() { // Default button "Ready" buttonHelp = new QPushButton(tr("&Hilfe")); buttonReady = new QPushButton(tr("&Fertig")); buttonReady->setDefault(true); } void EvaluationWidget::createLayout() { // Button layout horizontal QHBoxLayout *buttonLayoutHorizontal = new QHBoxLayout; buttonLayoutHorizontal->addWidget(buttonHelp); buttonLayoutHorizontal->addWidget(buttonReady); // Button layout vertical QVBoxLayout *buttonLayoutVertical = new QVBoxLayout; buttonLayoutVertical->addSpacing(20); buttonLayoutVertical->addLayout(buttonLayoutHorizontal); // Logo layout vertical QVBoxLayout *logoLayout = new QVBoxLayout; logoLayout->addSpacing(10); logoLayout->addWidget(companyLogo); // Logo layout + button layout horizontal QHBoxLayout *bottomLayout = new QHBoxLayout; bottomLayout->addLayout(logoLayout); bottomLayout->addStretch(1); bottomLayout->addLayout(buttonLayoutVertical); // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(tabEvaluation); mainLayout->addSpacing(1); mainLayout->addLayout(bottomLayout); mainLayout->setMargin(15); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void EvaluationWidget::clickReady() { // User finished the evaluation // -> emit a ready signal emit readyClicked(); } void EvaluationWidget::showHelp() { QString ahref = ""; int tab = tabEvaluation->currentIndex(); if (currentRow <= 0) { tab++; } switch (tab) { case 0: ahref = "#registerreport"; break; case 1: ahref = "#registerlessons"; break; case 2: ahref = "#registerprogression"; break; case 3: ahref = "#registerchars"; break; case 4: ahref = "#fingerrates"; break; case 5: ahref = "#registercomparison"; break; } helpBrowser = new HelpBrowser("results.html" + ahref, 0); helpBrowser->show(); } void EvaluationWidget::createComparisonTable() { QString content; content = "" "
" "
" " 
" + tr("Beispielbewertungen") + "" "
" "
" + tr("Beachten Sie, dass langsames Tippen ohne Fehler bessere Bewertungen hervorruft, als schnelles Tippen mit vielen Fehlern!") + "
" "
" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "
" "" + tr("Bewertung") + "" "" "" + tr("Entspricht zum Beispiel ...") + "" "" "" + tr("Leistung") + "" "
" "0 " + tr("Punkte") + "" "" "20 " + tr("A/min und") + " 16 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "" "" + tr("Ohne Erfahrung im Zehnfingersystem") + "" "
" "5 " + tr("Punkte") + "" "" "20 " + tr("A/min und") + " 2 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "
" "8 " + tr("Punkte") + "" "" "20 " + tr("A/min und") + " 0 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "
" "9 " + tr("Punkte") + "" "" "30 " + tr("A/min und") + " 2 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "" "" + tr("Erste Erfahrungen im Zehnfingersystem") + "" "
" "13 " + tr("Punkte") + "" "" "40 " + tr("A/min und") + " 2 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "
" "16 " + tr("Punkte") + "" "" "40 " + tr("A/min und") + " 0 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "
" "17 " + tr("Punkte") + "" "" "50 " + tr("A/min und") + " 2 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "" "" + tr("Fortgeschritten") + "" "
" "25 " + tr("Punkte") + "" "" "70 " + tr("A/min und") + " 2 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "
" "32 " + tr("Punkte") + "" "" "80 " + tr("A/min und") + " 0 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "
" "35 " + tr("Punkte") + "" "" "100 " + tr("A/min und") + " 3 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "" "" + tr("Brauchbare Leistung") + "" "
" "37 " + tr("Punkte") + "" "" "100 " + tr("A/min und") + " 2 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "
" "45 " + tr("Punkte") + "" "" "120 " + tr("A/min und") + " 2 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "
" "48 " + tr("Punkte") + "" "" "120 " + tr("A/min und") + " 0 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "" "" + tr("Sehr gute Leistung") + "" "
" "53 " + tr("Punkte") + "" "" "140 " + tr("A/min und") + " 2 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "
" "69 " + tr("Punkte") + "" "" "180 " + tr("A/min und") + " 2 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "
" "77 " + tr("Punkte") + "" "" "200 " + tr("A/min und") + " 2 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "" "" + tr("Hervorragende Leistung") + "" "
" "86 " + tr("Punkte") + "" "" "200 " + tr("A/min und") + " 1 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "
" "110 " + tr("Punkte") + "" "" "220 " + tr("A/min und") + " 1 " + tr("Fehler in") + " 5 " + tr("Minuten") + "" "
" "
 " "
" "
"; comparisonWidget->viewport()->setAutoFillBackground(false); comparisonWidget->setHtml(content); } tipp10-2.1.0/widget/evaluationwidget.h000066400000000000000000000112321274324046000176370ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the EvaluationWidget class ** File name: evaluationwidget.h ** ****************************************************************/ #ifndef EVALUATIONWIDGET_H #define EVALUATIONWIDGET_H #include #include #include #include #include #include #include "companylogo.h" #include "def/defines.h" #include "progressionwidget.h" #include "fingerwidget.h" #include "sql/chartablesql.h" #include "sql/lessontablesql.h" #include "lessonresult.h" #include "helpbrowser.h" //! The EvaluationWidget class provides a user evaluation widget. /*! The EvaluationWidget class has two tabs. The first tab shows the evaluation of the lessons the user completed. It includes an object of the class LessonTable (which provides a table of all lessons). The second tab shows the evaluation of all chars the user typed. It includes an object of the class CharTable (which provides a table of all chars and their errors). A button in the right bottom corner enables the user to close the widget. @author Tom Thielicke, s712715 @version 0.0.2 @date 10.06.2006 */ class EvaluationWidget : public QWidget { // Necessary to create own signals, slots and connections Q_OBJECT public: //! Constructor, creates two table objects and provide it in two tabs. /*! In this contructor several objects are created. First the company logo in orange (companyLogo), a tab widget (tabEvaluation) and two evaluation tables (lessonTable and charTable). Everyone of these tables are inserted in an own tab. At the end a button is created with function createButtons() and a layout is defined with function createLayout(). The button will be connected to slot clickReady(). @param row The row id of current lesson @param parent The parent QWidget @see createButtons(), createLayout(), clickReady(), companyLogo, tabEvaluation, lessonTable, charTable, buttonReady */ EvaluationWidget(int row, int type, QList charList, QList mistakeList, QWidget *parent = 0); signals: //! Signal, emits that the user has finished the evaluation. /*! After the user clicked the ready button, the function clickReady() emits this signal to inform the parent class about user finished. */ void readyClicked(); private slots: //! Slot, connected with the clicked() function of the ready button. /*! After the user pushed the ready button, this function emits the signal readyClicked() to inform the parent class about user finished. */ void clickReady(); //! Slot, shows the help dialog. /*! This slot shows the help dialog. It creates an object of the QDialog class with an QTextbrowser. */ void showHelp(); private: //! Creates a ready button that the user can exit from this widget. void createButtons(); //! Creates the layout of the complete class. void createLayout(); void createComparisonTable(); //! Ready button. QPushButton *buttonReady; QPushButton *buttonHelp; //! Tab widget QTabWidget *tabEvaluation; //! Object of the company logo widget CompanyLogo *companyLogo; //! Object of the table with user's lessons LessonTableSql *lessonTableSql; //! Object of the table with user's chars CharTableSql *charTableSql; //! Object of the table with user's chars LessonResult *lessonResult; //! Object of the widget with the progression chart ProgressionWidget *progressionWidget; //! Object of the widget with the finger error rate chart FingerWidget *fingerWidget; //! Object of the widget with the comparison table QTextBrowser *comparisonWidget; //! Object of the help browser dialog HelpBrowser *helpBrowser; int currentRow; }; #endif // EVALUATIONWIDGET_H tipp10-2.1.0/widget/fingerwidget.cpp000066400000000000000000000324341274324046000173040ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the FingerWidget class ** File name: fingerwidget.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include #include #include #include "fingerwidget.h" FingerWidget::FingerWidget(QWidget *parent) : QWidget(parent) { // Get language #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); languageGui = settings.value("language_gui", APP_STD_LANGUAGE_GUI).toString(); languageLayout = settings.value("language_layout", APP_STD_LANGUAGE_LAYOUT).toString(); settings.endGroup(); getChartValues(); fingerSelected = -1; setMouseTracking(true); } void FingerWidget::getChartValues() { QSqlQuery query; double ratePrevious; int currentRank; double rateTemp; QString rateTempString; fingerRates.clear(); fingerOccurs.clear(); fingerErrors.clear(); fingerRanks.clear(); fingerX1.clear(); fingerY1.clear(); fingerX2.clear(); fingerY2.clear(); for (int i = 0; i < 9; i++) { fingerRates.append(0); fingerOccurs.append(0); fingerErrors.append(0); fingerRanks.append(0); fingerX1.append(0); fingerY1.append(0); fingerX2.append(0); fingerY2.append(0); } // SQL: all lessons sorted by id and a left joint to the number of // lessons done by the user if (!query.exec("SELECT keyboard_grids.finger, " "SUM(user_chars.user_char_target_errornum), " "SUM(user_chars.user_char_occur_num), " "((SUM(user_chars.user_char_target_errornum) * 1.0) / " "(SUM(user_chars.user_char_occur_num) * 1.0)) * 100.0 " "FROM user_chars " "LEFT JOIN keyboard_layouts ON " "keyboard_layouts.unicode = user_chars.user_char_unicode AND " "keyboard_layouts.layout = '" + languageLayout + "' " "LEFT JOIN keyboard_grids ON " "keyboard_grids.key = keyboard_layouts.grid AND " "keyboard_grids.layout_country = '" + languageLayout.left(2) + "' " "WHERE user_char_occur_num > 0 " "GROUP BY keyboard_grids.finger " "ORDER BY " "((SUM(user_chars.user_char_target_errornum) * 1.0) / " "(SUM(user_chars.user_char_occur_num) * 1.0)) * 100.0 DESC " ";")) { return; } // Read all datasets to list items ratePrevious = -1; currentRank = 9; // Real: 0-8 while (query.next()) { if (query.value(0).toInt() < 0 || query.value(0).toInt() > 8) { break; } if (ratePrevious != query.value(3).toDouble()) { currentRank--; } if (query.value(3).toDouble() == 0) { fingerRanks[query.value(0).toInt()] = 0; } else { fingerRanks[query.value(0).toInt()] = currentRank; } ratePrevious = query.value(3).toDouble(); fingerOccurs[query.value(0).toInt()] = (query.value(2).toInt()); fingerErrors[query.value(0).toInt()] = (query.value(1).toInt()); rateTemp = query.value(3).toDouble(); rateTempString.sprintf("%.0f", rateTemp); fingerRates[query.value(0).toInt()] = (rateTempString.toInt()); } fingerNames << QObject::tr("Kleiner Finger links") << QObject::tr("Ringfinger links") << QObject::tr("Mittelfinger links") << QObject::tr("Zeigefinger links") << QObject::tr("Zeigefinger rechts") << QObject::tr("Mittelfinger rechts") << QObject::tr("Ringfinger rechts") << QObject::tr("Kleiner Finger rechts") << QObject::tr("Daumen"); update(); } void FingerWidget::paintEvent(QPaintEvent *event) { double currentPos; double additionalWidth; for (int i = 0; i < 9; i++) { if (i == 8) { currentPos = 4.0; additionalWidth = (((double) this->width() - 40.0) / 10.0); } else { if (i > 3) { currentPos = (double) i + 2.0; } else { currentPos = (double) i; } additionalWidth = 0.0; } fingerX1[i] = 20.0 + (currentPos * (((double) this->width() - 40.0) / 10.0)); fingerX2[i] = 20.0 + (currentPos * (((double) this->width() - 40.0) / 10.0)) + (((double) this->width() - 40.0) / 10.0) + additionalWidth - 4.0; fingerY1[i] = ((double) this->height() / 2.0) - 96.0; fingerY2[i] = (double) this->height() - 50.0; } drawHeadline(); drawFingers(); } void FingerWidget::mouseMoveEvent(QMouseEvent *event) { fingerSelected = -1; for (int x = 0; x < 9; x++) { if ((double) event->pos().x() > fingerX1[x] && (double) event->pos().x() < fingerX2[x] && (double) event->pos().y() > fingerY1[x] && (double) event->pos().y() < fingerY2[x]) { fingerSelected = x; } } repaint(); } void FingerWidget::drawFinger(int currentFinger, double currentPos, double widgetLeft, double widgetTop, double currentTop, double currentWidth, double widgetHeight, double xUnit) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_FINGER)); QPen pen((fingerSelected == currentFinger ? QColor(255, 255, 255) : QColor(249, 126, 50)), 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin); painter.setPen(pen); int startAngle = 30 * 16; int spanAngle = 120 * 16; painter.drawArc(QRectF(widgetLeft + (xUnit * currentPos) + 10.0, currentTop, currentWidth, 2.0 * currentWidth), startAngle, spanAngle); painter.drawLine(QLineF(widgetLeft + (xUnit * currentPos) + 10.0 + (currentWidth / 15.0), currentTop + (currentWidth / 2.0), widgetLeft + (xUnit * currentPos) + 10.0 + (currentWidth / 15.0), widgetTop + widgetHeight - 80.0)); painter.drawLine(QLineF(widgetLeft + (xUnit * currentPos) + currentWidth + 10.0 - (currentWidth / 15.0), currentTop + (currentWidth / 2.0), widgetLeft + (xUnit * currentPos) + currentWidth + 10.0 - (currentWidth / 15.0), widgetTop + widgetHeight - 80.0)); painter.setPen(QColor(fingerRanks.at(currentFinger) * 27, fingerRanks.at(currentFinger) * 14, fingerRanks.at(currentFinger) * 5)); painter.drawText(QRectF(widgetLeft + (xUnit * currentPos) + 10.0, currentTop - 26.0, currentWidth, 20.0), Qt::AlignCenter | Qt::AlignBottom, QString::number(fingerRates.at(currentFinger)) + " %"); } void FingerWidget::drawHeadline() { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); painter.setPen(QColor(0, 0, 0)); painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_FINGER, 75)); painter.drawText(QRectF(20.0, 30.0, (double) this->width() - 40.0, 20.0), Qt::AlignCenter | Qt::AlignBottom, tr("Fehlerquoten der Finger")); painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_PROGRESS)); painter.drawText(QRectF(20.0, (double) this->height() - 34.0, (double) this->width() - 40.0, 16.0), Qt::AlignCenter | Qt::AlignBottom, tr("Die Fehlerquoten werden aus den " "Schriftzeichen und dem aktuell gewaehlten " "Tastaturlayout berechnet.")); if (fingerSelected != -1) { drawTooltip(&painter, fingerX1[fingerSelected] + ((fingerX2[fingerSelected] - fingerX1[fingerSelected]) / 2.0) - 4.0, fingerY1[fingerSelected] - 74.0, fingerNames[fingerSelected] + "\n" + tr("Fehlerquote:") + " " + QString::number(fingerRates[fingerSelected]) + tr(" %") + "\n" + tr("Vorkommen:") + " " + QString::number(fingerOccurs[fingerSelected]) + "\n" + tr("Fehler:") + " " + QString::number(fingerErrors[fingerSelected])); } } void FingerWidget::drawTooltip(QPainter *painter, double x, double y, QString message) { double yOffset = -4.0; double newX = x; if (x < 72) { newX = 72; } if (x > ((double) this->width() - 74.0)) { newX = (double) this->width() - 74.0; } painter->setRenderHint(QPainter::Antialiasing, false); painter->setFont(QFont(FONT_STANDARD, FONT_SIZE_PROGRESS)); painter->setPen(QColor(0, 0, 0)); painter->setBrush(QColor(255, 255, 255)); painter->drawRect(QRectF(newX - 70.0, y + yOffset, 140.0, 66.0)); painter->drawText(QRectF(newX - 70.0, y + yOffset, 140.0, 66.0), Qt::AlignCenter | Qt::AlignVCenter, message); } void FingerWidget::drawFingers() { int currentFinger; double currentPos; double currentTop; double currentWidth; double widgetLeft = 10.0; double widgetTop = 30.0; double widgetWidth = (double) this->width() - 40.0; double widgetHeight = (double) this->height(); double xUnit = widgetWidth / 10.0; currentFinger = 0; currentPos = 0.0; currentTop = widgetTop + (widgetHeight / 2.0) - 20.0; currentWidth = xUnit - 2.0; drawFinger(currentFinger, currentPos, widgetLeft, widgetTop, currentTop, currentWidth, widgetHeight, xUnit); currentFinger = 1; currentPos = 1.0; currentTop = widgetTop + (widgetHeight / 2.0) - 90.0; currentWidth = xUnit - 2.0; drawFinger(currentFinger, currentPos, widgetLeft, widgetTop, currentTop, currentWidth, widgetHeight, xUnit); currentFinger = 2; currentPos = 2.0; currentTop = widgetTop + (widgetHeight / 2.0) - 110.0; currentWidth = xUnit - 2.0; drawFinger(currentFinger, currentPos, widgetLeft, widgetTop, currentTop, currentWidth, widgetHeight, xUnit); currentFinger = 3; currentPos = 3.0; currentTop = widgetTop + (widgetHeight / 2.0) - 70.0; currentWidth = xUnit - 2.0; drawFinger(currentFinger, currentPos, widgetLeft, widgetTop, currentTop, currentWidth, widgetHeight, xUnit); currentFinger = 8; currentPos = 4.0; currentTop = widgetTop + (widgetHeight / 2.0) + 70.0; currentWidth = xUnit - 2.0; drawFinger(currentFinger, currentPos, widgetLeft, widgetTop, currentTop, currentWidth, widgetHeight, xUnit); currentFinger = 8; currentPos = 5.0; currentTop = widgetTop + (widgetHeight / 2.0) + 70.0; currentWidth = xUnit - 2.0; drawFinger(currentFinger, currentPos, widgetLeft, widgetTop, currentTop, currentWidth, widgetHeight, xUnit); currentFinger = 4; currentPos = 6.0; currentTop = widgetTop + (widgetHeight / 2.0) - 70.0; currentWidth = xUnit - 2.0; drawFinger(currentFinger, currentPos, widgetLeft, widgetTop, currentTop, currentWidth, widgetHeight, xUnit); currentFinger = 5; currentPos = 7.0; currentTop = widgetTop + (widgetHeight / 2.0) - 110.0; currentWidth = xUnit - 2.0; drawFinger(currentFinger, currentPos, widgetLeft, widgetTop, currentTop, currentWidth, widgetHeight, xUnit); currentFinger = 6; currentPos = 8.0; currentTop = widgetTop + (widgetHeight / 2.0) - 90.0; currentWidth = xUnit - 2.0; drawFinger(currentFinger, currentPos, widgetLeft, widgetTop, currentTop, currentWidth, widgetHeight, xUnit); currentFinger = 7; currentPos = 9.0; currentTop = widgetTop + (widgetHeight / 2.0) - 20.0; currentWidth = xUnit - 2.0; drawFinger(currentFinger, currentPos, widgetLeft, widgetTop, currentTop, currentWidth, widgetHeight, xUnit); } tipp10-2.1.0/widget/fingerwidget.h000066400000000000000000000046441274324046000167530ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the FingerWidget class ** File name: fingerwidget.h ** ****************************************************************/ #ifndef FINGERWIDGET_H #define FINGERWIDGET_H #include #include #include #include #include #include #include "def/defines.h" //! The FingerWidget class provides a finger error rate chart. /*! @author Tom Thielicke, s712715 @version 0.0.2 @date 16.12.2010 */ class FingerWidget : public QWidget { // Necessary to create own signals, slots and connections Q_OBJECT public: FingerWidget(QWidget *parent = 0); protected: //! Paintevent, draws current view of the chart. void paintEvent(QPaintEvent *event); void mouseMoveEvent(QMouseEvent *event); private: void getChartValues(); void drawHeadline(); void drawFingers(); void drawFinger(int currentFinger, double currentPos, double widgetLeft, double widgetTop, double currentTop, double currentWidth, double widgetHeight, double xUnit); void drawTooltip(QPainter *painter, double x, double y, QString message); QList fingerOccurs; QList fingerErrors; QList fingerRanks; QList fingerRates; QList fingerX1; QList fingerX2; QList fingerY1; QList fingerY2; QString languageGui; QString languageLayout; int fingerSelected; QStringList fingerNames; }; #endif // FINGERWIDGET_H tipp10-2.1.0/widget/helpbrowser.cpp000066400000000000000000000114651274324046000171630ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the HelpBrowser class ** File name: helpbrowser.cpp ** ****************************************************************/ #include #include #include #include #include #include #include "helpbrowser.h" #include "def/defines.h" HelpBrowser::HelpBrowser(QString link, QWidget *parent) : QDialog(parent) { setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint); setWindowTitle(tr("Hilfe")); setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME))); //setModal(false); readSettings(); // Create buttons createButtons(); textBrowser = new QTextBrowser(this); textBrowser->setOpenExternalLinks(true); textBrowser->setSource(QString("file:///") + QCoreApplication::applicationDirPath() + QString("/help/") + language + QString("/index.html")); if (link != "") { textBrowser->setSource(QString("file:///") + QCoreApplication::applicationDirPath() + QString("/help/") + language + QString("/content/") + link); } // Set the layout of all widgets created above createLayout(); // Widget connections connect(buttonClose, SIGNAL(clicked()), this, SLOT(clickClose())); connect(buttonBack, SIGNAL(clicked()), textBrowser, SLOT(backward())); connect(buttonHome, SIGNAL(clicked()), textBrowser, SLOT(home())); connect(buttonPrint, SIGNAL(clicked()), this, SLOT(clickPrint())); connect(textBrowser, SIGNAL(sourceChanged(QUrl)), this, SLOT(changePage(QUrl))); connect(textBrowser, SIGNAL(backwardAvailable(bool)), buttonBack, SLOT(setEnabled(bool))); setWindowTitle(tr("Hilfe")); setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME))); buttonClose->setFocus(); resize(790, 570); } void HelpBrowser::createButtons() { //Buttons buttonBack = new QPushButton(QIcon(":/img/help_arrow_left.png"), tr(" Zurueck")); buttonBack->setEnabled(false); buttonHome = new QPushButton(QIcon(":/img/help_home.png"), tr(" Inhaltsverzeichnis")); buttonClose = new QPushButton(tr("&Schliessen")); buttonClose->setDefault(true); buttonPrint = new QPushButton(QIcon(":/img/help_print.png"), tr(" Seite &drucken")); } void HelpBrowser::createLayout() { // Button layout horizontal QHBoxLayout *buttonLayoutTop = new QHBoxLayout; buttonLayoutTop->addWidget(buttonBack); buttonLayoutTop->addWidget(buttonHome); buttonLayoutTop->addStretch(1); buttonLayoutTop->addWidget(buttonPrint); // Center layout horizontal QHBoxLayout *layoutHorizontal = new QHBoxLayout; layoutHorizontal->addSpacing(1); layoutHorizontal->addWidget(textBrowser); layoutHorizontal->addSpacing(1); // Button layout horizontal QHBoxLayout *buttonLayoutBottom = new QHBoxLayout; buttonLayoutBottom->addStretch(1); buttonLayoutBottom->addWidget(buttonClose); // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(buttonLayoutTop); mainLayout->addLayout(layoutHorizontal); mainLayout->addSpacing(1); mainLayout->addLayout(buttonLayoutBottom); mainLayout->setMargin(15); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void HelpBrowser::clickClose() { accept(); } void HelpBrowser::clickPrint() { QPrinter printer; QPrintDialog *dialog = new QPrintDialog(&printer, this); dialog->setWindowTitle(tr("Seite drucken")); if (dialog->exec() != QDialog::Accepted) return; textBrowser->print(&printer); } void HelpBrowser::changePage(QUrl url) { //this->setWindowTitle(url.toString()); } void HelpBrowser::readSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); language = settings.value("language_gui", APP_STD_LANGUAGE_GUI).toString(); settings.endGroup(); } tipp10-2.1.0/widget/helpbrowser.h000066400000000000000000000050611274324046000166230ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the HelpBrowser class ** File name: helpbrowser.h ** ****************************************************************/ #ifndef HELPBROWSER_H #define HELPBROWSER_H #include #include #include #include #include #include //! The HelpBrowser class provides a program settings widget. /*! The HelpBrowser class shows three program settings. Setting the layout of the virtual keyboard, setting the ticker speed and font and doing a reset of the user tables. @author Tom Thielicke, s712715 @version 0.0.3 @date 18.06.2006 */ class HelpBrowser : public QDialog { Q_OBJECT public: //! Constructor, creates two table objects and provide it in two tabs. /*! In this contructor three groups are created over functions createGroupKeyboardLayout(), createGroupUserReset() and createGroupTickerFont(). In addition, standard settings are read, standard font is set and connections are set. @param parent The parent QWidget @see createGroupKeyboardLayout(), createGroupUserReset(), createGroupTickerFont(), readSettings(), tickerFont */ HelpBrowser(QString link, QWidget *parent = 0); public slots: private slots: //! Start button pressed void clickClose(); void clickPrint(); void changePage(QUrl url); private: //! Creates a cancel and a save button. void createButtons(); //! Creates the layout of the complete class. void createLayout(); //! Reads all user settings. void readSettings(); QPushButton *buttonClose; QPushButton *buttonBack; QPushButton *buttonHome; QTextBrowser *textBrowser; QPushButton *buttonPrint; QString language; }; #endif //HELPBROWSER_H tipp10-2.1.0/widget/illustrationdialog.cpp000066400000000000000000000175221274324046000205400ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the IllustrationDialog class ** File name: illustrationdialog.cpp ** ****************************************************************/ #include #include #include #include #include #include #include "illustrationdialog.h" #include "def/errordefines.h" #include "errormessage.h" #include "def/defines.h" IllustrationDialog::IllustrationDialog(QWidget *parent) : QDialog(parent) { setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint); setWindowTitle(tr("Einfuehrung")); setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME))); readSettings(); createContent(); createButtons(); // Set the layout of all widgets created above createLayout(); buttonStart->setFocus(); resize(570, 400); } void IllustrationDialog::createContent() { QString content; content = "" "
" "
" "
" " 
" "
" "
" "
" "
" "" + tr("Willkommen zu TIPP10") + "" "
" "
" "
" + tr("TIPP10 ist ein kostenloser 10-Finger-Schreibtrainer fuer Windows, Mac OS " "und Linux. Die Software arbeitet intelligent - Schriftzeichen, die haeufig " "falsch getippt werden, werden auch sofort haeufiger diktiert. " "So laesst sich das Zehnfingersystem schnell und effizient erlernen.") + "
" "
" "" + tr("Tipps zur Anwendung des Zehnfingersystems") + "" "
" "
" + tr("1. Die Finger nehmen zunaechst die Grundstellung ein " "(sie wird auch zu Beginn jeder Lektion angezeigt). " "Nach jedem Tippen einer Taste kehren die Finger in die Grundstellung " "zurueck.") + "
" "
" "" "
" "
" + tr("2. Nehmen Sie eine aufrechte Haltung ein und vermeiden Sie es in jedem " "Fall auf die Tastatur zu sehen. Ihr Blick sollte stets auf den " "Bildschirm gerichtet sein.") + "
" "
" + tr("3. Legen Sie die Oberarme am Koerper an und lassen Sie die Schultern " "haengen. Die Unterarme bilden einen rechten Winkel zu den Oberarmen. " "Legen Sie die Handgelenke nicht ab und lassen Sie sie nicht durchhaengen.") + "
" "
" + tr("4. Bleiben Sie waehrend des Schreibtrainings entspannt.") + "
" "
" + tr("5. Versuchen Sie moeglichst fehlerfrei zu tippen. Es ist deutlich ineffizienter " "schnell zu tippen, wenn Sie dabei viele Fehler machen.") + "
" "
" + tr("6. Einmal mit dem Zehnfingersystem angefangen, sollten Sie es tunlichst " "vermeiden wieder zu Ihrem \"alten System\" zurueck zu wechseln (auch " "wenn es mal schnell gehen muss).") + "
" "
" + tr("Bei Fragen rund um die Bedienung der Software rufen Sie bitte die " "Hilfe auf oder besuchen Sie die Internetseite") + " http://www.tipp10.de. " + tr("Dort finden Sie auch praktische Tipps und Hintergrundinformationen.") + "
" "
" "" "
" "
" "© Tom Thielicke IT Solutions
" "http://www.thielicke.org

" + tr("Alle Rechte vorbehalten.") + "
 " "
" "
"; illustrationContent = new QTextBrowser(); illustrationContent->setHtml(content); illustrationContent->setOpenExternalLinks(true); } void IllustrationDialog::createButtons() { //Buttons buttonStart = new QPushButton(this); buttonStart->setText(tr("TIPP10 &starten")); buttonStart->setDefault(true); // Widget connections connect(buttonStart, SIGNAL(clicked()), this, SLOT(clickStart())); showDialogCheck = new QCheckBox(tr("Dieses &Fenster nicht mehr anzeigen")); } void IllustrationDialog::createLayout() { // Button layout horizontal QHBoxLayout *layoutHorizontal = new QHBoxLayout; layoutHorizontal->addSpacing(1); layoutHorizontal->addWidget(illustrationContent, 1); layoutHorizontal->addSpacing(1); // Button layout horizontal QHBoxLayout *buttonLayoutHorizontal = new QHBoxLayout; buttonLayoutHorizontal->addStretch(1); buttonLayoutHorizontal->addWidget(showDialogCheck); buttonLayoutHorizontal->addSpacing(8); buttonLayoutHorizontal->addWidget(buttonStart); // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(layoutHorizontal); mainLayout->addSpacing(1); mainLayout->addLayout(buttonLayoutHorizontal); mainLayout->setMargin(15); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void IllustrationDialog::clickStart() { writeSettings(); accept(); } void IllustrationDialog::writeSettings() { // Saves settings of the widget // (uses the default constructor of QSettings, passing // the application and company name see main function) #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); settings.setValue("check_illustration", !showDialogCheck->isChecked()); settings.endGroup(); } void IllustrationDialog::readSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); languageGui = settings.value("language_gui", APP_STD_LANGUAGE_GUI).toString(); settings.endGroup(); } tipp10-2.1.0/widget/illustrationdialog.h000066400000000000000000000045721274324046000202060ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the SettingDialog class ** File name: illustrationdialog.h ** ****************************************************************/ #ifndef ILLUSTRATIONDIALOG_H #define ILLUSTRATIONDIALOG_H #include #include #include #include #include #include //! The IllustrationDialog class provides a program settings widget. /*! The IllustrationDialog class shows three program settings. Setting the layout of the virtual keyboard, setting the ticker speed and font and doing a reset of the user tables. @author Tom Thielicke, s712715 @version 0.0.3 @date 18.06.2006 */ class IllustrationDialog : public QDialog { Q_OBJECT public: //! Constructor, creates an illustration widget. /*! @param parent The parent QWidget */ IllustrationDialog(QWidget *parent = 0); public slots: private slots: //! Start button pressed void clickStart(); private: //! Creates a cancel and a save button. void createButtons(); //! Creates content widget void createContent(); //! Creates the layout of the complete class. void createLayout(); //! Writes user settings void writeSettings(); //! Reads user settings void readSettings(); QString languageGui; QPushButton *buttonStart; QCheckBox *showDialogCheck; QTextBrowser *illustrationContent; }; #endif //ILLUSTRATIONDIALOG_H tipp10-2.1.0/widget/illustrationimage.cpp000066400000000000000000000045531274324046000203630ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the CompanyLogo class ** File name: illustrationimage.cpp ** ****************************************************************/ #include #include "illustrationimage.h" #include "def/defines.h" #include "def/errordefines.h" #include "errormessage.h" IllustrationImage::IllustrationImage(QString filename, QString version, QWidget *parent) : QWidget(parent) { imageName = filename; versionLabel = version; // Load the company logo if (!loadImage(filename)) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LOGO_PIC, TYPE_WARNING, CANCEL_OPERATION); } // Set widget size to image size (fixed) setFixedSize(image.width(), image.height()); setMinimumSize(image.width(), image.height()); } void IllustrationImage::paintEvent(QPaintEvent *revent) { QPainter painter(this); // Draw the image in the left top corner of the widget painter.drawImage(0, 0, image); if (imageName.left(5) == "about" && versionLabel != "") { #if APP_WIN painter.drawText(360, 10, 150, 100, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, versionLabel); #endif #if APP_MAC painter.drawText(340, 10, 150, 100, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, versionLabel); #endif #if APP_X11 painter.drawText(300, 10, 170, 100, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, versionLabel); #endif } } bool IllustrationImage::loadImage(QString filename) { // Load the image if (!image.load(":/img/" + filename)) { return false; } return true; } tipp10-2.1.0/widget/illustrationimage.h000066400000000000000000000055611274324046000200300ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the CompanyLogo class ** File name: illustrationimage.h ** ****************************************************************/ #ifndef ILLUSTRATIONIMAGE_H #define ILLUSTRATIONIMAGE_H #include #include #include #include //! The IllustrationImage class provides a company logo widget. /*! The IllustrationImage class loads a company image and provide it in a widget. By default a orange logo is load. If parameter white in contructor is true the logo is white (used not be an eye catcher while practice a lesson). @author Tom Thielicke, s712715 @version 0.0.4 @date 02.06.2006 */ class IllustrationImage : public QWidget { public: //! Constructor: loads the company logo and resizes the widget. /*! In this contructor the function loadLogo is called. If parameter white is set true a white logo will be loaded. At the end the widget size is set to the fixed size of the image. @param parent The parent QWidget @param white Flag to load a white or orange image @see loadLogo */ IllustrationImage(QString filename, QString version = "", QWidget *parent = 0); protected: //! Paintevent, draws the company logo. /*! The paintevent is called every time when the window changes. It draws the logo (that was loaded in variable logo) in the left top corner of the widget. @param event Event of the paint function @see logo */ void paintEvent(QPaintEvent *event); private: //! Loads the company image in a QImage object logo. /*! This function defines the file name of the logo and load it in the QImage object logo. If white is true the file name is "logo_white.png", if white is false the file name is "logo_orange.png". The files are located in the directory "img/". @param white Flag to load a white or orange image @return Bool value @see logo */ bool loadImage(QString filename); //! Object of the company logo. QImage image; QString imageName; QString versionLabel; }; #endif // ILLUSTRATIONIMAGE_H tipp10-2.1.0/widget/keyboard.cpp000066400000000000000000000315651274324046000164320ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the KeyBoard class ** File name: keyboard.cpp ** ****************************************************************/ #include #include #include #include #include "keyboard.h" #include "def/defines.h" #include "def/errordefines.h" #include "errormessage.h" KeyBoard::KeyBoard(QWidget *parent) : QWidget(parent) { // Read settings (keyboard layout and key coloring) readSettings(); // Load all images used in the keyboard loadKeyImages(); // Start flag isStarted = false; // Pause flag isPaused = false; // Flag whether the key properties where found keyLayoutFound = false; showErrorImage = false; // Default values activeKey = '0'; activeX = 0; activeY = 0; activeColor = 0; activeForm = 0; activeModifier = 0; activeFinger = 8; activeModifierX = 0; activeModifierY = 0; activeModifierColor = 0; activeModifierForm = 0; activeModifierFinger = 8; activeModifier2X = 0; activeModifier2Y = 0; activeModifier2Color = 0; activeModifier2Form = 0; activeModifier2Finger = 8; colorIndex[0] = 4; // yellow colorIndex[1] = 3; // green colorIndex[2] = 2; // blue colorIndex[3] = 1; // red colorIndex[4] = 0; // grey (no additional key) keyColors[0] = QColor(253,232,151); keyColors[1] = QColor(181,235,157); keyColors[2] = QColor(172,215,254); keyColors[3] = QColor(249,174,174); currentPen.setWidth(3); currentPen.setStyle(Qt::DotLine); // Sql class to get the key layout of a given char keyboardSql = new KeyboardSql(layout); // Fix the size of this class because of using fix sized images setFixedSize(610, 228); setAttribute(Qt::WA_NoSystemBackground); } void KeyBoard::startBoard() { // Turn start flag true isStarted = true; // Turn pause flag false isPaused = false; showErrorImage = false; // Call the paint event (refresh the keyboard) repaint(); } void KeyBoard::pauseBoard() { // Turn start flag false isStarted = false; // Turn pause flag true isPaused = true; // Call the paint event (refresh the keyboard) update(); } void KeyBoard::stopBoard() { // Turn start flag false isStarted = false; // Call the paint event (refresh the keyboard) update(); } void KeyBoard::paintEvent(QPaintEvent *event) { // Draw empty grey keyboard cleanKeyboard(); if (isStarted) { // Color current key and modifier colorKey(); } else { if (keyColoringStart) { // Color user's start position colorStart(); } } // Draw keyboard labeling drawLayout(); } void KeyBoard::loadKeyImages() { // Load background if (!loadImage(background, ":/img/keyboardbg.png")) { return; } // Keys // -> four different key colors for (int x = 0; x < 5; x++) { // -> six different key forms for (int y = 0; y < 9; y++) { // Load key if (!loadImage(keyImage[x][y], ":/img/key" + QString::number(x) + "_" + QString::number(y) + ".png")) { return; } } } // -> five different start key colors for (int y = 0; y < 5; y++) { // Load key if (!loadImage(keyImageStart[y], ":/img/key" + QString::number(y) + ".png")) { return; } } // Load key labeling if (!loadImage(keyLayout, ":/img/" + layout + ".png")) { return; } // Load keyboard border if (!loadImage(keyBorder, ":/img/keyboard_border.png")) { return; } } bool KeyBoard::loadImage(QPixmap &img, QString filename) { // Check whether loading the image is correct if (!img.load(filename)) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_KEY_PIC, TYPE_WARNING, CANCEL_OPERATION); return false; } return true; } void KeyBoard::cleanKeyboard() { int i; QPainter painter(this); // Background image painter.drawPixmap(0, 0, background); // Keys first row for (i = 0; i < 13; i++) { painter.drawPixmap(10 + (40 * i), 15, keyImage[0][0]); } painter.drawPixmap(530, 15, keyImage[0][5]); // Enter key QWERTZ; other QWERTY if (layout.left(2) != "us") { painter.drawPixmap(550, 55, keyImage[0][4]); } else { painter.drawPixmap(550, 55, keyImage[0][1]); } // Keys second row painter.drawPixmap(10, 55, keyImage[0][6]); for (i = 0; i < 12; i++) { painter.drawPixmap(70 + (40 * i), 55, keyImage[0][0]); } // Keys third row painter.drawPixmap(10, 95, keyImage[0][5]); if (keyColoringStart) { // Four keys left hand //COMAK-Release /*for (i = 4; i >= 0; i--) { if (i != 4 && i != activeFinger && i != activeModifierFinger) { painter.drawImage(80 + (40 * i), 95, keyImageStart[4 - i]); } else { if (i == 4 && (i - 1) != activeFinger && (i - 1) != activeModifierFinger) { painter.drawImage(80 + (40 * i), 95, keyImageStart[5 - i]); } else { painter.drawImage(80 + (40 * i), 95, keyImageStart[0]); } } }*/ //TIPP10 for (i = 3; i >= 0; i--) { if (i != activeFinger && i != activeModifierFinger && i != activeModifier2Finger) { painter.drawPixmap(80 + (40 * i), 95, keyImageStart[colorIndex[i]]); } else { painter.drawPixmap(80 + (40 * i), 95, keyImageStart[0]); } } painter.drawPixmap(80 + (40 * 4), 95, keyImage[0][0]); painter.drawPixmap(80 + (40 * 5), 95, keyImage[0][0]); for (i = 6; i < 10; i++) { if ((i - 2) != activeFinger && (i - 2) != activeModifierFinger && (i - 2) != activeModifier2Finger) { painter.drawPixmap(80 + (40 * i), 95, keyImageStart[colorIndex[9 - i]]); } else { painter.drawPixmap(80 + (40 * i), 95, keyImageStart[0]); } } painter.drawPixmap(80 + (40 * 10), 95, keyImage[0][0]); } else { for (i = 0; i < 11; i++) { painter.drawPixmap(80 + (40 * i), 95, keyImage[0][0]); } } // Enter key QWERTY; other QWERTZ if (layout.left(2) != "us") { painter.drawPixmap(80 + (40 * 11), 95, keyImage[0][0]); } else { painter.drawPixmap(80 + (40 * 11), 95, keyImage[0][7]); } // Keys fourth row if (layout.left(2) != "us") { painter.drawPixmap(10, 135, keyImage[0][1]); painter.drawPixmap(60, 135, keyImage[0][0]); } else { painter.drawPixmap(10, 135, keyImage[0][8]); } for (i = 1; i < 11; i++) { painter.drawPixmap(60 + (40 * i), 135, keyImage[0][0]); } painter.drawPixmap(500, 135, keyImage[0][2]); // Keys fifth row painter.drawPixmap(10, 175, keyImage[0][6]); painter.drawPixmap(70, 175, keyImage[0][0]); painter.drawPixmap(110, 175, keyImage[0][6]); painter.drawPixmap(170, 175, keyImage[0][3]); painter.drawPixmap(440, 175, keyImage[0][6]); painter.drawPixmap(500, 175, keyImage[0][0]); painter.drawPixmap(540, 175, keyImage[0][6]); } void KeyBoard::drawLayout() { QPainter painter(this); // Draw the labeling of the keyboard painter.drawPixmap(10, 15, keyLayout); // Draw the border of the keyboard if (keyDrawBorder) { painter.drawPixmap(270, 15, keyBorder); } } void KeyBoard::colorStart() { QPainter painter(this); if (keyColoring && !isPaused) { // User's startposition int i; // Four keys left hand for (i = 3; i >= 0; i--) { painter.drawPixmap(80 + (40 * i), 95, keyImageStart[colorIndex[i]]); } // Four keys right hand for (i = 6; i < 10; i++) { painter.drawPixmap(80 + (40 * i), 95, keyImageStart[colorIndex[9 - i]]); } } // Colored space key painter.drawPixmap(170, 175, keyImage[1][3]); } // Places the current colored keys void KeyBoard::colorKey() { QPainter painter(this); if (keyLayoutFound) { if (keyDrawPath) { int activeFingerTemp = activeFinger; if (activeFingerTemp > 3) { activeFingerTemp += 2; } currentPen.setColor(keyColors[4 - colorIndex[4 - activeColor]]); painter.setPen(currentPen); if ((activeY != 95 || activeX != (activeFingerTemp * 40)) && (activeY != 175 || activeX != 170)) { painter.drawLine(100 + (activeFingerTemp * 40), 115, activeX + 20, activeY + 20); } int activeModifierFingerTemp = activeModifierFinger; if (activeModifierFingerTemp > 3) { activeModifierFingerTemp += 2; } currentPen.setColor(keyColors[4 - colorIndex[4 - activeModifierColor]]); painter.setPen(currentPen); if (activeModifier != 0) { painter.drawLine(100 + (activeModifierFingerTemp * 40), 115, activeModifierX + 20, activeModifierY + 20); } int activeModifier2FingerTemp = activeModifier2Finger; if (activeModifier2FingerTemp > 3) { activeModifier2FingerTemp += 2; } currentPen.setColor(keyColors[4 - colorIndex[4 - activeModifier2Color]]); painter.setPen(currentPen); if (activeModifier2 != 0) { painter.drawLine(100 + (activeModifier2FingerTemp * 40), 115, activeModifier2X + 20, activeModifier2Y + 20); } } if (keyColoring) { // Color current key painter.drawPixmap(activeX, activeY, keyImage[colorIndex[4 - activeColor]][activeForm]); if (activeModifier != 0) { // Color current modifier painter.drawPixmap(activeModifierX, activeModifierY, keyImage[colorIndex[4 - activeModifierColor]][activeModifierForm]); } if (activeModifier2 != 0) { // Color current modifier painter.drawPixmap(activeModifier2X, activeModifier2Y, keyImage[colorIndex[4 - activeModifier2Color]][activeModifier2Form]); } } } } void KeyBoard::setErrorImage(QChar key) { if (errorImage.load(":/img/" + QString::number(key.unicode()) + ".png")) { /*errorImage = errorImage.scaledToHeight(40); for (int y = 0; y < errorImage.height(); ++y) { QRgb *row = (QRgb*)errorImage.scanLine(y); for (int x = 0; x < errorImage.width(); ++x) { ((unsigned char*)&row[x])[3] = 50; } }*/ showErrorImage = true; } } void KeyBoard::setKey(QChar key) { QString statusText = "0"; showErrorImage = false; // Check whether key is already colored and whether keyboard is started if (activeKey != key && isStarted) { activeModifierFinger = 8; activeModifier2Finger = 8; activeFinger = 8; // New current key activeKey = key; // Get the properties of the key if (keyboardSql->getKeyLayout(activeKey, &activeX, &activeY, &activeColor, &activeForm, &activeModifier, &activeModifier2, &activeFinger, &statusText)) { keyLayoutFound = true; if (activeModifier != 0) { // If there is also a modifier get the properties, too if (!keyboardSql->getModifierLayout(activeModifier, &activeModifierX, &activeModifierY, &activeModifierColor, &activeModifierForm, &activeModifierFinger, &statusText)) { activeModifier = 0; } } if (activeModifier2 != 0) { // If there is also a modifier get the properties, too if (!keyboardSql->getModifierLayout(activeModifier2, &activeModifier2X, &activeModifier2Y, &activeModifier2Color, &activeModifier2Form, &activeModifier2Finger, &statusText)) { activeModifier2 = 0; } } } else { // No properties were found keyLayoutFound = false; } // Emit the help text of current key(s) emit statusRefreshed(statusText); // Call the paint event (refresh the keyboard) if (keyColoring || keyColoringStart || keyDrawPath) { repaint(); } } } void KeyBoard::readSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); layout = settings.value("language_layout", APP_STD_LANGUAGE_LAYOUT).toString(); settings.endGroup(); // Check if key coloring is turned on settings.beginGroup("support"); keyColoring = settings.value("check_selection", true).toBool(); keyColoringStart = settings.value("check_selection_start", true).toBool(); keyDrawBorder = settings.value("check_border", true).toBool(); keyDrawPath = settings.value("check_path", true).toBool(); settings.endGroup(); } tipp10-2.1.0/widget/keyboard.h000066400000000000000000000264411274324046000160740ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the KeyBoard class ** File name: keyboard.h ** ****************************************************************/ #ifndef KEYBOARD_H #define KEYBOARD_H #include #include #include #include #include #include #include #include "../sql/keyboardsql.h" //! The KeyBoard class provides a virtuell keyboard widget. /*! The KeyBoard class normally receives the current key over slot setKey(). It then colors the current key if keyColoring is true. When a key is pressed the class receive the written char with a QKeyEvent and emits the char with signal keyPressed(). Start and stop the keyboard class with function startBoard and stopBoard. When the keyboard is stopped it colors the startposition(the eight keys where users fingers musst place on start) and the space key. Pause it with function pauseBoard. When the keyboard is paused ist colors only the space key. The store the properties of the current key and modifier and to access it every time over the paint event, private variables are used. @author Tom Thielicke, s712715 @version 0.1.6 @date 16.06.2006 */ class KeyBoard : public QWidget { // Necessary to create own signals, slots and connections Q_OBJECT public: //! Constructor: initializes variables, images, settings and sql class. /*! In this contructor the following variables are initialized: - isStarted = false - isPaused = false - keyLayoutFound = false - activeKey = '0' - activeX = 0 - activeY = 0 - activeColor = 0 - activeForm = 0 - activeModifier = 0 - activeModifierX = 0 - activeModifierY = 0 - activeModifierColor = 0 - activeModifierForm = 0 In addition, the settings are read over function readSettings() and all png image files are loaded over function loadKeyImages(). The widget is set to a fixed size because of using fix sized images. @param parent The parent QWidget @attention To ensure that the KeyEvent is acting it is very important that there is a strong focus on this widget @see readSettings(), loadKeyImages(), keyboardSql, isStarted, isPaused, keyLayoutFound, activeKey, activeX, activeY, activeColor, activeForm, activeModifier, activeModifierX, activeModifierY, activeModifierColor, activeModifierForm */ KeyBoard(QWidget *parent = 0); signals: //! Signal, emits the current text for the status bar. /*! This signal is used to transmit a help text for the status bar. It is used in the function setKey(). After a new key was successfully set, the functions getKeyLayout() and getModifierLayout() put a status text together which is then emitted over this signal. */ void statusRefreshed(QString statustext); public slots: //! Slot, sets the current char and refreshes the keyboard. /*! Only if parameter key is a different char than the current one and the flag isStarted is true, this function converts the key into properties and statustext of current key and modifier. After a successfully convertion update() is called to repaint the keyboard and the signal statusRefreshed() is emited. @pre Flag isStarted must be true @param key Unicode char of the current key @see activeKey, activeX, activeY, activeColor, activeForm, activeModifier, activeModifierX, activeModifierY, activeModifierColor, activeModifierForm */ void setKey(QChar key); void setErrorImage(QChar key); //! Slot, starts the keyboard. /*! This slot turns the flag isStarted to true and the flag isPaused to false. After that update() is called to repaint the keyboard. @see isStarted, isPaused */ void startBoard(); //! Slot, stops the keyboard. /*! This slot stops the keyboard by turning flag isStarted to false. After that update() is called to repaint the keyboard. @see isStarted */ void stopBoard(); //! Slot, pauses the keyboard. /*! This slot turns the flag isStarted to false and the flag isPaused to true. After that update() is called to repaint the keyboard. @see isStarted, isPaused */ void pauseBoard(); protected: //! Paintevent, draws current view of the keyboard with functions. /*! The paintevent is called every time when the window changes or the function update() is called. It first executes the function cleanKeyboard() to get a full grey board, after that it colors the current key and modifier over function colorKey() if flag isStarted is true. If not it calls instead the function colorStart() to show the startposition or a paused keyboard. At the end it excutes the function drawLayout() to give the keyboard its labeling. @param event Event of the paint function @see isStarted, cleanKeyboard(), colorKey(), colorStart(), drawLayout() */ void paintEvent(QPaintEvent *event); private: //! Puts the background and grey key images together to a keyboard. /*! This function places the preloaded background image and all grey key images to a full keyboard (without labels). This happens with fixed coordinates because the function is called always when the paintevent reacts. Loading the coordinates every time from the sql database would be very slow and it is not necessary because the keyboard layout is always fix (it doesn't make any difference wether the keyboard is an apple or windows board). The preloaded key images are located in the private QImage array keyImage[][] and the background image in the private QImage variable background. @see keyImage[][], background */ void cleanKeyboard(); //! Colors the current key and possibly the current modifier. /*! If flag keyColoring is true and a key layout was found (keyLayoutFound is true) this function draws the current key and possibly a modifier with the current properties. @pre flag keyLayoutFound is true and flag isColoring is true @see activeKey, activeX, activeY, activeColor, activeForm, activeModifier, activeModifierX, activeModifierY, activeModifierColor, activeModifierForm, keyImage[][] */ void colorKey(); //! Colors the start or the pause layout of the keyboard. /*! If flag keyColoring is true and flag isPaused is false this function draws the start postion for the user (the eight keys where users fingers musst place on start). At any rate it colors the space bar to show start or pause layout. @see keyColoring, isPaused, keyImage[][] */ void colorStart(); //! Sets the keyboard labeling. /*! This function draws the image loaded in variable keyLayout. It is necessary to set the image not until the full keyboard is drawn because the labeling could be covered. @see keyLayout */ void drawLayout(); //! Loads all images of the keyboard. /*! This function loads the background image, the key images (there are six different forms, every form has four different colors) and the labeling of the keyboard. To load the image the function loadImage() is used. The filenames of the keys are located in the directory "img/" and are labeled "key_x_y.png", where x (0-4) is the color and y (0-6) is the form of every key. The labeling of the full keyboard is defined in the file keylayout_win and keylayout_mac respectively. @see loadImage(), background, keyImage[][], keyLayout */ void loadKeyImages(); //! Loads an image. /*! This function loads the image filename to the QImage img. @param img The QImage which gets the image @param filename The file name of the image @return Bool value true if funtion succeeded */ bool loadImage(QPixmap &img, QString filename); //! Reads the keyboard layout and the key coloring settings. /*! This function checks whether the user has selected a windows or macintosh keyboard layout and if key coloring is turned on or off. @see opSystem, keyColoring */ void readSettings(); //! Holds the index (the order) of the key colors. int colorIndex[4]; //! Holds the images of the keys. QColor keyColors[4]; //! Holds the images of the keys. QPixmap keyImage[5][9]; //! Holds the images of the start keys. QPixmap keyImageStart[5]; //! Holds the image of the keyboard layout. QPixmap keyLayout; //! Holds the image of the keyboard border. QPixmap keyBorder; //! Holds the image of the keyboard background. QPixmap background; //! Object of the corresponding sql class. KeyboardSql *keyboardSql; //! Flag, keyboard is started. bool isStarted; //! Flag, keyboard is paused. bool isPaused; //! Flag, the properties of the current key where found. bool keyLayoutFound; //! Flag, coloring of key is turned on or off. bool keyColoring; //! Flag, coloring of key is turned on or off. bool keyColoringStart; //! Flag, drawing the keyboard border is turned on or off. bool keyDrawBorder; //! Flag, drawing the key path is turned on or off. bool keyDrawPath; //! Unicode char of the current key. QChar activeKey; //! X coordinate of the current key. int activeX; //! Y coordinate of the current key. int activeY; //! Color of the current key (0-4). int activeColor; //! Form of the current key (0-6). int activeForm; //! Finger code of the current key (0-7). int activeFinger; //! Modifier value of the current key. int activeModifier; //! X coordinate of the modifier key. int activeModifierX; //! Y coordinate of the modifier key. int activeModifierY; //! Color of the modifier key. int activeModifierColor; //! Form of the modifier key. int activeModifierForm; //! Finger code of the modifier key. int activeModifierFinger; //! Modifier value of the current key. int activeModifier2; //! X coordinate of the modifier key. int activeModifier2X; //! Y coordinate of the modifier key. int activeModifier2Y; //! Color of the modifier key. int activeModifier2Color; //! Form of the modifier key. int activeModifier2Form; //! Finger code of the modifier key. int activeModifier2Finger; //! Used keyboard labeling image file name QString imageName; //! Used keyboard layout QString layout; QPen currentPen; QPixmap errorImage; bool showErrorImage; }; #endif // KEYBOARD_H tipp10-2.1.0/widget/lessondialog.cpp000066400000000000000000000255661274324046000173210ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the LessonDialog class ** File name: lessondialog.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include "lessondialog.h" #include "sql/startsql.h" #include "def/errordefines.h" #include "errormessage.h" #include "def/defines.h" LessonDialog::LessonDialog(QString lessonid, QStringList *data, QWidget *parent) : QDialog(parent) { setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint); currentLessonId = lessonid; lessonData = data; // Create buttons createButtons(); // Create controls createControls(); // Set the layout of all widgets created above createLayout(); // Widget connections connect(buttonSave, SIGNAL(clicked()), this, SLOT(clickSave())); connect(buttonCancel, SIGNAL(clicked()), this, SLOT(reject())); connect(buttonHelp, SIGNAL(clicked()), this, SLOT(showHelp())); setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME))); setMinimumSize(420, 470); buttonSave->setFocus(); updateContent(); } void LessonDialog::updateContent() { StartSql *startSql; // Dialog is in edit modus (lesson id exist) if (currentLessonId == "-1") { // New lesson lineLessonName->selectAll(); lineLessonName->setFocus(); } else { if (currentLessonId == "-2") { // Import lesson lineLessonName->setText(lessonData->at(0).left(20)); lineLessonDescription->setText(""); lessonData->removeFirst(); lineLessonContent->setText(lessonData->join("\n")); // Split lesson content to lines *lessonData = lineLessonContent->toPlainText().split("\n", QString::SkipEmptyParts); // Delete empty lines for (int i = 0; i < lessonData->size(); i++) { if (QString::QString(lessonData->at(i).toLocal8Bit().constData()).simplified() == "") { lessonData->removeAt(i); } } lineLessonContent->setText(lessonData->join("\n")); } else { // Edit lesson startSql = new StartSql(); if (!startSql->getOwnLesson(currentLessonId, lineLessonName, lineLessonDescription, lineLessonContent, radioUnitSentence, radioUnitWord)) { // No selected lesson found in combo box // -> error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_LESSON_GET, TYPE_INFO, CANCEL_OPERATION); return; } } } } void LessonDialog::createButtons() { // Buttons buttonCancel = new QPushButton(tr("&Abbrechen")); buttonSave = new QPushButton(tr("&Speichern")); buttonHelp = new QPushButton(tr("&Hilfe")); buttonSave->setDefault(true); } void LessonDialog::createControls() { // Labels labelLessonName = new QLabel(tr("Name der Lektion (maximal 20 " "Zeichen):")); labelLessonDescription = new QLabel(tr("Kurzbeschreibung (maximal " "120 Zeichen):")); labelLessonContent = new QLabel(tr("Diktat (mindestens zwei " "Zeilen):")); labelLessonNotices = new QLabel(tr("Erlaeuterung" "
 
Jede Zeile (Zeilenumbruch " "am Ende) entspricht einer Einheit fuer das Diktat. " "Das Diktat kann auf zwei Arten gefuehrt werden:
 
" "Satzdiktat - die " "einzelnen Zeilen (Saetze) werden wie hier eingegeben mit einem Zeilenumbruch am " "Ende diktiert.
 
" "Wortdiktat - die einzelnen Zeilen (Worte) werden mit Leerzeichen getrennt " "diktiert, ein Zeilenumbruch erfolgt automatisch nach mindestens ") + QString::number(NUM_TOKEN_UNTIL_NEW_LINE) + tr(" diktierten " "Schriftzeichen.")); labelLessonNotices->setWordWrap(true); labelLessonNotices->setMaximumWidth(180); labelLessonUnit = new QLabel(tr("Was passiert bei aktivierter " "Intelligenz?
Bei " "aktivierter Intelligenz werden die Zeilen nicht der Reihenfolge nach " "diktiert, sondern abhaengig von den Tippfehler-Quoten die aktuell " "fuer den Lernerfolg sinnvollste Zeile in das Diktat einbezogen. Die " "Intelligenz zu aktivieren macht nur bei Lektionen Sinn, die aus sehr " "vielen Zeilen bestehen.
")); labelLessonUnit->setWordWrap(true); labelLessonUnit->setMaximumWidth(180); labelLessonUnitRadio = new QLabel(tr("Das Diktat soll gefuehrt werden als:")); labelLessonUnitRadio->setWordWrap(true); // Lines (text input) lineLessonName = new QLineEdit(); lineLessonName->setMaxLength(20); lineLessonDescription = new QLineEdit(); lineLessonDescription->setMaxLength(120); lineLessonContent = new QTextEdit(); lineLessonContent->setLineWrapMode(QTextEdit::NoWrap); lineLessonContent->setAcceptRichText(false); // Radiobutton sentence unit radioUnitSentence = new QRadioButton(tr("Satzdiktat")); radioUnitSentence->setToolTip(tr("Die einzelnen " "Einheiten werden mit\neinem Zeilenumbruch am Ende diktiert")); radioUnitSentence->setChecked(true); // Radiobutton word unit radioUnitWord = new QRadioButton(tr("Wortdiktat")); radioUnitWord->setToolTip(tr("Die einzelnen " "Einheiten werden mit\nLeerzeichen getrennt " "diktiert,\nein Zeilenumbruch erfolgt automatisch\nnach mindestens ") + QString::number(NUM_TOKEN_UNTIL_NEW_LINE) + tr(" " "Schriftzeichen")); radioUnitWord->setChecked(false); // Dialog is in edit modus (lesson id exist) if (currentLessonId != "-1" && currentLessonId != "-2") { setWindowTitle(tr("Eigene Lektion editieren")); // Change text of lesson name label labelLessonName->setText(tr("Name der Lektion:")); // Disable text field "Name of lesson" lineLessonName->setEnabled(false); } else { setWindowTitle(tr("Eigene Lektion erstellen")); // Select text field "Name of lesson" //lineLessonName->selectAll(); //lineLessonName->setCursorPosition(0); } } void LessonDialog::createLayout() { // Button layout horizontal QHBoxLayout *buttonLayoutHorizontal = new QHBoxLayout; buttonLayoutHorizontal->addStretch(1); buttonLayoutHorizontal->addWidget(buttonCancel); buttonLayoutHorizontal->addSpacing(10); buttonLayoutHorizontal->addWidget(buttonHelp); buttonLayoutHorizontal->addWidget(buttonSave); // Group layout vertical QHBoxLayout *boxesLayout = new QHBoxLayout; boxesLayout->addStretch(1); boxesLayout->addWidget(radioUnitSentence); boxesLayout->addSpacing(30); boxesLayout->addWidget(radioUnitWord); boxesLayout->addStretch(1); QVBoxLayout *helpLayout = new QVBoxLayout; helpLayout->addWidget(labelLessonNotices); helpLayout->addSpacing(14); helpLayout->addWidget(labelLessonUnit); helpLayout->addStretch(1); QVBoxLayout *controlLayout = new QVBoxLayout; controlLayout->addWidget(labelLessonName); controlLayout->addWidget(lineLessonName); controlLayout->addSpacing(10); controlLayout->addWidget(labelLessonDescription); controlLayout->addWidget(lineLessonDescription); controlLayout->addSpacing(10); controlLayout->addWidget(labelLessonContent); controlLayout->addWidget(lineLessonContent); controlLayout->addSpacing(10); controlLayout->addWidget(labelLessonUnitRadio); controlLayout->addLayout(boxesLayout); // Full layout of all widgets vertical QHBoxLayout *preLayout = new QHBoxLayout; preLayout->addLayout(controlLayout); preLayout->addSpacing(20); preLayout->addLayout(helpLayout); // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(preLayout); mainLayout->addSpacing(1); mainLayout->addLayout(buttonLayoutHorizontal); mainLayout->setMargin(15); mainLayout->setSpacing(5); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void LessonDialog::clickSave() { StartSql *startSql; QStringList contentList; int lessonUnit = 0; int i; // Check whether lesson name is filled out if (lineLessonName->text() == "") { QMessageBox::information(this, APP_NAME, tr("Bitte geben Sie der Lektion einen Namen\n")); return; } // Check whether lesson content is filled out if (lineLessonContent->toPlainText() == "") { QMessageBox::information(this, APP_NAME, tr("Bitte geben Sie ein vollstaendiges Diktat ein\n")); return; } // Split lesson content to lines contentList = lineLessonContent->toPlainText().split("\n", QString::SkipEmptyParts); // Delete empty lines for (i = 0; i < contentList.size(); i++) { if (QString::QString(contentList.at(i).toLocal8Bit().constData()).simplified() == "") { contentList.removeAt(i); } } // Check whether there is enough lesson content if (contentList.size() < 2) { QMessageBox::information(this, APP_NAME, tr("Bitte geben Sie mindestens zwei Zeilen Diktat ein\n")); return; } // Check whether there is too much lesson content if (contentList.size() > 400) { QMessageBox::information(this, APP_NAME, tr("Bitte geben Sie maximal 400 Zeilen Diktat ein\n")); return; } // Save the lesson startSql = new StartSql(); if ((currentLessonId == "-1" || currentLessonId == "-2") && startSql->ownLessonExist(lineLessonName->text())) { QMessageBox::information(this, APP_NAME, tr("Der Name der Lektion existiert bereits. Bitte geben " "Sie der Lektion einen anderen Namen.\n")); return; } if (radioUnitWord->isChecked()) { lessonUnit = 1; } if (!startSql->updateOwnLesson(currentLessonId, lineLessonName->text(), lineLessonDescription->text(), contentList, lessonUnit)) { // No selected lesson found in combo box // -> error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_LESSON_ADD, TYPE_INFO, CANCEL_OPERATION); return; } if (!startSql->analyzeOwnLessons()) { // No selected lesson found in combo box // -> error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_LESSON_ANALYZE, TYPE_INFO, CANCEL_OPERATION); return; } this->accept(); } void LessonDialog::showHelp() { helpBrowser = new HelpBrowser("lessons.html#ownlesson", this); helpBrowser->show(); } tipp10-2.1.0/widget/lessondialog.h000066400000000000000000000066751274324046000167660ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the LessonDialog class ** File name: lessondialog.h ** ****************************************************************/ #ifndef LESSONDIALOG_H #define LESSONDIALOG_H #include #include #include #include #include #include #include #include #include #include "helpbrowser.h" //! The LessonDialog class provides a lesson edit dialog. /*! The LessonDialog class shows three program settings. Setting the layout of the virtual keyboard, setting the ticker speed and font and doing a reset of the user tables. @author Tom Thielicke, s712715 @version 0.0.3 @date 18.06.2006 */ class LessonDialog : public QDialog { Q_OBJECT public: //! Constructor, creates two table objects and provide it in two tabs. /*! In this contructor three groups are created over functions createGroupKeyboardLayout(), createGroupUserReset() and createGroupTickerFont(). In addition, standard settings are read, standard font is set and connections are set. @param parent The parent QWidget @see createGroupKeyboardLayout(), createGroupUserReset(), createGroupTickerFont(), readSettings(), tickerFont */ LessonDialog(QString lessonid, QStringList *data, QWidget *parent = 0); public slots: private slots: //! Slot, saves the setting data. /*! After the user clicked the save button, this function saves the settings over function writeSettings() and closes the current dialog. @see writeSettings() */ void clickSave(); //! Slot, shows the help dialog. /*! This slot shows the help dialog. It creates an object of the QDialog class with an QTextbrowser. */ void showHelp(); private: //! Creates a cancel and a save button. void createButtons(); //! Creates the layout of the complete class. void createLayout(); //! Creates the controls. void createControls(); //! Updates the content of the controls. void updateContent(); QLabel *labelLessonName; QLabel *labelLessonDescription; QLabel *labelLessonContent; QLabel *labelLessonNotices; QLabel *labelLessonUnit; QLabel *labelLessonUnitRadio; QLineEdit *lineLessonName; QLineEdit *lineLessonDescription; QTextEdit *lineLessonContent; QPushButton *buttonSave; QPushButton *buttonCancel; QPushButton *buttonHelp; QRadioButton *radioUnitSentence; QRadioButton *radioUnitWord; //! Object of the help browser dialog HelpBrowser *helpBrowser; QString currentLessonId; QStringList *lessonData; }; #endif //LESSONDIALOG_H tipp10-2.1.0/widget/lessonprintdialog.cpp000066400000000000000000000056501274324046000203660ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the LessonPrintDialog class ** File name: lessonprintdialog.cpp ** ****************************************************************/ #include #include #include "lessonprintdialog.h" #include "def/defines.h" LessonPrintDialog::LessonPrintDialog(QString *enteredName, QWidget *parent) : QDialog(parent) { setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint); setWindowTitle(tr("Lektion drucken")); setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME))); userName = enteredName; // Create texbox createLineEdit(); // Create buttons createButtons(); // Set the layout of all widgets created above createLayout(); lineName->setFocus(); } void LessonPrintDialog::createButtons() { //Buttons buttonOk = new QPushButton(this); buttonCancel = new QPushButton(this); buttonOk->setText(tr("&Drucken")); buttonCancel->setText(tr("&Abbrechen")); buttonOk->setDefault(true); // Widget connections connect(buttonOk, SIGNAL(clicked()), this, SLOT(clickOk())); connect(buttonCancel, SIGNAL(clicked()), this, SLOT(reject())); } void LessonPrintDialog::createLineEdit() { lineName = new QLineEdit(); labelName = new QLabel(tr("Bitte geben Sie Ihren Namen ein:")); labelName->setWordWrap(true); } void LessonPrintDialog::createLayout() { // Button layout horizontal QHBoxLayout *buttonLayoutHorizontal = new QHBoxLayout; buttonLayoutHorizontal->addStretch(1); buttonLayoutHorizontal->addWidget(buttonCancel); buttonLayoutHorizontal->addWidget(buttonOk); // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addSpacing(1); mainLayout->addWidget(labelName); mainLayout->addSpacing(1); mainLayout->addWidget(lineName); mainLayout->addSpacing(1); mainLayout->addLayout(buttonLayoutHorizontal); mainLayout->setMargin(15); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void LessonPrintDialog::clickOk() { // Return entered name *userName = lineName->text(); accept(); } tipp10-2.1.0/widget/lessonprintdialog.h000066400000000000000000000037321274324046000200320ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the LessonPrintDialog class ** File name: lessonprintdialog.h ** ****************************************************************/ #ifndef LESSONPRINTDIALOG_H #define LESSONPRINTDIALOG_H #include #include #include #include #include #include //! The LessonPrintDialog class provides a user input widget. /*! The LessonPrintDialog class shows a user name input for printing. @author Tom Thielicke, s712715 @version 0.0.1 @date 09.09.2008 */ class LessonPrintDialog : public QDialog { Q_OBJECT public: //! Constructor, creates two table objects and provide it in two tabs. LessonPrintDialog(QString *enteredName, QWidget *parent = 0); public slots: private slots: //! Start button pressed void clickOk(); private: //! Creates a cancel and a ok button. void createButtons(); //! Creates a textbox. void createLineEdit(); //! Creates the layout of the complete class. void createLayout(); QPushButton *buttonOk; QPushButton *buttonCancel; QLabel *labelName; QLineEdit *lineName; QString *userName; }; #endif //LESSONPRINTDIALOG_H tipp10-2.1.0/widget/lessonresult.cpp000066400000000000000000000651571274324046000174000ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the LessonResult class ** File name: lessonresult.h ** ****************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "lessonresult.h" #include "lessonprintdialog.h" #include "def/defines.h" LessonResult::LessonResult(int row, int type, QList charlist, QList mistakelist, QWidget *parent) : QWidget(parent) { mistakeList = mistakelist; charList = charlist; lessonRow = row; #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); // Language language = settings.value("language_gui", "en").toString(); settings.endGroup(); // Create print push button buttonPrintLesson = new QPushButton(tr("Drucken")); buttonPrintLesson->setFixedHeight(20); buttonPublishFacebook = new QPushButton(tr("Teilen auf Facebook")); buttonPublishFacebook->setFixedHeight(20); createOutput(); } void LessonResult::publishFacebook() { QDesktopServices::openUrl(QString("http://www.facebook.com/sharer.php" "?u=" "http://www.tipp10.com/" + languageGui + "/facebook/" + QUrl::toPercentEncoding( facebookComment))); } void LessonResult::createOutput() { QString userName = ""; // Read settings #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("duration"); QString settingsDuration; if (settings.value("radio_time", true).toBool()) { // Time limit selected settingsDuration = settings.value("spin_time", LESSON_TIMELEN_STANDARD).toString() + tr(" Minuten"); } else { if (settings.value("radio_token", true).toBool()) { // Token limit selected settingsDuration = settings.value("spin_token", LESSON_TOKENLEN_STANDARD).toString() + tr(" Zeichen"); } else { // Lesson limit selected settingsDuration = tr("Gesamte Lektion"); } } settings.endGroup(); settings.beginGroup("error"); QString settingsError; if (settings.value("check_correct", true).toBool()) { settingsError = tr("Fehler korrigieren"); } else { if (settings.value("check_stop", true).toBool()) { settingsError = tr("Diktat blockieren"); } else { settingsError = tr("Tippfehler uebergehen"); } } settings.endGroup(); QString settingsHelp; settings.beginGroup("support"); if (!settings.value("check_helpers", true).toBool()) { settingsHelp = tr("Keine"); } else { if (settings.value("check_selection", true).toBool() && settings.value("check_selection_start", true).toBool() && settings.value("check_border", true).toBool() && settings.value("check_path", true).toBool() && settings.value("check_status", true).toBool()) { settingsHelp = tr("Alle"); } else { settingsHelp = ""; if (settings.value("check_selection", true).toBool()) { if (settingsHelp != "") { settingsHelp.append("\n"); } settingsHelp.append(tr("- Farbige Tasten")); } if (settings.value("check_selection_start", true).toBool()) { if (settingsHelp != "") { settingsHelp.append("\n"); } settingsHelp.append(tr("- Grundstellung")); } if (settings.value("check_path", true).toBool()) { if (settingsHelp != "") { settingsHelp.append("\n"); } settingsHelp.append(tr("- Tastpfade")); } if (settings.value("check_border", true).toBool()) { if (settingsHelp != "") { settingsHelp.append("\n"); } settingsHelp.append(tr("- Trennlinie")); } if (settings.value("check_status", true).toBool()) { if (settingsHelp != "") { settingsHelp.append("\n"); } settingsHelp.append(tr("- Hilfetext")); } } } settings.endGroup(); settings.beginGroup("general"); languageGui = settings.value("language_gui", APP_STD_LANGUAGE_GUI).toString(); settings.endGroup(); // Read lesson results QString lessonName; QString lessonTimestamp; QString lessonTimeLen; QString lessonTokenLen; QString lessonErrorNum; QString lessonCpm; QString lessonGrade; QString lessonGradeSimple; QString lessonRate; QSqlQuery query; if (!query.exec("SELECT user_lesson_name, user_lesson_timestamp, " "user_lesson_timelen, user_lesson_tokenlen, " "user_lesson_errornum, (user_lesson_strokesnum / " "(user_lesson_timelen / 60.0)) AS user_lesson_cpm, " "(((user_lesson_strokesnum - (20.0 * user_lesson_errornum)) / " "(user_lesson_timelen / 60.0)) * 0.4) AS user_lesson_grade, " "user_lesson_id, " "((user_lesson_errornum * 100.0) / " "user_lesson_strokesnum) AS user_lesson_rate " "FROM user_lesson_list WHERE " "user_lesson_id = " + QString::number(lessonRow) + ";")) { return; } if (query.first()) { lessonName = query.value(0).toString(); QDateTime timeStampTemp = QDateTime::fromString(query.value(1).toString(), "yyyyMMddhhmmss"); lessonTimestamp = timeStampTemp.toString( (language == "de" ? "dd.MM.yyyy hh:mm" : "MMM d, yyyy hh:mm ap")) + (language == "de" ? tr(" Uhr") : ""); int timeSecTemp; double timeMinTemp; if ((timeSecTemp = query.value(2).toInt()) < 60) { lessonTimeLen = QString::number(timeSecTemp) + tr(" sek."); } else { timeMinTemp = floor((timeSecTemp / 60.0) / 0.1 + 0.5) * 0.1; lessonTimeLen = QString::number(timeMinTemp) + tr(" min."); } lessonTokenLen = query.value(3).toString(); lessonErrorNum = query.value(4).toString(); double lessonRateTemp = query.value(8).toDouble(); lessonRate.sprintf("%.0f", lessonRateTemp); lessonRate.append(" %"); double lessonCpmTemp = query.value(5).toDouble(); lessonCpm.sprintf("%.0f", lessonCpmTemp); double lessonGradeTemp; if ((lessonGradeTemp = query.value(6).toDouble()) < 0) { lessonGradeTemp = 0; } lessonGrade.sprintf("%.0f", lessonGradeTemp); lessonGradeSimple.sprintf("%.0f", lessonGradeTemp); lessonGrade.append(lessonGradeTemp == 1 ? tr(" Punkt") : tr(" Punkte")); } // Output the results QTextEdit *editor = new QTextEdit; QTextCursor cursor(editor->textCursor()); cursor.movePosition(QTextCursor::Start); QTextFrame *topFrame = cursor.currentFrame(); QTextFrameFormat topFrameFormat = topFrame->frameFormat(); topFrameFormat.setLeftMargin(16); topFrameFormat.setTopMargin(3); topFrameFormat.setRightMargin(16); topFrameFormat.setBottomMargin(16); topFrameFormat.setBorder(0); topFrameFormat.setPadding(0); topFrame->setFrameFormat(topFrameFormat); QTextCharFormat h1; QTextCharFormat h2; QTextCharFormat h3; QTextCharFormat p; QTextCharFormat p_bold; QTextCharFormat p_mistake; QTextCharFormat p_no_mistake; #if APP_MAC || APP_X11 h1.setFontPointSize(22); h2.setFontPointSize(19); h3.setFontPointSize(13); p.setFontPointSize(13); p_mistake.setFontPointSize(13); p_no_mistake.setFontPointSize(13); #else h1.setFontPointSize(18); h2.setFontPointSize(14); h3.setFontPointSize(9); p.setFontPointSize(9); p_mistake.setFontPointSize(9); p_no_mistake.setFontPointSize(9); #endif h1.setFontFamily("Arial"); h2.setFontFamily("Arial"); h3.setFontFamily("Arial"); h3.setFontWeight(QFont::Bold); p.setFontFamily("Arial"); p_mistake.setFontFamily("Arial"); p_mistake.setFontUnderline(true); p_mistake.setForeground(QBrush(QColor(255, 0, 0))); p_mistake.setFontWeight(QFont::Bold); p_no_mistake.setFontFamily("Arial"); cursor.setPosition(topFrame->firstPosition()); QTextFrameFormat headFrameFormat; headFrameFormat.setWidth(QTextLength(QTextLength::PercentageLength, 100)); headFrameFormat.setBorder(0); headFrameFormat.setMargin(0); headFrameFormat.setPosition(QTextFrameFormat::FloatLeft); cursor.insertFrame(headFrameFormat); cursor.insertText(tr("Sie haben ") + lessonGrade + tr(" erreicht, bei einer Schreibgeschwindigkeit von ") + lessonCpm + tr(" A/min und ") + lessonErrorNum + (lessonErrorNum == "1" ? tr(" Tippfehler") : tr(" Tippfehlern")) + tr("."), h2); facebookComment = lessonGradeSimple + "-" + lessonCpm + "-" + lessonErrorNum; /*tr("Ich habe ") + lessonGrade + tr(" erreicht, bei einer Schreibgeschwindigkeit von ") + lessonCpm + tr(" A/min und ") + lessonErrorNum + (lessonErrorNum == "1" ? tr(" Tippfehler") : tr(" Tippfehlern")) + tr(".") + " * * * * " + tr("Mit TIPP10 kostenlos das Zehnfingersystem lernen: ") + QString(APP_URL);*/ cursor.setPosition(topFrame->lastPosition()); QTextFrameFormat referenceFrameFormat; referenceFrameFormat.setBorder(1); referenceFrameFormat.setTopMargin(13); referenceFrameFormat.setPadding(8); referenceFrameFormat.setPosition(QTextFrameFormat::FloatRight); referenceFrameFormat.setWidth(QTextLength(QTextLength::PercentageLength, 50)); cursor.insertFrame(referenceFrameFormat); cursor.insertText(tr("Einstellungen"), h3); QTextTableFormat settingsTableFormat; settingsTableFormat.setAlignment(Qt::AlignLeft); QTextTable *settingsTable = cursor.insertTable(3, 2, settingsTableFormat); QTextFrameFormat settingsFrameFormat = cursor.currentFrame()->frameFormat(); settingsFrameFormat.setBorder(0); cursor.currentFrame()->setFrameFormat(settingsFrameFormat); cursor = settingsTable->cellAt(0, 0).firstCursorPosition(); cursor.insertText(tr("Dauer: "), p); cursor = settingsTable->cellAt(0, 1).firstCursorPosition(); cursor.insertText(settingsDuration, p); cursor = settingsTable->cellAt(1, 0).firstCursorPosition(); cursor.insertText(tr("Tippfehler: "), p); cursor = settingsTable->cellAt(1, 1).firstCursorPosition(); cursor.insertText(settingsError, p); cursor = settingsTable->cellAt(2, 0).firstCursorPosition(); cursor.insertText(tr("Hilfestellungen: "), p); cursor = settingsTable->cellAt(2, 1).firstCursorPosition(); cursor.insertText(settingsHelp, p); cursor.setPosition(topFrame->lastPosition()); QTextFrameFormat resultsFrameFormat; resultsFrameFormat.setBorder(1); resultsFrameFormat.setTopMargin(13); resultsFrameFormat.setPadding(8); resultsFrameFormat.setPosition(QTextFrameFormat::FloatLeft); resultsFrameFormat.setWidth(QTextLength(QTextLength::PercentageLength, 48)); cursor.insertFrame(resultsFrameFormat); cursor.insertText(tr("Auswertung"), h3); QTextTableFormat evaluationTableFormat; evaluationTableFormat.setAlignment(Qt::AlignLeft); QTextTable *evaluationTable = cursor.insertTable(7, 2, evaluationTableFormat); QTextFrameFormat evaluationFrameFormat = cursor.currentFrame()->frameFormat(); evaluationFrameFormat.setBorder(0); cursor.currentFrame()->setFrameFormat(evaluationFrameFormat); /*cursor = evaluationTable->cellAt(0, 0).firstCursorPosition(); cursor.insertText(tr("Name: "), p); cursor = evaluationTable->cellAt(0, 1).firstCursorPosition(); cursor.insertText(userName, p);*/ cursor = evaluationTable->cellAt(0, 0).firstCursorPosition(); cursor.insertText(tr("Lektion: "), p); cursor = evaluationTable->cellAt(0, 1).firstCursorPosition(); cursor.insertText(lessonName, p); cursor = evaluationTable->cellAt(1, 0).firstCursorPosition(); cursor.insertText(tr("Zeitpunkt: "), p); cursor = evaluationTable->cellAt(1, 1).firstCursorPosition(); cursor.insertText(lessonTimestamp, p); cursor = evaluationTable->cellAt(2, 0).firstCursorPosition(); cursor.insertText(tr("Dauer: "), p); cursor = evaluationTable->cellAt(2, 1).firstCursorPosition(); cursor.insertText(lessonTimeLen, p); cursor = evaluationTable->cellAt(3, 0).firstCursorPosition(); cursor.insertText(tr("Zeichen: "), p); cursor = evaluationTable->cellAt(3, 1).firstCursorPosition(); cursor.insertText(lessonTokenLen, p); cursor = evaluationTable->cellAt(4, 0).firstCursorPosition(); cursor.insertText(tr("Fehler: "), p); cursor = evaluationTable->cellAt(4, 1).firstCursorPosition(); cursor.insertText(lessonErrorNum, p); cursor = evaluationTable->cellAt(5, 0).firstCursorPosition(); cursor.insertText(tr("Fehlerquote: "), p); cursor = evaluationTable->cellAt(5, 1).firstCursorPosition(); cursor.insertText(lessonRate, p); cursor = evaluationTable->cellAt(6, 0).firstCursorPosition(); cursor.insertText(tr("A/min: "), p); cursor = evaluationTable->cellAt(6, 1).firstCursorPosition(); cursor.insertText(lessonCpm, p); cursor.setPosition(topFrame->lastPosition()); QTextFrameFormat bottomFrameFormat; bottomFrameFormat.setBorder(1); bottomFrameFormat.setPadding(8); bottomFrameFormat.setTopMargin(12); bottomFrameFormat.setWidth(QTextLength(QTextLength::PercentageLength, 100)); bottomFrameFormat.setPosition(QTextFrameFormat::FloatLeft); cursor.insertFrame(bottomFrameFormat); cursor.insertText(tr("Diktat"), h3); cursor.insertBlock(); for (int i = 0; i < charList.size(); ++i) { if (mistakeList.at(i) == 0) { cursor.insertText(QString(charList.at(i)), p_no_mistake); } else { cursor.insertText(QString(charList.at(i)), p_mistake); } } cursor.setPosition(QTextCursor::Start); editor->setReadOnly(true); QHBoxLayout *filterLayout = new QHBoxLayout; filterLayout->addStretch(1); filterLayout->addWidget(buttonPublishFacebook); filterLayout->addWidget(buttonPrintLesson); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(filterLayout); mainLayout->addWidget(editor); // Pass layout to parent widget (this) this->setLayout(mainLayout); connect(buttonPrintLesson, SIGNAL(clicked()), this, SLOT(createPrintOutput())); connect(buttonPublishFacebook, SIGNAL(clicked()), this, SLOT(publishFacebook())); } void LessonResult::createPrintOutput() { QString userName = ""; LessonPrintDialog lessonPrintDialog(&userName, this); if (lessonPrintDialog.exec() == 0) { return; } // Read settings #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("duration"); QString settingsDuration; if (settings.value("radio_time", true).toBool()) { // Time limit selected settingsDuration = settings.value("spin_time", LESSON_TIMELEN_STANDARD).toString() + tr(" Minuten"); } else { if (settings.value("radio_token", true).toBool()) { // Token limit selected settingsDuration = settings.value("spin_token", LESSON_TOKENLEN_STANDARD).toString() + tr(" Zeichen"); } else { // Lesson limit selected settingsDuration = tr("Gesamte Lektion"); } } settings.endGroup(); settings.beginGroup("error"); QString settingsError; if (settings.value("check_correct", true).toBool()) { settingsError = tr("Fehler korrigieren"); } else { if (settings.value("check_stop", true).toBool()) { settingsError = tr("Diktat blockieren"); } else { settingsError = tr("Tippfehler uebergehen"); } } settings.endGroup(); QString settingsHelp; settings.beginGroup("support"); if (!settings.value("check_helpers", true).toBool()) { settingsHelp = tr("Keine"); } else { if (settings.value("check_selection", true).toBool() && settings.value("check_selection_start", true).toBool() && settings.value("check_border", true).toBool() && settings.value("check_path", true).toBool() && settings.value("check_status", true).toBool()) { settingsHelp = tr("Alle"); } else { settingsHelp = ""; if (settings.value("check_selection", true).toBool()) { if (settingsHelp != "") { settingsHelp.append("\n"); } settingsHelp.append(tr("- Farbige Tasten")); } if (settings.value("check_selection_start", true).toBool()) { if (settingsHelp != "") { settingsHelp.append("\n"); } settingsHelp.append(tr("- Grundstellung")); } if (settings.value("check_path", true).toBool()) { if (settingsHelp != "") { settingsHelp.append("\n"); } settingsHelp.append(tr("- Tastpfade")); } if (settings.value("check_border", true).toBool()) { if (settingsHelp != "") { settingsHelp.append("\n"); } settingsHelp.append(tr("- Trennlinie")); } if (settings.value("check_status", true).toBool()) { if (settingsHelp != "") { settingsHelp.append("\n"); } settingsHelp.append(tr("- Hilfetext")); } } } settings.endGroup(); // Read lesson results QString lessonName; QString lessonTimestamp; QString lessonTimeLen; QString lessonTokenLen; QString lessonErrorNum; QString lessonCpm; QString lessonGrade; QString lessonRate; QSqlQuery query; if (!query.exec("SELECT user_lesson_name, user_lesson_timestamp, " "user_lesson_timelen, user_lesson_tokenlen, " "user_lesson_errornum, ROUND(user_lesson_strokesnum / " "(user_lesson_timelen / 60.0), 0) AS user_lesson_cpm, " "ROUND(((user_lesson_strokesnum - (20 * user_lesson_errornum)) / " "(user_lesson_timelen / 60.0)) * 0.4, 0) AS user_lesson_grade, " "user_lesson_id, " "((user_lesson_errornum * 100.0) / " "user_lesson_strokesnum) AS user_lesson_rate " "FROM user_lesson_list WHERE " "user_lesson_id = " + QString::number(lessonRow) + ";")) { return; } if (query.first()) { lessonName = query.value(0).toString(); QDateTime timeStampTemp = QDateTime::fromString(query.value(1).toString(), "yyyyMMddhhmmss"); lessonTimestamp = timeStampTemp.toString( (language == "de" ? "dd.MM.yyyy hh:mm" : "MMM d, yyyy hh:mm ap")) + (language == "de" ? tr(" Uhr") : ""); int timeSecTemp; double timeMinTemp; if ((timeSecTemp = query.value(2).toInt()) < 60) { lessonTimeLen = QString::number(timeSecTemp) + tr(" sek."); } else { timeMinTemp = floor((timeSecTemp / 60.0) / 0.1 + 0.5) * 0.1; lessonTimeLen = QString::number(timeMinTemp) + tr(" min."); } lessonTokenLen = query.value(3).toString(); lessonErrorNum = query.value(4).toString(); double lessonRateTemp = query.value(8).toDouble(); lessonRate.sprintf("%.0f", lessonRateTemp); lessonRate.append(" %"); double lessonCpmTemp = query.value(5).toDouble(); lessonCpm.sprintf("%.0f", lessonCpmTemp); double lessonGradeTemp; if ((lessonGradeTemp = query.value(6).toDouble()) < 0) { lessonGradeTemp = 0; } lessonGrade.sprintf("%.0f", lessonGradeTemp); lessonGrade.append(lessonGradeTemp == 1 ? tr(" Punkt") : tr(" Punkte")); } // Output the results QTextEdit *editor = new QTextEdit; QTextCursor cursor(editor->textCursor()); cursor.movePosition(QTextCursor::Start); QTextFrame *topFrame = cursor.currentFrame(); QTextFrameFormat topFrameFormat = topFrame->frameFormat(); topFrameFormat.setPadding(16); topFrameFormat.setBorder(0); topFrame->setFrameFormat(topFrameFormat); QTextCharFormat h1; QTextCharFormat h2; QTextCharFormat h3; QTextCharFormat p; QTextCharFormat p_bold; QTextCharFormat p_mistake; QTextCharFormat p_no_mistake; h1.setFontPointSize(20); h1.setFontFamily("Arial"); h2.setFontPointSize(15); h2.setFontFamily("Arial"); h2.setFontWeight(QFont::Bold); h3.setFontPointSize(11); h3.setFontFamily("Arial"); h3.setFontWeight(QFont::Bold); p.setFontPointSize(11); p.setFontFamily("Arial"); p_mistake.setFontPointSize(11); p_mistake.setFontFamily("Arial"); p_mistake.setFontUnderline(true); p_mistake.setForeground(QBrush(QColor(255, 0, 0))); p_mistake.setFontWeight(QFont::Bold); p_no_mistake.setFontPointSize(11); p_no_mistake.setFontFamily("Arial"); cursor.setPosition(topFrame->firstPosition()); QTextFrameFormat headFrameFormat; headFrameFormat.setWidth(QTextLength(QTextLength::PercentageLength, 100)); headFrameFormat.setBorder(0); headFrameFormat.setPadding(0); headFrameFormat.setPosition(QTextFrameFormat::FloatLeft); cursor.insertFrame(headFrameFormat); cursor.insertText(tr("10-Finger-Schreibtrainer TIPP10"), h1); cursor.insertBlock(); cursor.insertText(tr("Bericht") + (userName != "" ? tr(" von ") + userName : ""), h1); cursor.insertBlock(); cursor.insertBlock(); cursor.insertText(tr("Sie haben ") + lessonGrade + tr(" erreicht, bei einer Schreibgeschwindigkeit von ") + lessonCpm + tr(" A/min und ") + lessonErrorNum + (lessonErrorNum == "1" ? tr(" Tippfehler") : tr(" Tippfehlern")) + tr("."), h2); cursor.insertBlock(); cursor.setPosition(topFrame->lastPosition()); QTextFrameFormat referenceFrameFormat; referenceFrameFormat.setBorder(1); referenceFrameFormat.setPadding(8); referenceFrameFormat.setPosition(QTextFrameFormat::FloatRight); referenceFrameFormat.setWidth(QTextLength(QTextLength::PercentageLength, 50)); cursor.insertFrame(referenceFrameFormat); cursor.insertText(tr("Einstellungen"), h3); cursor.insertBlock(); QTextTableFormat settingsTableFormat; settingsTableFormat.setAlignment(Qt::AlignLeft); QTextTable *settingsTable = cursor.insertTable(3, 2, settingsTableFormat); QTextFrameFormat settingsFrameFormat = cursor.currentFrame()->frameFormat(); settingsFrameFormat.setBorder(0); cursor.currentFrame()->setFrameFormat(settingsFrameFormat); cursor = settingsTable->cellAt(0, 0).firstCursorPosition(); cursor.insertText(tr("Dauer: "), p); cursor = settingsTable->cellAt(0, 1).firstCursorPosition(); cursor.insertText(settingsDuration, p); cursor = settingsTable->cellAt(1, 0).firstCursorPosition(); cursor.insertText(tr("Tippfehler: "), p); cursor = settingsTable->cellAt(1, 1).firstCursorPosition(); cursor.insertText(settingsError, p); cursor = settingsTable->cellAt(2, 0).firstCursorPosition(); cursor.insertText(tr("Hilfestellungen: "), p); cursor = settingsTable->cellAt(2, 1).firstCursorPosition(); cursor.insertText(settingsHelp, p); cursor.setPosition(topFrame->lastPosition()); QTextFrameFormat resultsFrameFormat; resultsFrameFormat.setBorder(1); resultsFrameFormat.setPadding(8); resultsFrameFormat.setPosition(QTextFrameFormat::FloatLeft); resultsFrameFormat.setWidth(QTextLength(QTextLength::PercentageLength, 48)); cursor.insertFrame(resultsFrameFormat); cursor.insertText(tr("Auswertung"), h3); QTextTableFormat evaluationTableFormat; evaluationTableFormat.setAlignment(Qt::AlignLeft); QTextTable *evaluationTable = cursor.insertTable(7, 2, evaluationTableFormat); QTextFrameFormat evaluationFrameFormat = cursor.currentFrame()->frameFormat(); evaluationFrameFormat.setBorder(0); cursor.currentFrame()->setFrameFormat(evaluationFrameFormat); /*cursor = evaluationTable->cellAt(0, 0).firstCursorPosition(); cursor.insertText(tr("Name: "), p); cursor = evaluationTable->cellAt(0, 1).firstCursorPosition(); cursor.insertText(userName, p);*/ cursor = evaluationTable->cellAt(0, 0).firstCursorPosition(); cursor.insertText(tr("Lektion: "), p); cursor = evaluationTable->cellAt(0, 1).firstCursorPosition(); cursor.insertText(lessonName, p); cursor = evaluationTable->cellAt(1, 0).firstCursorPosition(); cursor.insertText(tr("Zeitpunkt: "), p); cursor = evaluationTable->cellAt(1, 1).firstCursorPosition(); cursor.insertText(lessonTimestamp, p); cursor = evaluationTable->cellAt(2, 0).firstCursorPosition(); cursor.insertText(tr("Dauer: "), p); cursor = evaluationTable->cellAt(2, 1).firstCursorPosition(); cursor.insertText(lessonTimeLen, p); cursor = evaluationTable->cellAt(3, 0).firstCursorPosition(); cursor.insertText(tr("Zeichen: "), p); cursor = evaluationTable->cellAt(3, 1).firstCursorPosition(); cursor.insertText(lessonTokenLen, p); cursor = evaluationTable->cellAt(4, 0).firstCursorPosition(); cursor.insertText(tr("Fehler: "), p); cursor = evaluationTable->cellAt(4, 1).firstCursorPosition(); cursor.insertText(lessonErrorNum, p); cursor = evaluationTable->cellAt(5, 0).firstCursorPosition(); cursor.insertText(tr("Fehlerquote: "), p); cursor = evaluationTable->cellAt(5, 1).firstCursorPosition(); cursor.insertText(lessonRate, p); cursor = evaluationTable->cellAt(6, 0).firstCursorPosition(); cursor.insertText(tr("A/min: "), p); cursor = evaluationTable->cellAt(6, 1).firstCursorPosition(); cursor.insertText(lessonCpm, p); cursor.setPosition(topFrame->lastPosition()); QTextFrameFormat bottomFrameFormat; bottomFrameFormat.setWidth(QTextLength(QTextLength::PercentageLength, 100)); bottomFrameFormat.setPosition(QTextFrameFormat::FloatLeft); cursor.insertFrame(bottomFrameFormat); cursor.insertBlock(); cursor.insertBlock(); cursor.insertText(tr("Diktat"), h3); cursor.insertBlock(); for (int i = 0; i < charList.size(); ++i) { if (mistakeList.at(i) == 0) { cursor.insertText(QString(charList.at(i)), p_no_mistake); } else { cursor.insertText(QString(charList.at(i)), p_mistake); } } cursor.insertBlock(); cursor.setPosition(QTextCursor::Start); QPrinter printer; QPrintDialog *dialog = new QPrintDialog(&printer, this); dialog->setWindowTitle(tr("Bericht drucken")); if (dialog->exec() != QDialog::Accepted) return; editor->print(&printer); } tipp10-2.1.0/widget/lessonresult.h000066400000000000000000000034171274324046000170340ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the LessonResult class ** File name: lessonresult.h ** ****************************************************************/ #include #include #include #include #include #ifndef LESSONRESULT_H #define LESSONRESULT_H //! The LessonTableSql class provides a table widget with lessons. /*! @author Tom Thielicke, s712715 @version 0.0.2 @date 16.06.2006 */ class LessonResult : public QWidget { Q_OBJECT public: LessonResult(int row, int type, QList charlist, QList mistakelist, QWidget *parent = 0); private slots: void createPrintOutput(); void publishFacebook(); private: void createOutput(); QPushButton *buttonPrintLesson; QPushButton *buttonPublishFacebook; QList charList; QList mistakeList; int lessonRow; QString language; QString facebookComment; QString languageGui; }; #endif // LESSONRESULT_H tipp10-2.1.0/widget/licensedialog.cpp000066400000000000000000000112741274324046000174270ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the LicenseDialog class ** File name: licensedialog.cpp ** ****************************************************************/ #include #include #include #include #include #include "licensedialog.h" #include "def/defines.h" LicenseDialog::LicenseDialog(QWidget *parent) : QDialog(parent) { setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint); setWindowTitle(tr("Lizenznummer")); setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME))); // Create texbox createLineEdit(); // Create buttons createButtons(); // Set the layout of all widgets created above createLayout(); lineLicensing->setFocus(); } void LicenseDialog::createButtons() { //Buttons buttonOk = new QPushButton(this); buttonDemo = new QPushButton(this); buttonOk->setText(tr("&Ok")); buttonDemo->setText(tr("&Demo starten")); buttonDemo->setToolTip(tr("Im Demo-Modus koennen pro Lektion nur\n" "10 Schriftzeichen eingegeben werden")); buttonOk->setDefault(true); // Widget connections connect(buttonOk, SIGNAL(clicked()), this, SLOT(clickOk())); connect(buttonDemo, SIGNAL(clicked()), this, SLOT(clickDemo())); } void LicenseDialog::createLineEdit() { lineLicensing = new QLineEdit(); lineLicensing->setInputMask(">NNNNNNNNNNNNNN"); labelLicensing = new QLabel(tr("Bitte geben Sie Ihre Lizenznummer " "(ohne Leerzeichen) ein, " "die Sie im Arbeitsbuch (Schulbuch) auf Seite 3 finden:")); labelLicensing->setWordWrap(true); } void LicenseDialog::createLayout() { // Button layout horizontal QHBoxLayout *buttonLayoutHorizontal = new QHBoxLayout; buttonLayoutHorizontal->addStretch(1); buttonLayoutHorizontal->addWidget(buttonDemo); buttonLayoutHorizontal->addWidget(buttonOk); // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addSpacing(1); mainLayout->addWidget(labelLicensing); mainLayout->addSpacing(1); mainLayout->addWidget(lineLicensing); mainLayout->addSpacing(1); mainLayout->addLayout(buttonLayoutHorizontal); mainLayout->setMargin(15); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void LicenseDialog::clickOk() { // Check license key if (!checkLicenseKey(lineLicensing->text())) { // License key is wrong // Message to the user QMessageBox::information(0, APP_NAME, tr("Die eingegebene Lizenznummer ist leider nicht " "korrekt.\nBitte ueberpruefen Sie die Schreibweise.")); lineLicensing->setFocus(); } else { // License key is ok writeSettings(); accept(); } } void LicenseDialog::clickDemo() { accept(); } bool LicenseDialog::checkLicenseKey(QString licenseKey) { if (licenseKey.size() == 14 && licenseKey[0].isLetter() && licenseKey[1].isLetter() && (licenseKey.mid(2, 2) == "39" || licenseKey.mid(2, 2) == "41" || licenseKey.mid(2, 2) == "43" || licenseKey.mid(2, 2) == "49" || licenseKey.mid(2, 2) == "99") && licenseKey[4].isDigit() && licenseKey[5].isDigit() && licenseKey[6].isDigit() && licenseKey[7].isLetter() && licenseKey[8].isDigit() && licenseKey[9].isDigit() && licenseKey[10].isDigit() && licenseKey[11].isDigit() && licenseKey[12].isLetter() && licenseKey[13].isLetter()) { return true; } return false; } void LicenseDialog::writeSettings() { // Saves settings of the startwiget // (uses the default constructor of QSettings, passing // the application and company name see main function) #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); settings.setValue("licensekey", lineLicensing->text()); settings.endGroup(); } tipp10-2.1.0/widget/licensedialog.h000066400000000000000000000040561274324046000170740ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the LicenseDialog class ** File name: licensedialog.h ** ****************************************************************/ #ifndef LICENSEDIALOG_H #define LICENSEDIALOG_H #include #include #include #include #include #include //! The LicenseDialog class provides a license input widget. /*! The LicenseDialog class shows a dialog to enter a license key. @author Tom Thielicke, s712715 @version 0.0.1 @date 09.09.2008 */ class LicenseDialog : public QDialog { Q_OBJECT public: //! Constructor, creates two table objects and provide it in two tabs. LicenseDialog(QWidget *parent = 0); bool checkLicenseKey(QString licenseKey); public slots: private slots: //! Start button pressed void clickOk(); //! Demo button pressed void clickDemo(); private: //! Creates a cancel and a ok button. void createButtons(); //! Creates a textbox. void createLineEdit(); //! Creates the layout of the complete class. void createLayout(); //! Writes user settings void writeSettings(); QPushButton *buttonOk; QPushButton *buttonDemo; QLabel *labelLicensing; QLineEdit *lineLicensing; }; #endif //LICENSEDIALOG_H tipp10-2.1.0/widget/mainwindow.cpp000066400000000000000000000426021274324046000170000ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the MainWindow class ** File name: mainwindow.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "mainwindow.h" #include "settingsdialog.h" #include "updatedialog.h" #include "def/defines.h" #include "def/errordefines.h" #include "errormessage.h" #include "checkversion.h" MainWindow::MainWindow() { trainingStarted = false; createActions(); createMenu(); createWidgets(); createStart(); startWidget->fillLessonList(false); selectedLesson = -1; selectedType = -1; setWindowTitle(APP_NAME); setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME))); setMinimumSize(APP_WIDTH_STANDARD, APP_HEIGHT_STANDARD); readSettings(); } MainWindow::~MainWindow() { writeSettings(); } void MainWindow::newVersionAvailable() { if (QMessageBox::information(this, APP_NAME, QString(tr("Ihre Version der Software ist " "veraltet.\nDie " "neue Version erhalten Sie im Internet unter %1\n\n" "Moechten Sie die neue Version jetzt herunterladen?" )).arg(APP_URL), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { QDesktopServices::openUrl(QString(APP_URL) + "/download/"); } #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); QDate today = QDate::currentDate(); settings.setValue("last_version_check", today.addDays(-8)); settings.endGroup(); } void MainWindow::closeEvent(QCloseEvent *event) { if (trainingStarted) { // Ask, if training is already started switch (QMessageBox::question(this, APP_NAME, tr("Es gehen alle Werte der laufenden Lektion verloren!" "\n\nWollen Sie die Anwendung wirklich beenden?\n\n"), tr("&Ja"), tr("&Abbrechen"), 0, 1)) { case 0: // Ok button pushed break; case 1: // Cancel button pushed event->ignore(); break; } } } bool MainWindow::checkLicenseKey(QString licenseKey) { return false; } void MainWindow::createMenu() { //Mac-Version: //----------- #if APP_MAC evaluationMenu = menuBar()->addMenu(tr("&Gehe zu")); evaluationMenu->addAction(exitAction); evaluationMenu->addAction(settingsAction); evaluationMenu->addAction(aboutAction); //evaluationMenu->addAction(updateAction); evaluationMenu->addAction(evalAction); evaluationMenu->addAction(gameAction); helpMenu = menuBar()->addMenu(tr("&Hilfe")); helpMenu->addAction(helpAction); helpMenu->addSeparator(); helpMenu->addAction(websiteAction); helpMenu->addAction(donateAction); #else // Win/X11-Version: // --------------- // Menu bar items #if APP_MAC fileMenu = menuBar()->addMenu(APP_NAME_INTERN); #else fileMenu = menuBar()->addMenu(tr("&Datei")); #endif fileMenu->addAction(settingsAction); //fileMenu->addAction(updateAction); fileMenu->addSeparator(); fileMenu->addAction(exitAction); evaluationMenu = menuBar()->addMenu(tr("&Gehe zu")); evaluationMenu->addAction(evalAction); //evaluationMenu->addSeparator(); evaluationMenu->addAction(gameAction); helpMenu = menuBar()->addMenu(tr("&Hilfe")); helpMenu->addAction(helpAction); helpMenu->addAction(websiteAction); helpMenu->addAction(donateAction); helpMenu->addSeparator(); helpMenu->addAction(aboutAction); #endif } void MainWindow::createActions() { // Mac-Version: // ----------- #if APP_MAC settingsAction = new QAction(QIcon(":/img/menu_settings.png"), tr("&Einstellungen"), this); #else // Win/X11-Version: // --------------- // Menu bar actions settingsAction = new QAction(QIcon(":/img/menu_settings.png"), tr("&Grundeinstellungen"), this); #endif updateAction = new QAction(QIcon(":/img/menu_update.png"), tr("Aktualisierung"), this); exitAction = new QAction(tr("&Beenden"), this); evalAction = new QAction(QIcon(":/img/menu_evaluation.png"), tr("&Lernstatistik"), this); helpAction = new QAction(QIcon(":/img/menu_help.png"), tr("&Bedienungsanleitung"), this); websiteAction = new QAction(QIcon(":/img/menu_website.png"), APP_NAME_INTERN + tr(" im Internet"), this); #if APP_MAC aboutAction = new QAction(tr("Info"), this); #else aboutAction = new QAction(tr("&Ueber ") + APP_NAME_INTERN, this); #endif donateAction = new QAction(QIcon(":/img/menu_donate.png"), tr("Spenden"), this); gameAction = new QAction(QIcon(":/img/menu_game.png"), tr("ABC-Spiel"), this); connect(gameAction, SIGNAL(triggered()), this, SLOT(toggleStartToAbcrain())); // Connect bar actions connect(aboutAction, SIGNAL(triggered()), this, SLOT(about())); connect(exitAction, SIGNAL(triggered()), this, SLOT(close())); connect(settingsAction, SIGNAL(triggered()), this, SLOT(showSettings())); connect(updateAction, SIGNAL(triggered()), this, SLOT(showUpdate())); connect(evalAction, SIGNAL(triggered()), this, SLOT(toggleStartToEvaluation())); connect(websiteAction, SIGNAL(triggered()), this, SLOT(openWebsite())); connect(donateAction, SIGNAL(triggered()), this, SLOT(openDonate())); connect(helpAction, SIGNAL(triggered()), this, SLOT(showHelp())); } void MainWindow::showSettings() { SettingsDialog settingsDialog(this); settingsDialog.exec(); // Fill lesson list after changing program settings startWidget->fillLessonList(false); startWidget->readSettings(); } void MainWindow::showUpdate() { UpdateDialog updateDialog(this); updateDialog.exec(); // Fill lesson list after online update startWidget->fillLessonList(false); } void MainWindow::showHelp() { helpBrowser = new HelpBrowser("", 0); helpBrowser->show(); } void MainWindow::openWebsite() { QDesktopServices::openUrl(QString(APP_URL)); } void MainWindow::openDonate() { QDesktopServices::openUrl(QString(APP_URL) + "/donate/"); } void MainWindow::about() { QSqlQuery query; QString dbVersion = "?"; QString softwareVersion = "?"; QString versionText = ""; // Get database version info if (!query.exec("SELECT * FROM db_version ORDER BY version DESC;")) { ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_DB_VERSION_READABLE, TYPE_WARNING, CANCEL_NO); // return is not necessary here - "about message" anyway } else { if (query.first()) { // One number represents the DB version dbVersion = query.value(0).toString(); softwareVersion = query.value(1).toString(); } } //Show about window with image versionText = tr("Programmversion ") + softwareVersion + "
" + tr("Datenbankversion ") + dbVersion; if (APP_PORTABLE) { versionText.append("
" + tr("Portable Version")); } QString infoHeadline = tr("Der intelligente 10-Finger-Schreibtrainer"); QString infoSubHeadline = tr("Im Internet: ") + "" + QString(APP_URL) + ""; QString infoText = tr("" "TIPP10 wird unter den Bedingungen der GNU General Public License veroeffentlicht und " "ist kostenlos. Sie muessen dafuer nichts bezahlen, egal wo Sie die Software herunter" "laden!"); QString supportHeadline = tr("TIPP10 unterstuetzen"); QString supportText = tr("" "Sollte Ihnen TIPP10 gut gefallen, wuerden wir uns sehr freuen, wenn Sie das " "Projekt mit einem Geldbetrag unterstuetzen wuerden. Nur so kann " "TIPP10 auch weiterhin kostenlos angeboten, gepflegt und weiterentwickelt werden. Vielen Dank!") + " " + tr("Spenden") + ""; QString licenseHeadline = tr("GNU General Public License"); QString licenseSubHeadline = "TIPP10 Version 2, Copyright (c) 2006-2011, Tom Thielicke IT Solutions"; QString licenseText = tr("" "TIPP10 comes with ABSOLUTELY NO WARRANTY; This is free software, and you are " "welcome to redistribute it under certain conditions;") + " " + tr("details") + ""; QString companyHeadline = tr("TIPP10 wird herausgegeben von"); QString companyText = QString(APP_ORGANIZATION) + ", " + "" + "http://www.thielicke.org" + ""; QMessageBox::about(this, QString(tr("Ueber ") + APP_NAME), QString::fromLatin1("
" "

%1

" "

%2

" "

%3

" "

%4

" "

%5
" "%6

" "

%7
" "%8
" "%9

" "

%10
" "%11

") .arg(infoHeadline) .arg(infoSubHeadline) .arg(versionText) .arg(infoText) .arg(supportHeadline) .arg(supportText) .arg(licenseHeadline) .arg(licenseSubHeadline) .arg(licenseText) .arg(companyHeadline) .arg(companyText)); } void MainWindow::createWidgets() { stackedWidget = new QStackedWidget(this); setCentralWidget(stackedWidget); startWidget = new StartWidget(this); } void MainWindow::createStart() { menuBar()->show(); //setCentralWidget(startWidget); stackedWidget->addWidget(startWidget); stackedWidget->setCurrentWidget(startWidget); connect(startWidget, SIGNAL(trainingClicked(int, int, QString)), this, SLOT(toggleStartToTraining(int, int, QString))); if (!isMaximized() && height() < APP_HEIGHT_STANDARD) { resize(APP_WIDTH_STANDARD, APP_HEIGHT_STANDARD); } setMinimumSize(APP_WIDTH_STANDARD, APP_HEIGHT_STANDARD); } void MainWindow::deleteStart() { stackedWidget->removeWidget(startWidget); disconnect(startWidget, SIGNAL(trainingClicked(int, int, QString)), this, SLOT(toggleStartToTraining(int, int, QString))); startWidget->writeSettings(); //delete startWidget; } void MainWindow::createTraining(int lesson, int type, QString name) { trainingStarted = true; menuBar()->hide(); trainingWidget = new TrainingWidget(lesson, type, name, this); //setCentralWidget(trainingWidget); stackedWidget->addWidget(trainingWidget); stackedWidget->setCurrentWidget(trainingWidget); trainingWidget->tickerBoard->setFocus(); connect(trainingWidget, SIGNAL(lessonReady(int, int, QList, QList)), this, SLOT(toggleTrainingToEvaluation(int, int, QList, QList))); connect(trainingWidget, SIGNAL(lessonCanceled()), this, SLOT(toggleTrainingToStart())); } void MainWindow::deleteTraining() { stackedWidget->removeWidget(trainingWidget); trainingStarted = false; disconnect(trainingWidget, SIGNAL(lessonReady(int, int, QList, QList)), this, SLOT(toggleTrainingToEvaluation(int, int, QList, QList))); disconnect(trainingWidget, SIGNAL(lessonCanceled()), this, SLOT(toggleTrainingToStart())); delete trainingWidget; } void MainWindow::createEvaluation(int row, int type, QList charList, QList mistakeList) { menuBar()->hide(); evaluationWidget = new EvaluationWidget(row, type, charList, mistakeList, this); //setCentralWidget(evaluationWidget); stackedWidget->addWidget(evaluationWidget); stackedWidget->setCurrentWidget(evaluationWidget); connect(evaluationWidget, SIGNAL(readyClicked()), this, SLOT(toggleEvaluationToStart())); if (!isMaximized() && height() < APP_HEIGHT_STANDARD) { resize(APP_WIDTH_STANDARD, APP_HEIGHT_STANDARD); } setMinimumSize(APP_WIDTH_STANDARD, APP_HEIGHT_STANDARD); } void MainWindow::deleteEvaluation() { stackedWidget->removeWidget(evaluationWidget); disconnect(evaluationWidget, SIGNAL(readyClicked()), this, SLOT(toggleEvaluationToStart())); delete evaluationWidget; } void MainWindow::createAbcrain() { menuBar()->hide(); abcRainWidget = new AbcRainWidget(this); //setCentralWidget(evaluationWidget); stackedWidget->addWidget(abcRainWidget); stackedWidget->setCurrentWidget(abcRainWidget); connect(abcRainWidget, SIGNAL(readyClicked()), this, SLOT(toggleAbcrainToStart())); } void MainWindow::deleteAbcrain() { stackedWidget->removeWidget(abcRainWidget); disconnect(abcRainWidget, SIGNAL(readyClicked()), this, SLOT(toggleAbcrainToStart())); delete abcRainWidget; } void MainWindow::toggleStartToTraining(int lesson, int type, QString name) { selectedLesson = lesson; selectedType = type; selectedName = name; deleteStart(); startWidget->fillLessonList(false); createTraining(lesson, type, name); } void MainWindow::toggleTrainingToStart() { deleteTraining(); createStart(); } void MainWindow::toggleTrainingToEvaluation(int row, int type, QList charList, QList mistakeList) { deleteTraining(); createEvaluation(row, type, charList, mistakeList); } void MainWindow::toggleEvaluationToStart() { deleteEvaluation(); createStart(); startWidget->fillLessonList(false); } void MainWindow::toggleStartToEvaluation() { deleteStart(); QList charList; QList mistakeList; createEvaluation(0, 0, charList, mistakeList); } void MainWindow::toggleAbcrainToStart() { deleteAbcrain(); createStart(); startWidget->fillLessonList(false); } void MainWindow::toggleStartToAbcrain() { deleteStart(); createAbcrain(); } void MainWindow::readSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("mainwindow"); #if APP_WIN QByteArray storedGeometry; storedGeometry = settings.value("geometry").toByteArray(); if (storedGeometry.isEmpty() || storedGeometry.isNull()) { resize(QSize(APP_WIDTH_STANDARD, APP_HEIGHT_STANDARD)); move(QPoint(100, 100)); } else { restoreGeometry(storedGeometry); } #else resize(settings.value("size", QSize(APP_WIDTH_STANDARD, APP_HEIGHT_STANDARD)).toSize()); move(settings.value("pos", QPoint(100, 100)).toPoint()); #endif settings.endGroup(); settings.beginGroup("general"); if (settings.value("check_new_version", true).toBool()) { QDate lastVersionCheck = settings.value("last_version_check").toDate(); QDate today = QDate::currentDate(); if (!lastVersionCheck.isValid() || lastVersionCheck.addDays(7) < today) { CheckVersion *checkVersion = new CheckVersion(); connect(checkVersion, SIGNAL(newVersionAvailable()), this, SLOT(newVersionAvailable())); checkVersion->checkVersion(); } settings.setValue("last_version_check", today); } settings.endGroup(); } void MainWindow::writeSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("mainwindow"); #if APP_WIN settings.setValue("geometry", saveGeometry()); #else settings.setValue("size", size()); settings.setValue("pos", pos()); #endif settings.endGroup(); } tipp10-2.1.0/widget/mainwindow.h000066400000000000000000000244311274324046000164450ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the MainWindow class ** File name: mainwindow.h ** ****************************************************************/ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include "startwidget.h" #include "trainingwidget.h" #include "evaluationwidget.h" #include "illustrationdialog.h" #include "licensedialog.h" #include "games/abcrainwidget.h" #include "helpbrowser.h" //! The MainWindow class provides the main window of the application. /*! The MainWindow class shows the main window. At startup it shows the widget StartWidget. Over functions the widget can be changed also to TrainingWidget or Evaluatonwidget. In addition it has an own menu bar. @author Tom Thielicke, s712715 @version 0.1.9 @date 01.07.2006 */ class MainWindow : public QMainWindow { Q_OBJECT public: //! Constructor, initializes the window and shows the start widget. /*! This contructor initializes the following variable: - trainingStarted = false In addition, it sets menu actions and the menu bar over functions createActions() and createMenu(). After that, it creates the start widget over function createStart() and reads the settings over function readSettings(). At the end it sets the window title, icon and window size. @see trainingStarted, createActions(), createMenu(), createStart(), readSettings() */ MainWindow(); //! Deconstructor, writes the current settings to hard disk. /*! This decontructor writes the settings over function writeSettings(). @see writeSettings() */ ~MainWindow(); public slots: //! Slot, deletes the start widget and shows the training widget. /*! This slot deletes the start widget over function deleteStart() and shows the training widget over function createTraining(). @see deleteStart(), createTraining() */ void toggleStartToTraining(int lesson, int type, QString name); //! Slot, deletes the training widget and shows the start widget. /*! This slot deletes the training widget over function deleteTraining() and shows the start widget over function createStart(). @see deleteTraining(), createStart() */ void toggleTrainingToStart(); //! Slot, deletes the training widget and shows the evaluation widget. /*! This slot deletes the training widget over function deleteTraining() and shows the evaluation widget over function createEvaluation(). @see deleteTraining(), createEvaluation() */ void toggleTrainingToEvaluation(int row, int type, QList charList, QList mistakeList); //! Slot, deletes the evaluation widget and shows the start widget. /*! This slot deletes the evaluation widget over function deleteEvaluation() and shows the start widget over function createStart(). @see deleteEvaluation(), createStart() */ void toggleEvaluationToStart(); //! Slot, deletes the start widget and shows the evaluation widget. /*! This slot deletes the start widget over function deleteStart() and shows the evaluation widget over function createEvaluation(). @see deleteStart(), createEvaluation() */ void toggleStartToEvaluation(); //! Slot, deletes the abcrain widget and shows the start widget. /*! This slot deletes the abcrain widget over function deleteAbcrain() and shows the start widget over function createStart(). @see deleteAbcrain(), createStart() */ void toggleAbcrainToStart(); //! Slot, deletes the start widget and shows the abcrain widget. /*! This slot deletes the start widget over function deleteStart() and shows the evaluation widget over function createAbcrain(). @see deleteStart(), createAbcrain() */ void toggleStartToAbcrain(); //! Slot, shows the online update dialog. /*! This slot shows the online update dialog. It creates an object of the UpdateDialog class. @attention It updates the lesson list after the dialog was closed @see UpdateDialog, fillLessonList() */ void showUpdate(); void newVersionAvailable(); private slots: //! Slot, shows the settings dialog. /*! This slot shows the settings dialog. It creates an object of the SettingsDialog class. @attention It updates the lesson list after the dialog was closed @see SettingsDialog, fillLessonList() */ void showSettings(); //! Slot, shows the help dialog. /*! This slot shows the help dialog. It creates an object of the QDialog class with an QTextbrowser. */ void showHelp(); //! Slot, opens a website in the default browser. /*! This slot opens a website (url) in the default browser. */ void openWebsite(); void openDonate(); //! Slot, shows the about dialog. /*! This slot shows the about dialog. It creates a QMessageBox with program informations. To show the database version the version is read over a sql-command. */ void about(); protected: //! Window close event, shows a request if training is started. /*! The window close event detect is user want to close the window. If training is started, the user is asked, wether he really wants to quit. @see trainingStarted */ void closeEvent(QCloseEvent *event); //! Writes the postition and size of the main window to hard disk. void writeSettings(); //! Reads the postition and size of the main window. void readSettings(); private: bool checkLicenseKey(QString licenseKey); //! Creates all necessary actions for the menu bar. /*! This function creates all menu bar actions and connects them to different slots. @see settingsAction, updateAction, exitAction, evalAction, helpAction, aboutAction, about(), close(), showSettings(), showUpdate(), toggleStartToEvaluation() */ void createActions(); //! Creates the menu bar. /*! This function creates the menu bar an its top menu entries. @see fileMenu, evaluationMenu, helpMenu */ void createMenu(); //! Creates all Widgets. /*! This function creates all widgets in a stacked widget. */ void createWidgets(); //! Shows the start widget and enables the menu bar. /*! This function creates an object of the StartWidget class, shows it in the main window and enables the menu bar. @see StartWidget */ void createStart(); //! Shows the training widget and disables the menu bar. /*! This function creates an object of the TrainingWidget class, shows it in the main window and disables (hides) the menu bar. @see TrainingWidget */ void createTraining(int lesson, int type, QString name); //! Shows the evaluation widget and disables the menu bar. /*! This function creates an object of the EvaluationWidget class, shows it in the main window and disables (hides) the menu bar. In addition, the variable trainingStarted is turned true. @see EvaluationWidget, trainingStarted */ void createEvaluation(int row, int type, QList charList, QList mistakeList); //! Shows the abcrain widget and disables the menu bar. /*! This function creates an object of the AbcRainWidget class, shows it in the main window and disables (hides) the menu bar. @see AbcRainWidget */ void createAbcrain(); //! Deletes the start widget. /*! This function deletes the object startWidget. @see StartWidget */ void deleteStart(); //! Deletes the training widget. /*! This function deletes the object trainingWidget and turnes the variable trainingStarted to false. @see TrainingWidget, trainingStarted */ void deleteTraining(); //! Deletes the evaluation widget. /*! This function deletes the object evaluationWidget. @see EvaluationWidget */ void deleteEvaluation(); //! Deletes the abcrain widget. /*! This function deletes the object abcrainWidget. @see AbcRainWidget */ void deleteAbcrain(); //! Flag, training is started. bool trainingStarted; //! Object of the stacked widget QStackedWidget *stackedWidget; //! Object of the start widget. StartWidget *startWidget; //! Object of the training widget. TrainingWidget *trainingWidget; //! Object of the evaluation widget. EvaluationWidget *evaluationWidget; //! Object of the abcrain widget. AbcRainWidget *abcRainWidget; //! Object of the help browser dialog HelpBrowser *helpBrowser; //! Menu entry for the file menu. QMenu *fileMenu; //! Menu entry for the evaluation menu. QMenu *evaluationMenu; //! Menu entry for the help menu. QMenu *helpMenu; //! Menu item for settings. QAction *settingsAction; //! Menu item for online update. QAction *updateAction; //! Menu item for user admin. QAction *usersAction; //! Menu item for exit. QAction *exitAction; //! Menu item for evaluation. QAction *evalAction; //! Menu item for opening the website. QAction *websiteAction; //! Menu item for help. QAction *helpAction; //! Menu item for about. QAction *aboutAction; //! Menu item for game. QAction *gameAction; //! Menu item for donate. QAction *donateAction; int selectedLesson; int selectedType; QString selectedName; }; #endif //MAINWINDOW_H tipp10-2.1.0/widget/numpad.cpp000066400000000000000000000147521274324046000161150ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the KeyBoard class ** File name: numpad.cpp ** ****************************************************************/ #include #include #include #include #include "numpad.h" #include "../def/defines.h" #include "../def/errordefines.h" #include "errormessage.h" NumPad::NumPad(QWidget *parent) : QWidget(parent) { // Read settings (keyboard layout and key coloring) readSettings(); // Load all images used in the keyboard loadKeyImages(); // Start flag isStarted = false; // Pause flag isPaused = false; // Flag whether the key properties where found keyLayoutFound = false; // Default values activeKey = '0'; activeX = 0; activeY = 0; activeColor = 0; activeForm = 0; activeFinger = 8; colorIndex[0] = 4; // yellow colorIndex[1] = 3; // green colorIndex[2] = 2; // blue colorIndex[3] = 1; // red colorIndex[4] = 0; // grey (no additional key) keyColors[0] = QColor(253,232,151); keyColors[1] = QColor(181,235,157); keyColors[2] = QColor(172,215,254); keyColors[3] = QColor(249,174,174); currentPen.setWidth(3); currentPen.setStyle(Qt::DotLine); // Sql class to get the key layout of a given char keyboardSql = new KeyboardSql(layout); // Fix the size of this class because of using fix sized images setFixedSize(180, 228); setAttribute(Qt::WA_NoSystemBackground); } void NumPad::startBoard() { // Turn start flag true isStarted = true; // Turn pause flag false isPaused = false; // Call the paint event (refresh the keyboard) repaint(); } void NumPad::pauseBoard() { // Turn start flag false isStarted = false; // Turn pause flag true isPaused = true; // Call the paint event (refresh the keyboard) update(); } void NumPad::stopBoard() { // Turn start flag false isStarted = false; // Call the paint event (refresh the keyboard) update(); } void NumPad::paintEvent(QPaintEvent *event) { // Draw empty grey keyboard cleanKeyboard(); if (isStarted) { // Color current key and modifier colorKey(); } // Draw keyboard labeling drawLayout(); } void NumPad::loadKeyImages() { // Load background if (!loadImage(background, ":/img/numpadbg.png")) { return; } // Keys // -> four different key colors for (int x = 0; x < 5; x++) { // -> six different key forms for (int y = 0; y < 10; y++) { // Load key if (!loadImage(keyImage[x][y], ":/img/key" + QString::number(x) + "_" + QString::number(y) + ".png")) { return; } } } // Load key labeling if (!loadImage(keyLayout, ":/img/" + layout.left(2) + "_numpad_" + layout.right(3) + ".png")) { return; } } bool NumPad::loadImage(QPixmap &img, QString filename) { // Check whether loading the image is correct if (!img.load(filename)) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_KEY_PIC, TYPE_WARNING, CANCEL_OPERATION, filename); return false; } return true; } void NumPad::cleanKeyboard() { int i; QPainter painter(this); // Background image painter.drawPixmap(0, 0, background); // Keys first row for (i = 0; i < 4; i++) { painter.drawPixmap(10 + (40 * i), 15, keyImage[0][0]); } // Keys second row for (i = 0; i < 3; i++) { painter.drawPixmap(10 + (40 * i), 55, keyImage[0][0]); } if (!isMac) { painter.drawPixmap(130, 55, keyImage[0][9]); } else { painter.drawPixmap(130, 55, keyImage[0][0]); } // Keys third row for (i = 0; i < 3; i++) { painter.drawPixmap(10 + (40 * i), 95, keyImage[0][0]); } if (layout.right(3) == "mac") { painter.drawPixmap(130, 95, keyImage[0][0]); } // Keys fourth row for (i = 0; i < 3; i++) { painter.drawPixmap(10 + (40 * i), 135, keyImage[0][0]); } painter.drawPixmap(130, 135, keyImage[0][9]); // Keys fifth row painter.drawPixmap(10, 175, keyImage[0][7]); painter.drawPixmap(90, 175, keyImage[0][0]); } void NumPad::drawLayout() { QPainter painter(this); // Draw the labeling of the keyboard painter.drawPixmap(10, 15, keyLayout); } // Places the current colored keys void NumPad::colorKey() { QPainter painter(this); if (keyLayoutFound) { if (keyColoring) { // Color current key painter.drawPixmap(activeX, activeY, keyImage[colorIndex[4 - activeColor]][activeForm]); } } } void NumPad::setKey(QChar key) { QString statusText = "0"; // Check whether key is already colored and whether keyboard is started if (activeKey != key && isStarted) { activeFinger = 8; // New current key activeKey = key; // Get the properties of the key if (keyboardSql->getNumLayout(activeKey, &activeX, &activeY, &activeColor, &activeForm, &activeFinger, &statusText)) { keyLayoutFound = true; } else { // No properties were found keyLayoutFound = false; } // Emit the help text of current key(s) emit statusRefreshed(statusText); // Call the paint event (refresh the keyboard) if (keyColoring) { repaint(); } } } void NumPad::readSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif // Check user's keyboard layout settings.beginGroup("general"); layout = settings.value("language_layout", APP_STD_LANGUAGE_LAYOUT).toString(); settings.endGroup(); // Check if key coloring is turned on settings.beginGroup("support"); keyColoring = settings.value("check_selection", true).toBool(); settings.endGroup(); } tipp10-2.1.0/widget/numpad.h000066400000000000000000000231501274324046000155520ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the KeyBoard class ** File name: keyboard.h ** ****************************************************************/ #ifndef NUMPAD_H #define NUMPAD_H #include #include #include #include #include #include #include #include "../sql/keyboardsql.h" //! The KeyBoard class provides a virtuell keyboard widget. /*! The KeyBoard class normally receives the current key over slot setKey(). It then colors the current key if keyColoring is true. When a key is pressed the class receive the written char with a QKeyEvent and emits the char with signal keyPressed(). Start and stop the keyboard class with function startBoard and stopBoard. When the keyboard is stopped it colors the startposition(the eight keys where users fingers musst place on start) and the space key. Pause it with function pauseBoard. When the keyboard is paused ist colors only the space key. The store the properties of the current key and modifier and to access it every time over the paint event, private variables are used. @author Tom Thielicke, s712715 @version 0.1.6 @date 16.06.2006 */ class NumPad : public QWidget { // Necessary to create own signals, slots and connections Q_OBJECT public: //! Constructor: initializes variables, images, settings and sql class. /*! In this contructor the following variables are initialized: - isStarted = false - isPaused = false - keyLayoutFound = false - activeKey = '0' - activeX = 0 - activeY = 0 - activeColor = 0 - activeForm = 0 - activeModifier = 0 - activeModifierX = 0 - activeModifierY = 0 - activeModifierColor = 0 - activeModifierForm = 0 In addition, the settings are read over function readSettings() and all png image files are loaded over function loadKeyImages(). The widget is set to a fixed size because of using fix sized images. @param parent The parent QWidget @attention To ensure that the KeyEvent is acting it is very important that there is a strong focus on this widget @see readSettings(), loadKeyImages(), keyboardSql, isStarted, isPaused, keyLayoutFound, activeKey, activeX, activeY, activeColor, activeForm, activeModifier, activeModifierX, activeModifierY, activeModifierColor, activeModifierForm */ NumPad(QWidget *parent = 0); signals: //! Signal, emits the current text for the status bar. /*! This signal is used to transmit a help text for the status bar. It is used in the function setKey(). After a new key was successfully set, the functions getKeyLayout() and getModifierLayout() put a status text together which is then emitted over this signal. */ void statusRefreshed(QString statustext); public slots: //! Slot, sets the current char and refreshes the keyboard. /*! Only if parameter key is a different char than the current one and the flag isStarted is true, this function converts the key into properties and statustext of current key and modifier. After a successfully convertion update() is called to repaint the keyboard and the signal statusRefreshed() is emited. @pre Flag isStarted must be true @param key Unicode char of the current key @see activeKey, activeX, activeY, activeColor, activeForm, activeModifier, activeModifierX, activeModifierY, activeModifierColor, activeModifierForm */ void setKey(QChar key); //! Slot, starts the keyboard. /*! This slot turns the flag isStarted to true and the flag isPaused to false. After that update() is called to repaint the keyboard. @see isStarted, isPaused */ void startBoard(); //! Slot, stops the keyboard. /*! This slot stops the keyboard by turning flag isStarted to false. After that update() is called to repaint the keyboard. @see isStarted */ void stopBoard(); //! Slot, pauses the keyboard. /*! This slot turns the flag isStarted to false and the flag isPaused to true. After that update() is called to repaint the keyboard. @see isStarted, isPaused */ void pauseBoard(); protected: //! Paintevent, draws current view of the keyboard with functions. /*! The paintevent is called every time when the window changes or the function update() is called. It first executes the function cleanKeyboard() to get a full grey board, after that it colors the current key and modifier over function colorKey() if flag isStarted is true. If not it calls instead the function colorStart() to show the startposition or a paused keyboard. At the end it excutes the function drawLayout() to give the keyboard its labeling. @param event Event of the paint function @see isStarted, cleanKeyboard(), colorKey(), colorStart(), drawLayout() */ void paintEvent(QPaintEvent *event); private: //! Puts the background and grey key images together to a keyboard. /*! This function places the preloaded background image and all grey key images to a full keyboard (without labels). This happens with fixed coordinates because the function is called always when the paintevent reacts. Loading the coordinates every time from the sql database would be very slow and it is not necessary because the keyboard layout is always fix (it doesn't make any difference wether the keyboard is an apple or windows board). The preloaded key images are located in the private QImage array keyImage[][] and the background image in the private QImage variable background. @see keyImage[][], background */ void cleanKeyboard(); //! Colors the current key and possibly the current modifier. /*! If flag keyColoring is true and a key layout was found (keyLayoutFound is true) this function draws the current key and possibly a modifier with the current properties. @pre flag keyLayoutFound is true and flag isColoring is true @see activeKey, activeX, activeY, activeColor, activeForm, activeModifier, activeModifierX, activeModifierY, activeModifierColor, activeModifierForm, keyImage[][] */ void colorKey(); //! Sets the keyboard labeling. /*! This function draws the image loaded in variable keyLayout. It is necessary to set the image not until the full keyboard is drawn because the labeling could be covered. @see keyLayout */ void drawLayout(); //! Loads all images of the keyboard. /*! This function loads the background image, the key images (there are six different forms, every form has four different colors) and the labeling of the keyboard. To load the image the function loadImage() is used. The filenames of the keys are located in the directory "img/" and are labeled "key_x_y.png", where x (0-4) is the color and y (0-6) is the form of every key. The labeling of the full keyboard is defined in the file keylayout_win and keylayout_mac respectively. @see loadImage(), background, keyImage[][], keyLayout */ void loadKeyImages(); //! Loads an image. /*! This function loads the image filename to the QImage img. @param img The QImage which gets the image @param filename The file name of the image @return Bool value true if funtion succeeded */ bool loadImage(QPixmap &img, QString filename); //! Reads the keyboard layout and the key coloring settings. /*! This function checks whether the user has selected a windows or macintosh keyboard layout and if key coloring is turned on or off. @see opSystem, keyColoring */ void readSettings(); //! Holds the index (the order) of the key colors. int colorIndex[4]; //! Holds the images of the keys. QColor keyColors[4]; //! Holds the images of the keys. QPixmap keyImage[5][10]; //! Holds the image of the keyboard layout. QPixmap keyLayout; //! Holds the image of the keyboard background. QPixmap background; //! Object of the corresponding sql class. KeyboardSql *keyboardSql; //! Flag, keyboard is started. bool isStarted; //! Flag, keyboard is paused. bool isPaused; //! Flag, the properties of the current key where found. bool keyLayoutFound; //! Flag, coloring of key is turned on or off. bool keyColoring; //! Unicode char of the current key. QChar activeKey; //! Unicode char of the current key. bool isMac; //! X coordinate of the current key. int activeX; //! Y coordinate of the current key. int activeY; //! Color of the current key (0-4). int activeColor; //! Form of the current key (0-6). int activeForm; //! Finger code of the current key (0-7). int activeFinger; //! Used keyboard layout. QString layout; QPen currentPen; }; #endif // NUMPAD_H tipp10-2.1.0/widget/progressionwidget.cpp000066400000000000000000000503361274324046000204050ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the KeyBoard class ** File name: progressionwidget.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "progressionwidget.h" ProgressionWidget::ProgressionWidget(QWidget *parent) : QWidget(parent) { // Get language #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); language = settings.value("language_gui", APP_STD_LANGUAGE_GUI).toString(); settings.endGroup(); // Fix the size of this class because of using fix sized images //setFixedSize(600, 310); whereClausel = ""; orderClausel = "ORDER BY user_lesson_timestamp"; xAxis = tr("Zeitpunkt"); xAxisColumn = 1; lessonSelected = -1; // Create filter headline labelFilter = new QLabel(tr("Zeige: ")); comboFilter = new QComboBox(); comboFilter->insertItem(0, tr("Alle Lektionen")); comboFilter->insertItem(1, tr("Uebungslektionen")); comboFilter->insertItem(2, tr("Freie Lektionen")); comboFilter->insertItem(3, tr("Eigene Lektionen")); labelOrder = new QLabel(tr("X-Achse sortieren nach: ")); comboOrder = new QComboBox(); comboOrder->insertItem(0, tr("Zeitpunkt")); comboOrder->insertItem(1, tr("Lektion")); //comboOrder->insertItem(2, tr("A/min")); //comboOrder->insertItem(3, tr("Bewertung")); // Set a horizonal layout QHBoxLayout *filterLayout = new QHBoxLayout; filterLayout->addStretch(1); filterLayout->addWidget(labelOrder); filterLayout->addWidget(comboOrder); filterLayout->addSpacing(20); filterLayout->addWidget(labelFilter); filterLayout->addWidget(comboFilter); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(filterLayout); mainLayout->addStretch(1); // Pass layout to parent widget (this) this->setLayout(mainLayout); connect(comboFilter, SIGNAL(activated(int)), this, SLOT(changeFilter(int))); connect(comboOrder, SIGNAL(activated(int)), this, SLOT(changeOrder(int))); getChartValues(); setMouseTracking(true); } void ProgressionWidget::getChartValues() { QSqlQuery query; QString lessonNumber; QDateTime timeStamp; QString timeStampShort; QString timeStampLong; double gradeTemp; QString gradeTempString; double cpmTemp; QString cpmTempString; lessonCounter = 0; lessonAv = 0; lessonsNumbers.clear(); lessonsAxis.clear(); lessonsGrades.clear(); lessonsCpms.clear(); lessonsType.clear(); // SQL: all lessons sorted by id and a left joint to the number of // lessons done by the user if (!query.exec("SELECT user_lesson_lesson, user_lesson_timestamp, " "(((user_lesson_strokesnum - (20.0 * user_lesson_errornum)) / " "(user_lesson_timelen / 60.0)) * 0.4) AS user_lesson_grade, " "user_lesson_id, (user_lesson_strokesnum / " "(user_lesson_timelen / 60.0)), user_lesson_type, " "user_lesson_name AS user_lesson_cpm FROM user_lesson_list " + whereClausel + orderClausel + ";")) { return; } lessonGradeMax = 0; // Read all datasets to list items while (query.next()) { // Number of the lesson lessonsNumbers.append(QString::number(query.value(0).toInt() % 100)); // Timestamp of the lesson timeStamp = QDateTime::fromString(query.value(1).toString(), "yyyyMMddhhmmss"); timeStampShort = QDateTime::fromString(query.value(xAxisColumn).toString(), "yyyyMMddhhmmss").toString((language == "de" ? "dd.MM.yyyy" : "MMM d, yyyy")); timeStampLong = timeStamp.toString((language == "de" ? "dd.MM.yyyy hh:mm" : "MMM d, yyyy hh:mm ap")) + (language == "de" ? tr(" Uhr") : ""); lessonsTimestamps.append(timeStampLong); // X-Axis of the chart if (xAxisColumn == 1) { lessonsAxis.append(timeStampShort); } else { if (xAxisColumn == 2 && query.value(2).toInt() < 0) { lessonsAxis.append("0"); } else { lessonsAxis.append(query.value(xAxisColumn).toString()); } } // Type of lesson lessonsType.append(query.value(5).toInt()); // Name of lesson lessonsNames.append(query.value(6).toString()); // Grade of the lesson gradeTemp = (query.value(2).toDouble() > 0 ? query.value(2).toDouble() : 0); gradeTempString.sprintf("%.0f", gradeTemp); lessonsGrades.append(gradeTempString.toInt()); // CPM of the lesson cpmTemp = query.value(4).toDouble(); cpmTempString.sprintf("%.0f", cpmTemp); lessonsCpms.append(cpmTempString.toInt()); // Maximum if (query.value(2).toInt() > lessonGradeMax) { lessonGradeMax = query.value(2).toInt(); } // Average if (query.value(2).toInt() > 0) { lessonAv += query.value(2).toInt() ; } lessonsX.append(0.0); lessonsY.append(0.0); lessonCounter++; } if (lessonGradeMax > 120) { lessonGradeMax += 10; } else { lessonGradeMax = 120; } if (lessonCounter != 0) { lessonAv = lessonAv / lessonCounter; } update(); } void ProgressionWidget::paintEvent(QPaintEvent *event) { if (lessonCounter > 1) { drawGrid(); drawGraph(); } else { drawNothing(); } } void ProgressionWidget::mouseMoveEvent(QMouseEvent *event) { lessonSelected = -1; for (int x = 0; x < lessonCounter; x++) { if ((double) event->pos().x() > lessonsX[x] - 6.0 && (double) event->pos().x() < lessonsX[x] + 6.0 && (double) event->pos().y() > lessonsY[x] - 6.0 && (double) event->pos().y() < lessonsY[x] + 6.0) { lessonSelected = x; } } repaint(); } void ProgressionWidget::drawTooltip(QPainter *painter, double x, double y, QString message) { double yOffset = -66.0; if (y < ((double) this->height() * (2.0/5.0))) { yOffset = 6.0; } painter->setRenderHint(QPainter::Antialiasing, false); painter->setFont(QFont(FONT_STANDARD, FONT_SIZE_PROGRESS)); painter->setPen(QColor(0, 0, 0)); painter->setBrush(QColor(255, 255, 255)); painter->drawRect(QRectF(x - 60.0, y + yOffset, 138.0, 60.0)); painter->drawText(QRectF(x - 60.0, y + yOffset, 138.0, 60.0), Qt::AlignCenter | Qt::AlignTop, message); } void ProgressionWidget::drawGrid() { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, false); double widgetLeft = 20.0; double widgetTop = 40.0; double widgetWidth = (double) this->width() - 20.0; double widgetHeight = (double) this->height(); int lessonCounterTemp; if (lessonCounter > 1) { lessonCounterTemp = lessonCounter; } else { lessonCounterTemp = 2; } double xUnit = (widgetWidth - 120.0) / ((double) (lessonCounterTemp - 1)); double yUnit = (widgetHeight - 110.0) / (double) lessonGradeMax; //120; QPen penDashLine; painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_PROGRESS)); painter.setPen(QColor(0, 0, 0)); // Text y axis painter.drawText(QRectF(widgetLeft, (widgetTop + widgetHeight - 113.0 - ((double) lessonGradeMax * yUnit)), 50.0, 10.0), Qt::AlignCenter | Qt::AlignVCenter, tr("Punkte")); // Text x axis painter.drawText(QRectF((widgetLeft + 60.0 + ((double) (lessonCounterTemp - 1) * xUnit)), (widgetTop + widgetHeight - 91.0), 60.0, 20.0), Qt::AlignLeft | Qt::AlignVCenter, xAxis); // y axis painter.drawLine(QLineF(widgetLeft + 30.0, widgetTop + widgetHeight - 95.0 - (lessonGradeMax * yUnit), widgetLeft + 30.0, widgetTop + widgetHeight - 80.0)); // y axis arrow painter.drawLine(QLineF(widgetLeft + 28.0, widgetTop + widgetHeight - 93.0 - (lessonGradeMax * yUnit), widgetLeft + 30.0, widgetTop + widgetHeight - 95.0 - (lessonGradeMax * yUnit))); painter.drawLine(QLineF(widgetLeft + 32.0, widgetTop + widgetHeight - 93.0 - (lessonGradeMax * yUnit), widgetLeft + 30.0, widgetTop + widgetHeight - 95.0 - (lessonGradeMax * yUnit))); // x axis painter.drawLine(QLineF(widgetLeft + 28.0, widgetTop + widgetHeight - 80.0, widgetLeft + 50.0 + ((double)(lessonCounterTemp - 1) * xUnit), widgetTop + widgetHeight - 80.0)); // x axis arrow painter.drawLine(QLineF(widgetLeft+ 48.0 + ((double) (lessonCounterTemp - 1) * xUnit), widgetTop + widgetHeight - 82.0, widgetLeft + 50.0 + ((double) (lessonCounterTemp - 1) * xUnit), widgetTop + widgetHeight - 80.0)); painter.drawLine(QLineF(widgetLeft + 48.0 + ((double) (lessonCounterTemp - 1) * xUnit), widgetTop + widgetHeight - 78.0, widgetLeft + 50.0 + ((double) (lessonCounterTemp - 1) * xUnit), widgetTop + widgetHeight - 80.0)); // Bottom unit line y axis painter.drawText(QRectF(widgetLeft + 4.0, widgetTop + widgetHeight - 85.0, 20.0, 10.0), Qt::AlignCenter | Qt::AlignVCenter, "0"); // Unit lines and text y axis for (int x = 1; x <= (lessonGradeMax / 10); x++) { painter.drawLine(QLineF(widgetLeft + 28.0, widgetTop + widgetHeight - 80.0 - ((double) x * yUnit * 10.0), widgetLeft + 50.0 + ((double) (lessonCounterTemp - 1) * xUnit), widgetTop + widgetHeight - 80.0 - ((double) x * yUnit * 10.0))); painter.drawText(QRectF(widgetLeft + 4.0, widgetTop + widgetHeight - 85.0 - ((double) x * yUnit * 10.0), 20.0, 10.0), Qt::AlignCenter | Qt::AlignVCenter, QString::number(x * 10)); } // Text x axis if (lessonCounter > 0) { painter.drawText(QRectF(widgetLeft - 20.0, widgetTop + widgetHeight - 74.0, 120.0, 30.0), Qt::AlignCenter | Qt::AlignVCenter | Qt::TextWordWrap, lessonsAxis[0]); } if (lessonCounter > 1) { painter.drawText(QRectF(widgetLeft - 20.0 + ((double) (lessonCounter - 1) * xUnit), widgetTop + widgetHeight - 74.0, 120.0, 30.0), Qt::AlignCenter | Qt::AlignVCenter | Qt::TextWordWrap, lessonsAxis[lessonCounter - 1]); } // Average penDashLine.setBrush(QColor(249, 126, 50)); penDashLine.setStyle(Qt::DashLine); painter.setPen(penDashLine); painter.drawLine(QLineF(widgetLeft + 28.0, widgetTop + widgetHeight - 80.0 - ((double) lessonAv * yUnit), widgetLeft + 50.0 + ((double) (lessonCounterTemp - 1) * xUnit), widgetTop + widgetHeight - 80.0 - ((double) lessonAv * yUnit))); penDashLine.setStyle(Qt::SolidLine); painter.setPen(penDashLine); painter.drawEllipse(QRectF(widgetLeft - 10.0, widgetTop + (widgetHeight - 80.0) - ((double) lessonAv * yUnit) - 3.0, 6.0, 6.0)); painter.drawLine(QLineF(widgetLeft - 5.0, widgetTop + widgetHeight - 80.0 - ((double) lessonAv * yUnit) - 5.0, widgetLeft - 10.0, widgetTop + widgetHeight - 80.0 - ((double) lessonAv * yUnit) + 5.0)); } void ProgressionWidget::drawGraph() { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); QPen penOrange; QPen penBlack; QPen penBlue; QPen penGreen; QPen penWhite; QLineF line; double currentValue; double nextValue; double widgetLeft = 20.0; double widgetTop = 40.0; double widgetWidth = this->width() - 20.0; double widgetHeight = this->height(); int lessonCounterTemp; if (lessonCounter > 1) { lessonCounterTemp = lessonCounter; } else { lessonCounterTemp = 2; } double xUnit = (widgetWidth - 120.0) / ((double) (lessonCounterTemp - 1)); double yUnit = (widgetHeight - 110.0) / (double) lessonGradeMax; painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_PROGRESS)); penOrange.setStyle(Qt::SolidLine); penOrange.setBrush(QColor(249, 126, 50)); penOrange.setCapStyle(Qt::RoundCap); penOrange.setJoinStyle(Qt::RoundJoin); penOrange.setWidth(2); penBlack.setStyle(Qt::SolidLine); penBlack.setBrush(QColor(0, 0, 0)); penBlack.setCapStyle(Qt::RoundCap); penBlack.setJoinStyle(Qt::RoundJoin); penBlack.setWidth(2); penBlue.setStyle(Qt::SolidLine); penBlue.setBrush(QColor(60, 60, 180)); penBlue.setCapStyle(Qt::RoundCap); penBlue.setJoinStyle(Qt::RoundJoin); penBlue.setWidth(2); penGreen.setStyle(Qt::SolidLine); penGreen.setBrush(QColor(60, 180, 60)); penGreen.setCapStyle(Qt::RoundCap); penGreen.setJoinStyle(Qt::RoundJoin); penGreen.setWidth(2); penWhite.setStyle(Qt::SolidLine); penWhite.setBrush(QColor(255, 255, 255)); penWhite.setCapStyle(Qt::RoundCap); penWhite.setJoinStyle(Qt::RoundJoin); penWhite.setWidth(2); // Legend if (whereClausel == "") { #if APP_MAC //Mac Version: //----------- painter.setPen(penBlack); painter.drawEllipse(QRectF(widgetLeft + 60.0, widgetTop - 20.0, 4.0, 4.0)); painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_PROGRESS)); painter.drawText(QRectF(widgetLeft + 70.0, widgetTop - 24.0, 90.0, 12.0), Qt::AlignLeft | Qt::AlignVCenter, tr("Uebungslektion")); painter.setPen(penBlue); painter.drawEllipse(QRectF(widgetLeft + 60.0, widgetTop - 5.0, 4.0, 4.0)); painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_PROGRESS)); painter.drawText(QRectF(widgetLeft + 70.0, widgetTop - 9.0, 90.0, 12.0), Qt::AlignLeft | Qt::AlignVCenter, tr("Freie Lektion")); painter.setPen(penGreen); painter.drawEllipse (QRectF(widgetLeft + 60.0, widgetTop + 10.0, 4.0, 4.0)); painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_PROGRESS)); painter.drawText(QRectF(widgetLeft + 70.0, widgetTop + 6.0, 90.0, 12.0), Qt::AlignLeft | Qt::AlignVCenter, tr("Eigene Lektion")); #else //Win Version: //----------- painter.setPen(penBlack); painter.drawEllipse(QRectF(widgetLeft + 70.0, widgetTop - 20.0, 4.0, 4.0)); painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_PROGRESS)); painter.drawText(QRectF(widgetLeft + 80.0, widgetTop - 24.0, 90.0, 12.0), Qt::AlignLeft | Qt::AlignVCenter, tr("Uebungslektion")); painter.setPen(penBlue); painter.drawEllipse(QRectF(widgetLeft + 70.0, widgetTop - 5.0, 4.0, 4.0)); painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_PROGRESS)); painter.drawText(QRectF(widgetLeft + 80.0, widgetTop - 9.0, 90.0, 12.0), Qt::AlignLeft | Qt::AlignVCenter, tr("Freie Lektion")); painter.setPen(penGreen); painter.drawEllipse(QRectF(widgetLeft + 70.0, widgetTop + 10.0, 4.0, 4.0)); painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_PROGRESS)); painter.drawText(QRectF(widgetLeft + 80.0, widgetTop + 6.0, 90.0, 12.0), Qt::AlignLeft | Qt::AlignVCenter, tr("Eigene Lektion")); #endif } // Number of lines for (int x = 0; x < lessonCounter; x++) { painter.setPen(penOrange); currentValue = (double) lessonsGrades[x]; if (currentValue < 0) { currentValue = 0.0; } if (x < lessonCounter - 1) { nextValue = (double) lessonsGrades[x + 1]; if (nextValue < 0) { nextValue = 0.0; } painter.drawLine(QLineF(widgetLeft + 40.0 + ((double) x * xUnit), widgetTop + (widgetHeight - 80) - (currentValue * yUnit), widgetLeft + 40.0 + ((double) (x + 1) * xUnit), widgetTop + (widgetHeight - 80.0) - (nextValue * yUnit))); } switch (lessonsType[x]) { case 0: default: painter.setPen(penBlack); break; case 1: painter.setPen(penBlue); break; case 2: painter.setPen(penGreen); break; } if (lessonSelected == x) { painter.setPen(penWhite); } lessonsX[x] = widgetLeft + 40.0 + ((double) x * xUnit); lessonsY[x] = widgetTop + (widgetHeight - 80.0) - (currentValue * yUnit); painter.drawEllipse(QRectF(lessonsX[x] - 2.0, lessonsY[x] - 2.0, 4.0, 4.0)); //painter.setPen(QColor(255, 255, 255)); //painter.drawLine(60 + (x * xUnit), widgetHeight - 80, // 60 + (x * xUnit), (widgetHeight - 80) - (currentValue * yUnit)); if (lessonsType[x] == 0) { painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_PROGRESS_LESSON)); painter.drawText(QRectF(widgetLeft + 30.0 + ((double) x * xUnit), widgetTop + (widgetHeight - 96.0) - (currentValue * yUnit), 20.0, 10.0), Qt::AlignCenter | Qt::AlignVCenter, lessonsNumbers[x]); } } if (lessonSelected != -1) { drawTooltip(&painter, lessonsX[lessonSelected], lessonsY[lessonSelected], lessonsNames[lessonSelected] + "\n" + QString::number(lessonsGrades[lessonSelected]) + (lessonsGrades[lessonSelected] == 1 ? tr(" Punkt") : tr(" Punkte")) + " / " + QString::number(lessonsCpms[lessonSelected]) + tr(" A/min") + "\n" + lessonsTimestamps[lessonSelected]); } } void ProgressionWidget::drawNothing() { QPainter painter(this); //painter.setRenderHint(QPainter::Antialiasing); int widgetWidth = this->width(); int widgetHeight = this->height(); painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_PROGRESS)); painter.setPen(QColor(0, 0, 0)); // Text y axis painter.drawText(QRectF(0.0, 0.0, widgetWidth, widgetHeight), Qt::AlignCenter | Qt::AlignVCenter, tr("Der Verlauf wird erst nach der zweiten absolvierten Lektion sichtbar.")); } void ProgressionWidget::changeFilter(int rowindex) { // Select columnname from columnindex switch (rowindex) { case 0: whereClausel = ""; break; case 1: default: whereClausel = "WHERE user_lesson_type = 0 "; break; case 2: whereClausel = "WHERE user_lesson_type = 1 "; break; case 3: whereClausel = "WHERE user_lesson_type = 2 "; break; } // Call new query getChartValues(); } void ProgressionWidget::changeOrder(int rowindex) { // Select columnname from columnindex switch (rowindex) { case 0: orderClausel = "ORDER BY user_lesson_timestamp"; xAxis = tr("Zeitpunkt"); xAxisColumn = 1; break; case 1: default: orderClausel = "ORDER BY user_lesson_type, user_lesson_lesson"; xAxis = tr("Lektion"); xAxisColumn = 6; break; case 2: orderClausel = "ORDER BY user_lesson_cpm"; xAxis = tr("A/min"); xAxisColumn = 4; break; case 3: orderClausel = "ORDER BY user_lesson_grade"; xAxis = tr("Bewertung"); xAxisColumn = 2; break; } // Call new query getChartValues(); } tipp10-2.1.0/widget/progressionwidget.h000066400000000000000000000051131274324046000200430ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the ProgressionWidget class ** File name: progressionwidget.h ** ****************************************************************/ #ifndef PROGRESSIONWIDGET_H #define PROGRESSIONWIDGET_H #include #include #include #include #include #include #include #include #include "def/defines.h" //! The ProgressionWidget class provides a progression chart. /*! @author Tom Thielicke, s712715 @version 0.1.6 @date 16.06.2006 */ class ProgressionWidget : public QWidget { // Necessary to create own signals, slots and connections Q_OBJECT public: ProgressionWidget(QWidget *parent = 0); signals: private slots: void changeFilter(int rowindex); void changeOrder(int rowindex); protected: //! Paintevent, draws current view of the chart. void paintEvent(QPaintEvent *event); void mouseMoveEvent(QMouseEvent *event); private: void getChartValues(); void drawGrid(); void drawGraph(); void drawNothing(); void drawTooltip(QPainter *painter, double x, double y, QString message); QList lessonsNumbers; QList lessonsTimestamps; QList lessonsNames; QList lessonsAxis; QList lessonsGrades; QList lessonsCpms; QList lessonsType; QList lessonsX; QList lessonsY; QLabel *labelFilter; QComboBox *comboFilter; QLabel *labelOrder; QComboBox *comboOrder; int lessonCounter; int lessonGradeMax; int lessonAv; QString whereClausel; QString orderClausel; QString xAxis; int xAxisColumn; QString language; int lessonSelected; }; #endif // PROGRESSIONWIDGET_H tipp10-2.1.0/widget/regexpdialog.cpp000066400000000000000000000147561274324046000173070ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the RegExpDialog class ** File name: regexpdialog.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include #include "regexpdialog.h" #include "sql/trainingsql.h" #include "def/errordefines.h" #include "errormessage.h" #include "def/defines.h" RegExpDialog::RegExpDialog(QString layout, QWidget *parent) : QDialog(parent) { setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint); currentLayout = layout; // Create buttons createButtons(); // Create controls createControls(); // Set the layout of all widgets created above createLayout(); readSettings(); // Widget connections connect(buttonSave, SIGNAL(clicked()), this, SLOT(clickSave())); connect(buttonCancel, SIGNAL(clicked()), this, SLOT(reject())); connect(buttonDefault, SIGNAL(clicked()), this, SLOT(getDefault())); setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME))); setMinimumSize(420, 300); buttonSave->setFocus(); } void RegExpDialog::createButtons() { // Buttons buttonCancel = new QPushButton(tr("&Abbrechen")); buttonSave = new QPushButton(tr("&Speichern")); buttonDefault = new QPushButton(tr("S&tandard")); buttonSave->setDefault(true); } void RegExpDialog::createControls() { QFont h2; #if APP_MAC h2.setPointSize(11); #else h2.setPointSize(7); #endif // Labels labelRegExp = new QLabel(tr("Zeichenbegrenzung")); labelRegExpHelp = new QLabel(tr("Es sollen Schriftzeichen vermieden werden, die das " "aktuelle Tastaturlayout nicht unterstuetzt. " "Daher wird auf alle Uebungstexte vor dem Training ein " "Filter in Form eines regulaeren Ausdrucks " "angewendet. Sie sollten Aenderungen nur " "durchfuehren, wenn Sie sich mit regulaeren " "Ausdruecken auskennen.")); labelRegExpHelp->setFont(h2); labelRegExpHelp->setWordWrap(true); labelReplace = new QLabel(tr("Ersetzungsfilter")); labelReplaceHelp = new QLabel(tr("Durch das Filtern auf zugelassene Schriftzeichen " "kann sinnloser Text entstehen (z.B. durch " "das Entfernen von Umlauten). Sie koennen hier " "Ersetzungen definieren, die vor der Zeichenbegrenzung auf " "den Text angewendet werden. Verwenden Sie dazu " "eine Form wie in nachfolgendem Beispiel, das alle " "deutschen Umlaute und Sz ersetzt:") + "\n" + tr("ae=ae,oe=oe,ue=ue,Ae=Ae,Oe=Oe,Ue=Ue,ss=ss")); labelReplaceHelp->setFont(h2); labelReplaceHelp->setWordWrap(true); // Lines (text input) lineRegExp = new QLineEdit(); lineReplace = new QLineEdit(); setWindowTitle(tr("Filter fuer das Tastaturlayout")); } void RegExpDialog::createLayout() { // Button layout horizontal QHBoxLayout *buttonLayoutHorizontal = new QHBoxLayout; buttonLayoutHorizontal->addWidget(buttonDefault); buttonLayoutHorizontal->addStretch(1); buttonLayoutHorizontal->addWidget(buttonCancel); buttonLayoutHorizontal->addSpacing(10); buttonLayoutHorizontal->addWidget(buttonSave); // Group layout vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(labelRegExp); mainLayout->addWidget(lineRegExp); mainLayout->addWidget(labelRegExpHelp); mainLayout->addSpacing(10); mainLayout->addWidget(labelReplace); mainLayout->addWidget(lineReplace); mainLayout->addWidget(labelReplaceHelp); mainLayout->addSpacing(10); mainLayout->addLayout(buttonLayoutHorizontal); mainLayout->setMargin(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void RegExpDialog::clickSave() { writeSettings(); this->accept(); } void RegExpDialog::getDefault() { TrainingSql *trainingSql = new TrainingSql(); lineRegExp->setText(trainingSql->getKeyboardLayoutRegexpRoutine(currentLayout)); lineReplace->setText(trainingSql->getKeyboardLayoutReplaceRoutine(currentLayout)); } void RegExpDialog::readSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); QString regexp = settings.value("layout_regexp", "NULL").toString(); QString replace = settings.value("layout_replace", "NULL").toString(); settings.endGroup(); TrainingSql *trainingSql = new TrainingSql(); if (regexp == "NULL") { regexp = trainingSql->getKeyboardLayoutRegexpRoutine(currentLayout); } if (replace == "NULL") { replace = trainingSql->getKeyboardLayoutReplaceRoutine(currentLayout); } lineRegExp->setText(regexp); lineReplace->setText(replace); } void RegExpDialog::writeSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); settings.setValue("layout_replace", lineReplace->text()); settings.setValue("layout_regexp", lineRegExp->text()); settings.endGroup(); } tipp10-2.1.0/widget/regexpdialog.h000066400000000000000000000047701274324046000167470ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the RegExpDialog class ** File name: regexpdialog.h ** ****************************************************************/ #ifndef REGEXPDIALOG_H #define REGEXPDIALOG_H #include #include #include #include #include #include "helpbrowser.h" //! The RegExpDialog class provides a keyboard layout regular expression dialog. class RegExpDialog : public QDialog { Q_OBJECT public: RegExpDialog(QString layout, QWidget *parent = 0); public slots: private slots: //! Slot, saves the setting data. /*! After the user clicked the save button, this function saves the settings over function writeSettings() and closes the current dialog. @see writeSettings() */ void clickSave(); //! Slot, shows the help dialog. /*! This slot shows the help dialog. It creates an object of the QDialog class with an QTextbrowser. */ void getDefault(); private: //! Reads all user settings. void readSettings(); void writeSettings(); //! Creates a cancel and a save button. void createButtons(); //! Creates the layout of the complete class. void createLayout(); //! Creates the controls. void createControls(); QLabel *labelRegExp; QLabel *labelReplace; QLabel *labelRegExpHelp; QLabel *labelReplaceHelp; QLineEdit *lineRegExp; QLineEdit *lineReplace; QPushButton *buttonSave; QPushButton *buttonCancel; QPushButton *buttonDefault; QString currentLayout; //! Object of the help browser dialog HelpBrowser *helpBrowser; }; #endif //REGEXPDIALOG_H tipp10-2.1.0/widget/settingsdialog.cpp000066400000000000000000000146111274324046000176430ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the SettingDialog class ** File name: settingsdialog.cpp ** ****************************************************************/ #include #include #include #include "settingsdialog.h" #include "sql/startsql.h" #include "sql/connection.h" #include "def/errordefines.h" #include "errormessage.h" #include "def/defines.h" SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent) { setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint); contentsWidget = new QListWidget; contentsWidget->setViewMode(QListView::IconMode); contentsWidget->setIconSize(QSize(96, 49)); contentsWidget->setMovement(QListView::Static); contentsWidget->setMinimumWidth(120); contentsWidget->setMaximumWidth(120); //128 contentsWidget->setMinimumHeight(308); contentsWidget->setSpacing(6); trainingPage = new TrainingPage; databasePage = new DatabasePage; otherPage = new OtherPage; languagePage = new LanguagePage; pagesWidget = new QStackedWidget; pagesWidget->addWidget(trainingPage); pagesWidget->addWidget(languagePage); pagesWidget->addWidget(databasePage); pagesWidget->addWidget(otherPage); //Buttons buttonCancel = new QPushButton(tr("&Abbrechen")); buttonSave = new QPushButton(tr("&Speichern")); buttonHelp = new QPushButton(tr("&Hilfe")); buttonSave->setDefault(true); createIcons(); contentsWidget->setCurrentRow(0); connect(buttonSave, SIGNAL(clicked()), this, SLOT(clickSave())); connect(buttonCancel, SIGNAL(clicked()), this, SLOT(reject())); connect(buttonHelp, SIGNAL(clicked()), this, SLOT(showHelp())); QHBoxLayout *horizontalLayout = new QHBoxLayout; horizontalLayout->addWidget(contentsWidget); horizontalLayout->addWidget(pagesWidget, 1); QHBoxLayout *buttonsLayout = new QHBoxLayout; buttonsLayout->addStretch(1); buttonsLayout->addWidget(buttonCancel); buttonsLayout->addSpacing(10); buttonsLayout->addWidget(buttonHelp); buttonsLayout->addWidget(buttonSave); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(horizontalLayout); mainLayout->addStretch(1); mainLayout->addSpacing(6); mainLayout->addLayout(buttonsLayout); setLayout(mainLayout); readSettings(); setWindowTitle(tr("Grundeinstellungen")); setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME))); buttonSave->setFocus(); } void SettingsDialog::createIcons() { QListWidgetItem *buttonTraining = new QListWidgetItem(contentsWidget); buttonTraining->setIcon(QIcon(":/img/config_1.png")); buttonTraining->setText(tr("Schreibtraining")); buttonTraining->setTextAlignment(Qt::AlignHCenter); buttonTraining->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); QListWidgetItem *buttonLanguage = new QListWidgetItem(contentsWidget); buttonLanguage->setIcon(QIcon(":/img/config_3.png")); buttonLanguage->setText(tr("Sprache")); buttonLanguage->setTextAlignment(Qt::AlignHCenter); buttonLanguage->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); QListWidgetItem *buttonDatabase = new QListWidgetItem(contentsWidget); buttonDatabase->setIcon(QIcon(":/img/config_2.png")); buttonDatabase->setText(tr("Lernstatistik")); buttonDatabase->setTextAlignment(Qt::AlignHCenter); buttonDatabase->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); QListWidgetItem *buttonOther = new QListWidgetItem(contentsWidget); buttonOther->setIcon(QIcon(":/img/config_4.png")); buttonOther->setText(tr("Sonstiges")); buttonOther->setTextAlignment(Qt::AlignHCenter); buttonOther->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); connect(contentsWidget, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)), this, SLOT(changePage(QListWidgetItem *, QListWidgetItem*))); } void SettingsDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous) { if (!current) { current = previous; } pagesWidget->setCurrentIndex(contentsWidget->row(current)); } void SettingsDialog::clickSave() { buttonSave->setText(tr("Bitte warten")); buttonSave->setEnabled(false); writeSettings(); trainingPage->writeSettings(); databasePage->writeSettings(); bool requireRestartLanguage = languagePage->writeSettings(); bool requireRestartOther = otherPage->writeSettings(); if (requireRestartLanguage || requireRestartOther) { QMessageBox::information(this, APP_NAME, tr("Einige der Einstellungen werden erst nach einem Neustart " "der Software wirksam.\n")); } if (createConnection()) { this->accept(); } } void SettingsDialog::showHelp() { helpBrowser = new HelpBrowser("settings.html", this); helpBrowser->show(); } void SettingsDialog::readSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("settings"); contentsWidget->setCurrentRow(settings.value("current_settings_item", 0).toInt()); pagesWidget->setCurrentIndex(contentsWidget->currentRow()); settings.endGroup(); } void SettingsDialog::writeSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("settings"); settings.setValue("current_settings_item", contentsWidget->currentRow()); settings.endGroup(); } tipp10-2.1.0/widget/settingsdialog.h000066400000000000000000000062001274324046000173030ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the SettingDialog class ** File name: settingsdialog.h ** ****************************************************************/ #ifndef SETTINGSDIALOG_H #define SETTINGSDIALOG_H #include #include #include #include #include #include #include #include #include #include #include "settingspages.h" #include "helpbrowser.h" //! The SettingsDialog class provides a program settings widget. /*! The SettingsDialog class shows three program settings. Setting the layout of the virtual keyboard, setting the ticker speed and font and doing a reset of the user tables. @author Tom Thielicke, s712715 @version 0.0.3 @date 18.06.2006 */ class SettingsDialog : public QDialog { Q_OBJECT public: //! Constructor, creates two table objects and provide it in two tabs. /*! In this contructor three groups are created over functions createGroupKeyboardLayout(), createGroupUserReset() and createGroupTickerFont(). In addition, standard settings are read, standard font is set and connections are set. @param parent The parent QWidget @see createGroupKeyboardLayout(), createGroupUserReset(), createGroupTickerFont(), readSettings(), tickerFont */ SettingsDialog(QWidget *parent = 0); private slots: //! Slot, saves the setting data. /*! After the user clicked the save button, this function saves the settings over function writeSettings() and closes the current dialog. @see writeSettings() */ void clickSave(); //! Slot, shows the help dialog. /*! This slot shows the help dialog. It creates an object of the QDialog class with an QTextbrowser. */ void showHelp(); public slots: void changePage(QListWidgetItem *current, QListWidgetItem *previous); private: void createIcons(); void readSettings(); void writeSettings(); //! Object of the help browser dialog HelpBrowser *helpBrowser; QPushButton *buttonSave; QPushButton *buttonCancel; QPushButton *buttonHelp; QListWidget *contentsWidget; QStackedWidget *pagesWidget; TrainingPage *trainingPage; DatabasePage *databasePage; LanguagePage *languagePage; OtherPage *otherPage; QFont tickerFont; }; #endif tipp10-2.1.0/widget/settingsdialogx.cpp000066400000000000000000000356231274324046000200410ustar00rootroot00000000000000/**************************************************************** ** ** Implementation of the SettingDialog class ** File name: settingsdialog.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include #include "settingsdialog.h" #include "sql/startsql.h" #include "sql/connection.h" #include "def/errordefines.h" #include "errormessage.h" #include "def/defines.h" SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent) { // Default ticker font if there is no saved ticker font tickerFont = QFont(FONT_STANDARD, 18); // Create group boxes with settings createGroupKeyboardLayout(); createGroupTickerFont(); createGroupUserReset(); createGroupDatabase(); createGroupDialogCheck(); // Create buttons createButtons(); // Set the layout of all widgets created above createLayout(); // Widget connections connect(buttonSave, SIGNAL(clicked()), this, SLOT(clickSave())); connect(buttonCancel, SIGNAL(clicked()), this, SLOT(reject())); connect(buttonSetFont, SIGNAL(clicked()), this, SLOT(setFont())); connect(buttonLessonsReset, SIGNAL(clicked()), this, SLOT(deleteUserData())); connect(buttonCharsReset, SIGNAL(clicked()), this, SLOT(deleteUserData())); connect(buttonDatabasePath, SIGNAL(clicked()), this, SLOT(setDatabasePath())); // Read settings readSettings(); setWindowTitle(tr("Grundeinstellungen")); setWindowIcon(QIcon(":/img/icon.ico")); setMinimumSize(400, 470); buttonSave->setFocus(); } void SettingsDialog::createGroupKeyboardLayout() { // Group "Keyboard layout" groupKeyboardLayout = new QGroupBox(tr("Tastaturlayout")); // Radiobutton "Windows layout" radioLayoutWin = new QRadioButton(tr("QWERTZ (Windows)")); radioLayoutWin->setToolTip(tr("Waehlen Sie diese Option, wenn Sie " "eine standardmaessige Windows-Tastatur verwenden\n(Windows-Tasten vorhanden und " "@-Zeichen auf der Q-Taste)")); //Radiobutton "Macintosh layout" radioLayoutMac = new QRadioButton(tr("QWERTZ (Apple Macintosh)")); radioLayoutMac->setToolTip(tr("Waehlen Sie diese Option, wenn Sie " "eine standardmaessige Apple-Tastatur verwenden\n(Apfel-Tasten vorhanden und @-Zeichen " "auf der L-Taste)")); //Radiobutton "NEO layout" radioLayoutNeo = new QRadioButton(tr("NEO")); radioLayoutNeo->setToolTip(tr("Waehlen Sie diese Option, wenn Sie " "eine Tastatur mit NEO-Layout verwenden")); //Radiobutton "Dvorak layout" radioLayoutDvorak = new QRadioButton(tr("Dvorak")); radioLayoutDvorak->setToolTip(tr("Waehlen Sie diese Option, wenn Sie " "eine Tastatur mit Dvorak-Layout verwenden")); //Radiobutton "NEO layout" radioLayoutRistome = new QRadioButton(tr("RISTOME")); radioLayoutRistome->setToolTip(tr("Waehlen Sie diese Option, wenn Sie " "eine Tastatur mit RISTOME-Layout verwenden")); // Layout of group box QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(radioLayoutWin); layout->addWidget(radioLayoutMac); layout->addWidget(radioLayoutNeo); layout->addWidget(radioLayoutDvorak); layout->addWidget(radioLayoutRistome); layout->setMargin(16); groupKeyboardLayout->setLayout(layout); } void SettingsDialog::createGroupTickerFont() { // Group "Ticker" groupTickerFont = new QGroupBox(tr("Laufschrift")); // Button "Set ticker font" labelTickerFont = new QLabel(tr("Schriftart:")); buttonSetFont = new QPushButton(tr("&Schriftart aendern")); buttonSetFont->setToolTip(tr("Hier koennen Sie die Schriftart der " "Laufschrift veraendern\n(eine Schriftgroesse ueber 20 Punkte wird aus " "Formatierungs-\ngruenden nicht empfohlen)")); // Spinbox "Set ticker speed" labelTickerSpeed = new QLabel(tr("Anfangs-\ngeschwindigkeit:")); spinTickerSpeed = new QSpinBox(); spinTickerSpeed->setMinimum(1); spinTickerSpeed->setMaximum(4); spinTickerSpeed->setToolTip(tr("Hier koennen Sie die " "Geschwindigkeit der Laufschrift veraendern\n(der Wert 0 entspricht " "einem langsamen und der Wert 10\neinem schnellen Laufband)")); // Layout of group box vertical QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(labelTickerFont); layout->addWidget(buttonSetFont); layout->addSpacing(10); layout->addWidget(labelTickerSpeed); layout->addWidget(spinTickerSpeed); //layout->addStretch(1); layout->setMargin(16); groupTickerFont->setLayout(layout); } void SettingsDialog::createGroupUserReset() { // Group "Keyboard layout" groupUserReset = new QGroupBox(tr("Benutzerdaten")); // Button "Reset user data" buttonLessonsReset = new QPushButton(tr("&Gespeicherte Lektionen zuruecksetzen")); buttonLessonsReset->setToolTip(tr("Hier koennen Sie saemtliche " "gespeicherte Lektionendaten\n(die Lektionen werden so in den urspruenglichen Zustand,\n" "wie nach der Installation, versetzt)")); // Button "Reset user data" buttonCharsReset = new QPushButton(tr("&Gespeicherte Schriftzeichen zuruecksetzen")); buttonCharsReset->setToolTip(tr("Hier koennen Sie saemtliche " "gespeicherte Schriftzeichen (Tippfehler)\n(die Schriftzeichen werden so in den urspruenglichen Zustand,\n" "wie nach der Installation, versetzt)")); // Layout of group box QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(buttonLessonsReset); layout->addWidget(buttonCharsReset); //layout->addStretch(1); layout->setMargin(16); groupUserReset->setLayout(layout); } void SettingsDialog::createGroupDatabase() { // Group "Keyboard layout" groupDatabase = new QGroupBox(tr("Datenbank")); labelDatabasePath = new QLabel(tr("Verzeichnispfad zur Datenbank \"tipp10v2.db\":")); lineDatabasePath = new QLineEdit(); buttonDatabasePath = new QPushButton(tr("...")); buttonDatabasePath->setMaximumWidth(30); labelDatabaseExplain = new QLabel(tr("Wenn im angegebenen Verzeichnis keine Datei \"tipp10v2.db\" existiert, " "wird automatisch eine neue Datenbank erzeugt.")); labelDatabaseExplain->setWordWrap(true); // Layout of group box QHBoxLayout *hlayout = new QHBoxLayout; hlayout->addWidget(lineDatabasePath); hlayout->addWidget(buttonDatabasePath); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(labelDatabasePath); layout->addLayout(hlayout); layout->addWidget(labelDatabaseExplain); //layout->addStretch(1); layout->setMargin(16); groupDatabase->setLayout(layout); } void SettingsDialog::createGroupDialogCheck() { // Group "Ticker" groupDialogCheck = new QGroupBox(tr("Programmstart")); // Check box "Show start window" checkIllustration = new QCheckBox(tr("&Willkommenfenster anzeigen")); checkIllustration->setToolTip(tr("Hier koennen Sie festlegen, " "ob ein Informationsfenster\nmit Ratschlaegen beim Start von TIPP10" "angezeigt werden soll")); // Layout of group box vertical QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(checkIllustration); //layout->addSpacing(1); layout->setMargin(16); groupDialogCheck->setLayout(layout); } void SettingsDialog::createButtons() { //Buttons buttonCancel = new QPushButton(tr("&Abbrechen")); buttonSave = new QPushButton(tr("&Speichern")); buttonSave->setDefault(true); } void SettingsDialog::createLayout() { // Button layout horizontal QHBoxLayout *buttonLayoutHorizontal = new QHBoxLayout; buttonLayoutHorizontal->addStretch(1); buttonLayoutHorizontal->addWidget(buttonCancel); buttonLayoutHorizontal->addWidget(buttonSave); // Button layout horizontal QHBoxLayout *buttonLayoutHorizontalTop = new QHBoxLayout; buttonLayoutHorizontalTop->addWidget(groupKeyboardLayout); buttonLayoutHorizontalTop->addWidget(groupTickerFont); // Group layout vertical QVBoxLayout *boxesLayout = new QVBoxLayout; boxesLayout->addLayout(buttonLayoutHorizontalTop); boxesLayout->addWidget(groupUserReset); boxesLayout->addWidget(groupDatabase); boxesLayout->addWidget(groupDialogCheck); // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(boxesLayout); mainLayout->addSpacing(1); mainLayout->addLayout(buttonLayoutHorizontal); mainLayout->setMargin(15); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void SettingsDialog::setFont() { bool ok; QFont font = QFontDialog::getFont(&ok, tickerFont, this); if (ok) { tickerFont = font; setFontButtonLabel(); } } void SettingsDialog::setFontButtonLabel() { buttonSetFont->setText(tickerFont.family() + ", " + QString::number(tickerFont.pointSize())); } void SettingsDialog::setDatabasePath() { /*QFileDialog *fd = new QFileDialog(this); fd->setFileMode(QFileDialog::AnyFile); fd->setFilter("Datenbankdatei (*.db)"); fd->setViewMode(QFileDialog::Detail); //fd->setLabelText("Bitte waehlen Sie eine Datenbankdatei aus..."); fd->setDirectory(currentDatabasePath); if (fd->exec()) { //QString fileNames = fd->selectedFiles(); }*/ QString s = QFileDialog::getExistingDirectory( this, "Bitte waehlen Sie ein Verzeichnis aus...", lineDatabasePath->text()); //QFileDialog::confirmOverwrite()); if (s.size() != 0) { lineDatabasePath->setText(s); } } void SettingsDialog::deleteUserData() { QSqlQuery query; switch (QMessageBox::question(this, APP_NAME, tr("Es werden alle aufgezeichneten Werte des aktuellen " "Benutzers geloescht\nund das Programm in den urpruenglichen " "Zustand versetzt!\n\nWollen Sie den Vorgang wirklich " "fortsetzen?\n\n"), tr("&Ja"), tr("&Abbrechen"), 0, 1)) { case 0: StartSql *userSql = new StartSql(); if (!userSql->deleteUserLessonList()) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_LESSONS_FLUSH, TYPE_WARNING, CANCEL_OPERATION); return; } if (!userSql->deleteUserChars()) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_ERRORS_FLUSH, TYPE_WARNING, CANCEL_OPERATION); return; } QMessageBox::information(this, APP_NAME, tr("Die Benutzerdaten wurden erfolgreich " "zurueckgesetzt!\n")); break; } } void SettingsDialog::clickSave() { writeSettings(); if (createConnection()) { this->accept(); } } void SettingsDialog::readSettings() { QString dbNameUser = APP_USER_DB; QSettings settings(QSettings::IniFormat, QSettings::UserScope, "portable", "settings"); settings.setPath(QSettings::IniFormat, QSettings::UserScope, QCoreApplication::applicationDirPath()); settings.beginGroup("settings"); switch (KEYBOARD_LAYOUT_STANDARD) { case 0: radioLayoutWin->setChecked(settings.value("radio_win", true).toBool()); radioLayoutMac->setChecked(settings.value("radio_mac", false).toBool()); radioLayoutNeo->setChecked(settings.value("radio_neo", false).toBool()); radioLayoutDvorak->setChecked(settings.value("radio_dvorak", false).toBool()); radioLayoutRistome->setChecked(settings.value("radio_ristome", false).toBool()); break; case 1: radioLayoutWin->setChecked(settings.value("radio_win", false).toBool()); radioLayoutMac->setChecked(settings.value("radio_mac", true).toBool()); radioLayoutNeo->setChecked(settings.value("radio_neo", false).toBool()); radioLayoutDvorak->setChecked(settings.value("radio_dvorak", false).toBool()); radioLayoutRistome->setChecked(settings.value("radio_ristome", false).toBool()); break; case 2: radioLayoutWin->setChecked(settings.value("radio_win", false).toBool()); radioLayoutMac->setChecked(settings.value("radio_mac", false).toBool()); radioLayoutNeo->setChecked(settings.value("radio_neo", true).toBool()); radioLayoutDvorak->setChecked(settings.value("radio_dvorak", false).toBool()); radioLayoutRistome->setChecked(settings.value("radio_ristome", false).toBool()); break; case 3: radioLayoutWin->setChecked(settings.value("radio_win", false).toBool()); radioLayoutMac->setChecked(settings.value("radio_mac", false).toBool()); radioLayoutNeo->setChecked(settings.value("radio_neo", false).toBool()); radioLayoutDvorak->setChecked(settings.value("radio_dvorak", true).toBool()); radioLayoutRistome->setChecked(settings.value("radio_ristome", false).toBool()); break; case 4: radioLayoutWin->setChecked(settings.value("radio_win", false).toBool()); radioLayoutMac->setChecked(settings.value("radio_mac", false).toBool()); radioLayoutNeo->setChecked(settings.value("radio_neo", false).toBool()); radioLayoutDvorak->setChecked(settings.value("radio_dvorak", false).toBool()); radioLayoutRistome->setChecked(settings.value("radio_ristome", true).toBool()); break; default: radioLayoutWin->setChecked(settings.value("radio_win", true).toBool()); radioLayoutMac->setChecked(settings.value("radio_mac", false).toBool()); radioLayoutNeo->setChecked(settings.value("radio_neo", false).toBool()); radioLayoutDvorak->setChecked(settings.value("radio_dvorak", false).toBool()); radioLayoutRistome->setChecked(settings.value("radio_ristome", false).toBool()); break; } tickerFont.fromString(settings.value("ticker_font", tickerFont.toString()).toString()); spinTickerSpeed->setValue(settings.value("ticker_speed", TICKERSPEED_STANDARD).toInt()); settings.endGroup(); settings.beginGroup("general"); checkIllustration->setChecked(!settings.value("check_illustration", true).toBool()); settings.endGroup(); settings.beginGroup("database"); currentDatabasePath = settings.value("path", "Fehler/" + dbNameUser).toString(); if (currentDatabasePath.size() > dbNameUser.size() + 1) { lineDatabasePath->setText(currentDatabasePath.left(currentDatabasePath.size() - dbNameUser.size() - 1)); } settings.endGroup(); setFontButtonLabel(); } void SettingsDialog::writeSettings() { QSettings settings(QSettings::IniFormat, QSettings::UserScope, "portable", "settings"); settings.setPath(QSettings::IniFormat, QSettings::UserScope, QCoreApplication::applicationDirPath()); settings.beginGroup("settings"); settings.setValue("radio_win", radioLayoutWin->isChecked()); settings.setValue("radio_mac", radioLayoutMac->isChecked()); settings.setValue("radio_neo", radioLayoutNeo->isChecked()); settings.setValue("radio_dvorak", radioLayoutDvorak->isChecked()); settings.setValue("radio_ristome", radioLayoutRistome->isChecked()); settings.setValue("ticker_font", tickerFont.toString()); settings.setValue("ticker_speed", spinTickerSpeed->value()); settings.endGroup(); settings.beginGroup("general"); settings.setValue("check_illustration", !checkIllustration->isChecked()); settings.endGroup(); settings.beginGroup("database"); settings.setValue("path", lineDatabasePath->text() + "/" + QString::QString(APP_USER_DB)); settings.endGroup(); } tipp10-2.1.0/widget/settingsdialogx.h000066400000000000000000000077401274324046000175050ustar00rootroot00000000000000/**************************************************************** ** ** Definition of the SettingDialog class ** File name: settingsdialog.h ** ****************************************************************/ #ifndef SETTINGSDIALOG_H #define SETTINGSDIALOG_H #include #include #include #include #include #include #include #include #include #include #include //! The SettingsDialog class provides a program settings widget. /*! The SettingsDialog class shows three program settings. Setting the layout of the virtual keyboard, setting the ticker speed and font and doing a reset of the user tables. @author Tom Thielicke, s712715 @version 0.0.3 @date 18.06.2006 */ class SettingsDialog : public QDialog { Q_OBJECT public: //! Constructor, creates two table objects and provide it in two tabs. /*! In this contructor three groups are created over functions createGroupKeyboardLayout(), createGroupUserReset() and createGroupTickerFont(). In addition, standard settings are read, standard font is set and connections are set. @param parent The parent QWidget @see createGroupKeyboardLayout(), createGroupUserReset(), createGroupTickerFont(), readSettings(), tickerFont */ SettingsDialog(QWidget *parent = 0); public slots: private slots: //! Slot, shows the font setting window. /*! After the user clicked the font button, this function creates a QFontDialog and sets the new font if user has choosen one. */ void setFont(); //! Slot, saves the setting data. /*! After the user clicked the save button, this function saves the settings over function writeSettings() and closes the current dialog. @see writeSettings() */ void clickSave(); //! Slot, deletes the content of the user tables. /*! After the user clicked the reset user data button, this function deletes the content data of the user table over StartSql class. @see StartSql */ void deleteUserData(); //! Slot, opens and cheks the database path file dialog. /*! After the user clicked the browse button, this function shows a file dialog. After that, the exist of the file is checked. */ void setDatabasePath(); private: //! Creates a radiobutton with windows and mac keyboard layout items. void createGroupKeyboardLayout(); //! Creates a ticker font button and the ticker speed spin box. void createGroupTickerFont(); //! Creates two user data reset buttons. void createGroupUserReset(); //! Creates a database path control. void createGroupDatabase(); //! Creates a show dialog on-off check boxes. void createGroupDialogCheck(); //! Creates a cancel and a save button. void createButtons(); //! Creates the layout of the complete class. void createLayout(); //! Sets the name of the font button. void setFontButtonLabel(); //! Writes all user settings to hard disk. void writeSettings(); //! Reads all user settings. void readSettings(); QLabel *labelTickerFont; QLabel *labelTickerSpeed; QLabel *labelDatabasePath; QLabel *labelDatabaseExplain; QLineEdit *lineDatabasePath; QSpinBox *spinTickerSpeed; QPushButton *buttonSave; QPushButton *buttonCancel; QGroupBox *groupKeyboardLayout; QGroupBox *groupTickerFont; QGroupBox *groupUserReset; QGroupBox *groupDatabase; QGroupBox *groupDialogCheck; QRadioButton *radioLayoutWin; QRadioButton *radioLayoutMac; QRadioButton *radioLayoutNeo; QRadioButton *radioLayoutDvorak; QRadioButton *radioLayoutRistome; QPushButton *buttonLessonsReset; QPushButton *buttonCharsReset; QPushButton *buttonSetFont; QPushButton *buttonDatabasePath; QCheckBox *checkIllustration; QFont tickerFont; QString currentDatabasePath; }; #endif //SETTINGSDIALOG_H tipp10-2.1.0/widget/settingspages.cpp000066400000000000000000000717031274324046000175100ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the TrainingPage, DatabasePage and ** OtherPage class ** File name: settingspages.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include "settingspages.h" #include "def/defines.h" #include "sql/startsql.h" #include "def/errordefines.h" #include "errormessage.h" #include "regexpdialog.h" TrainingPage::TrainingPage(QWidget *parent) : QWidget(parent) { // Default ticker font if there is no saved ticker font tickerFont = QFont(FONT_STANDARD, FONT_SIZE_TICKER); // Create group boxes with settings createGroupTickerFont(); // Create group with sound output settings createGroupSoundOutput(); // Set the layout of all widgets created above createLayout(); // Widget connections connect(buttonSetFont, SIGNAL(clicked()), this, SLOT(setFont())); connect(buttonSetFontColor, SIGNAL(clicked()), this, SLOT(setFontColor())); connect(buttonSetBgColor, SIGNAL(clicked()), this, SLOT(setBgColor())); connect(buttonSetCursorColor, SIGNAL(clicked()), this, SLOT(setCursorColor())); connect(checkMetronome, SIGNAL(toggled(bool)), spinMetronomeClock, SLOT(setEnabled(bool))); // Read settings readSettings(); } void TrainingPage::createGroupTickerFont() { // Group "Ticker" groupTickerFont = new QGroupBox(tr("Laufschrift")); // Button "Set ticker font" labelTickerFont = new QLabel(tr("Schriftart:")); buttonSetFont = new QPushButton(tr("&Schriftart aendern")); buttonSetFont->setToolTip(tr("Hier koennen Sie die Schriftart der " "Laufschrift veraendern\n(eine Schriftgroesse ueber 20 Punkte wird aus " "Formatierungs-\ngruenden nicht empfohlen)")); // Button "Font color" labelTickerFontColor = new QLabel(tr("Schriftfarbe:")); buttonSetFontColor = new QPushButton(""); buttonSetFontColor->setToolTip(tr("Hier koennen Sie die Schriftfarbe der " "Laufschrift veraendern")); // Button "Background color" labelTickerBgColor = new QLabel(tr("Hintergrund:")); buttonSetBgColor = new QPushButton(""); buttonSetBgColor->setToolTip(tr("Hier koennen Sie die Hintergrundfarbe der " "Laufschrift veraendern")); // Button "Cursor color" labelTickerCursorColor = new QLabel(tr("Cursor:")); buttonSetCursorColor = new QPushButton(""); buttonSetCursorColor->setToolTip(tr("Hier koennen Sie die Farbe der Markierung " "fuer das aktuelle Zeichen veraendern")); // Spinbox "Set ticker speed" labelTickerSpeed = new QLabel(tr("Geschwindigkeit:")); labelTickerSpeedMax = new QLabel(tr("Schnell")); labelTickerSpeedMin = new QLabel(tr("Aus")); sliderTickerSpeed = new QSlider(Qt::Horizontal); sliderTickerSpeed->setMinimum(0); sliderTickerSpeed->setMaximum(4); sliderTickerSpeed->setToolTip(tr("Hier koennen Sie die " "Geschwindigkeit der Laufschrift veraendern\n(Der Regler ganz links bedeutet, das " "Laufband bewegt sich erst am Ende der Zeile.\n" "Der Regler ganz rechts entspricht einem schnellen Laufband.)")); // Layout of group box vertical QHBoxLayout *sliderlayout = new QHBoxLayout; sliderlayout->addWidget(labelTickerSpeedMin); sliderlayout->addSpacing(2); sliderlayout->addWidget(sliderTickerSpeed); sliderlayout->addSpacing(2); sliderlayout->addWidget(labelTickerSpeedMax); QVBoxLayout *fontlayout = new QVBoxLayout; fontlayout->addWidget(labelTickerFont); fontlayout->addWidget(buttonSetFont); QVBoxLayout *fontColorlayout = new QVBoxLayout; fontColorlayout->addWidget(labelTickerFontColor); fontColorlayout->addWidget(buttonSetFontColor); QVBoxLayout *bgColorlayout = new QVBoxLayout; bgColorlayout->addWidget(labelTickerBgColor); bgColorlayout->addWidget(buttonSetBgColor); QVBoxLayout *cursorColorlayout = new QVBoxLayout; cursorColorlayout->addWidget(labelTickerCursorColor); cursorColorlayout->addWidget(buttonSetCursorColor); QHBoxLayout *colorLayout = new QHBoxLayout; colorLayout->addLayout(fontlayout); colorLayout->addLayout(fontColorlayout); colorLayout->addLayout(bgColorlayout); colorLayout->addLayout(cursorColorlayout); QVBoxLayout *layout = new QVBoxLayout; layout->addLayout(colorLayout); layout->addSpacing(10); layout->addWidget(labelTickerSpeed); layout->addLayout(sliderlayout); //layout->addStretch(1); layout->setMargin(16); groupTickerFont->setLayout(layout); } void TrainingPage::createGroupSoundOutput() { // Group "Ticker" groupSoundOutput = new QGroupBox(tr("Audioausgabe")); // Radiobutton Soundcard output radioSoundcard = new QRadioButton(tr("Soundkarte")); radioSoundcard->setToolTip(tr("Waehlen Sie diese Option, wenn Sie " "die Soundausgabe ueber die Soundkarte erfolgen soll")); // Radiobutton PC speaker output radioSpeaker = new QRadioButton(tr("PC-Lautsprecher")); radioSpeaker->setToolTip(tr("Waehlen Sie diese Option, wenn Sie " "die Soundausgabe ueber den PC-Lautsprecher erfolgen soll")); checkMetronome = new QCheckBox(tr("Metronom:")); checkMetronome->setToolTip(tr("Hier koennen Sie ein Metronom waehrend " "des Schreibtrainings aktivieren")); spinMetronomeClock = new QSpinBox(); spinMetronomeClock->setMinimum(1); spinMetronomeClock->setMaximum(200); spinMetronomeClock->setSingleStep(1); spinMetronomeClock->setSuffix(tr(" A/min")); spinMetronomeClock->setToolTip(tr("Geben Sie hier an, wie oft pro " "Minute ein akustisches Signal ausgegeben " "werden soll")); // Layout of group box vertical QHBoxLayout *metronome = new QHBoxLayout; metronome->addWidget(checkMetronome); metronome->addWidget(spinMetronomeClock); metronome->addStretch(1); // Layout of group box vertical QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(radioSoundcard); layout->addSpacing(1); layout->addWidget(radioSpeaker); layout->addSpacing(10); layout->addLayout(metronome); layout->setMargin(16); groupSoundOutput->setLayout(layout); } void TrainingPage::createLayout() { // Group layout vertical QVBoxLayout *boxesLayout = new QVBoxLayout; boxesLayout->addWidget(groupTickerFont); //boxesLayout->addWidget(groupKeyboardLayout); boxesLayout->addWidget(groupSoundOutput); // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(boxesLayout); //mainLayout->setMargin(5); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void TrainingPage::setFont() { bool ok; QFont font = QFontDialog::getFont(&ok, tickerFont, this); if (ok) { tickerFont = font; setFontButtonLabel(); } } void TrainingPage::setFontColor() { QColor color = QColorDialog::getColor(buttonSetFontColor->palette().background().color(), this); if (color.isValid()) { buttonSetFontColor->setPalette(QPalette(color)); } } void TrainingPage::setBgColor() { QColor color = QColorDialog::getColor(buttonSetBgColor->palette().background().color(), this); if (color.isValid()) { buttonSetBgColor->setPalette(QPalette(color)); } } void TrainingPage::setCursorColor() { QColor color = QColorDialog::getColor(buttonSetCursorColor->palette().background().color(), this); if (color.isValid()) { buttonSetCursorColor->setPalette(QPalette(color)); } } void TrainingPage::setFontButtonLabel() { buttonSetFont->setText((tickerFont.family().length() > 8 ? tickerFont.family().left(6) : tickerFont.family()) + (tickerFont.family().length() > 8 ? "..." : "") + ", " + QString::number(tickerFont.pointSize())); } void TrainingPage::readSettings() { QString dbNameUser = APP_USER_DB; #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("settings"); buttonSetFontColor->setPalette(QPalette(QColor(settings.value("ticker_font_color", QString(TICKER_COLOR_FONT)).toString()))); buttonSetBgColor->setPalette(QPalette(QColor(settings.value("ticker_bg_color", QString(TICKER_COLOR_BG)).toString()))); buttonSetCursorColor->setPalette(QPalette(QColor(settings.value("ticker_cursor_color", QString(TICKER_COLOR_CURSOR)).toString()))); tickerFont.fromString(settings.value("ticker_font", tickerFont.toString()).toString()); sliderTickerSpeed->setValue(settings.value("ticker_speed", TICKERSPEED_STANDARD).toInt()); settings.endGroup(); settings.beginGroup("sound"); #if APP_X11 bool beepDefaultSoundcard = false; bool beepDefaultSpeaker = true; #else bool beepDefaultSoundcard = true; bool beepDefaultSpeaker = false; #endif radioSoundcard->setChecked(settings.value("radio_soundcard", beepDefaultSoundcard).toBool()); radioSpeaker->setChecked(settings.value("radio_speaker", beepDefaultSpeaker).toBool()); checkMetronome->setChecked(settings.value("check_metronome", false).toBool()); spinMetronomeClock->setValue(settings.value("spin_metronome", METRONOM_STANDARD).toInt()); spinMetronomeClock->setEnabled(checkMetronome->isChecked()); settings.endGroup(); setFontButtonLabel(); } void TrainingPage::writeSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("settings"); settings.setValue("ticker_font_color", buttonSetFontColor->palette().background().color().name()); settings.setValue("ticker_bg_color", buttonSetBgColor->palette().background().color().name()); settings.setValue("ticker_cursor_color", buttonSetCursorColor->palette().background().color().name()); settings.setValue("ticker_font", tickerFont.toString()); settings.setValue("ticker_speed", sliderTickerSpeed->value()); settings.endGroup(); settings.beginGroup("sound"); settings.setValue("radio_soundcard", radioSoundcard->isChecked()); settings.setValue("radio_speaker", radioSpeaker->isChecked()); settings.setValue("check_metronome", checkMetronome->isChecked()); settings.setValue("spin_metronome", spinMetronomeClock->value()); settings.endGroup(); } //-------------------------------------------------------- DatabasePage::DatabasePage(QWidget *parent) : QWidget(parent) { // Create group boxes with settings createGroupUserReset(); createGroupDatabase(); // Set the layout of all widgets created above createLayout(); // Widget connections connect(buttonLessonsReset, SIGNAL(clicked()), this, SLOT(deleteUserLessonList())); connect(buttonCharsReset, SIGNAL(clicked()), this, SLOT(deleteUserChars())); connect(buttonDatabasePath, SIGNAL(clicked()), this, SLOT(setDatabasePath())); // Read settings readSettings(); } void DatabasePage::createGroupUserReset() { // Group "Keyboard layout" groupUserReset = new QGroupBox(tr("Benutzerdaten")); // Button "Reset user data" buttonLessonsReset = new QPushButton(tr("&Absolvierte Lektionen " "zuruecksetzen")); buttonLessonsReset->setToolTip(tr("Hier koennen Sie saemtliche " "gespeicherte Lektionendaten zuruecksetzen\n(die Lektionen werden so " "in den urspruenglichen Zustand, wie nach\nder Installation, " "versetzt)")); // Button "Reset user data" buttonCharsReset = new QPushButton(tr("&Aufgezeichnete " "Schriftzeichen zuruecksetzen")); buttonCharsReset->setToolTip(tr("Hier koennen Sie alle " "aufgezeichneten Tastendruecke und Tippfehler zuruecksetzen\n(die " "Schriftzeichen werden so in den urspruenglichen Zustand, " "wie nach der\nInstallation, versetzt)")); // Layout of group box QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(buttonLessonsReset); layout->addWidget(buttonCharsReset); //layout->addStretch(1); layout->setMargin(16); groupUserReset->setLayout(layout); } void DatabasePage::createGroupDatabase() { // Group "Keyboard layout" groupDatabase = new QGroupBox(tr("Speicherort")); labelDatabasePath = new QLabel(tr("Verzeichnispfad zur Datenbank") + " \"" + APP_USER_DB + "\":"); lineDatabasePath = new QLineEdit(); buttonDatabasePath = new QPushButton(tr("...")); buttonDatabasePath->setMaximumWidth(30); buttonDatabasePath->setFixedHeight(20); if (!APP_PORTABLE) { labelDatabaseExplain = new QLabel(tr("Wenn im angegebenen " "Verzeichnis keine Datei ") + "\"" + APP_USER_DB + "\"" + tr(" existiert, " "wird automatisch eine neue, leere Datenbank erzeugt.")); } else { labelDatabaseExplain = new QLabel(tr("Der Pfad kann " "bei der portablen Version von ") + APP_NAME + tr(" nicht veraendert werden.")); lineDatabasePath->setEnabled(false); buttonDatabasePath->setEnabled(false); } QFont h2; #if APP_MAC h2.setPointSize(11); #else h2.setPointSize(7); #endif labelDatabaseExplain->setFont(h2); labelDatabaseExplain->setWordWrap(true); // Layout of group box QHBoxLayout *hlayout = new QHBoxLayout; hlayout->addWidget(lineDatabasePath); hlayout->addWidget(buttonDatabasePath); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(labelDatabasePath); layout->addLayout(hlayout); layout->addWidget(labelDatabaseExplain); //layout->addStretch(1); layout->setMargin(16); groupDatabase->setLayout(layout); } void DatabasePage::createLayout() { // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(groupUserReset); mainLayout->addWidget(groupDatabase); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void DatabasePage::setDatabasePath() { /*QFileDialog *fd = new QFileDialog(this); fd->setFileMode(QFileDialog::AnyFile); fd->setFilter("Datenbankdatei (*.db)"); fd->setViewMode(QFileDialog::Detail); //fd->setLabelText("Bitte waehlen Sie eine Datenbankdatei aus..."); fd->setDirectory(currentDatabasePath); if (fd->exec()) { //QString fileNames = fd->selectedFiles(); }*/ QString s = QFileDialog::getExistingDirectory( this, "Bitte waehlen Sie ein Verzeichnis aus...", lineDatabasePath->text()); //QFileDialog::confirmOverwrite()); if (s.size() != 0) { lineDatabasePath->setText(s); } } void DatabasePage::deleteUserLessonList() { QSqlQuery query; switch (QMessageBox::question(this, APP_NAME, tr("Es werden alle absolvierten Lektionen des aktuellen " "Benutzers geloescht\nund die Lektionenliste in den urpruenglichen " "Zustand versetzt!\n\nWollen Sie den Vorgang wirklich " "fortsetzen?\n\n"), tr("&Ja"), tr("&Abbrechen"), 0, 1)) { case 0: StartSql *userSql = new StartSql(); if (!userSql->deleteUserLessonList()) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_LESSONS_FLUSH, TYPE_WARNING, CANCEL_OPERATION); return; } QMessageBox::information(this, APP_NAME, tr("Die absolvierten Lektionen wurden erfolgreich " "zurueckgesetzt!\n")); break; } } void DatabasePage::deleteUserChars() { switch (QMessageBox::question(this, APP_NAME, tr("Es werden alle aufgezeichneten Schriftzeichen " "(Fehlerquoten) des " "aktuellen Benutzers geloescht und die Zeichenliste in den " "urpruenglichen " "Zustand versetzt!\n\nWollen Sie den Vorgang wirklich " "fortsetzen?\n\n"), tr("&Ja"), tr("&Abbrechen"), 0, 1)) { case 0: StartSql *userSql = new StartSql(); if (!userSql->deleteUserChars()) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_ERRORS_FLUSH, TYPE_WARNING, CANCEL_OPERATION); return; } QMessageBox::information(this, APP_NAME, tr("Die aufgezeichneten Schriftzeichen wurden erfolgreich " "zurueckgesetzt!\n")); break; } } void DatabasePage::readSettings() { QString dbNameUser = APP_USER_DB; #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("database"); currentDatabasePath = settings.value("pathpro", "Fehler/" + dbNameUser).toString(); if (currentDatabasePath.size() > dbNameUser.size() + 1) { lineDatabasePath->setText(currentDatabasePath.left(currentDatabasePath.size() - dbNameUser.size() - 1)); } settings.endGroup(); } void DatabasePage::writeSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("database"); settings.setValue("pathpro", lineDatabasePath->text() + "/" + QString::QString(APP_USER_DB)); settings.endGroup(); } //-------------------------------------------------------- OtherPage::OtherPage(QWidget *parent) : QWidget(parent) { // Create group with info window settings createGroupDialogCheck(); // Create group with adaptation settings createGroupAdaptation(); // Set the layout of all widgets created above createLayout(); // Read settings readSettings(); } void OtherPage::createGroupDialogCheck() { // Group "Ticker" groupDialogCheck = new QGroupBox(tr("Fenstereinstellungen")); // Check box "Show start window" checkIllustration = new QCheckBox(tr("Willkommenfenster beim " "Programmstart anzeigen")); checkIllustration->setToolTip(tr("Hier koennen Sie festlegen, " "ob ein Informationsfenster\nmit Ratschlaegen beim Start von ") + APP_NAME + tr("" "angezeigt werden soll")); // Check box "Show start window" checkTxtMessage = new QCheckBox(tr("Hinweis vor Im- und Export von Lektionen anzeigen")); checkTxtMessage->setToolTip(tr("Hier koennen Sie festlegen, " "ob ein Hinweis zu\nden Dateitypen vor dem Im- und Export " "angezeigt werden soll")); // Check box "Show intelligence warning" checkIntelligence = new QCheckBox(tr("Auf aktivierte Intelligenz " "beim Start einer freien oder\neigenen Lektion hinweisen")); checkIntelligence->setToolTip(tr("Hier koennen Sie festlegen, " "ob ein Hinweisfenster\nangezeigt werden soll, wenn eine freie " "oder eigene\nLektion mit aktivierter Intelligenz gestartet wird.")); // Check box "Show info about publishing your own lesson" checkLessonPublish = new QCheckBox(tr("Vor dem Anlegen einer " "eigenen Lektion auf die\nVeroeffentlichungsmoeglichkeit als freie " "Lektion hinweisen")); //checkLessonPublish->setToolTip(tr("xxx")); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // Check box "Intelligence duration toggling" checkLimitLesson = new QCheckBox(tr("Dauer der Lektion " "automatisch auf \"Gesamte Lektion\"\numstellen, wenn die " "Intelligenz deaktiviert wird")); // Layout of group box vertical QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(checkIllustration); layout->addSpacing(8); layout->addWidget(checkIntelligence); layout->addSpacing(8); layout->addWidget(checkLimitLesson); layout->setMargin(16); groupDialogCheck->setLayout(layout); } void OtherPage::createGroupAdaptation() { // Group "Ticker" groupAdaptation = new QGroupBox(tr("Sonstiges")); checkNewVersion = new QCheckBox(tr("Einmal pro Woche beim Programmstart auf neue\nVersion pruefen")); checkNativeStyle = new QCheckBox(tr("Native Programmoberflaeche " "verwenden")); // Layout of group box vertical QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(checkNewVersion); layout->addSpacing(1); layout->addWidget(checkNativeStyle); layout->setMargin(16); groupAdaptation->setLayout(layout); } void OtherPage::createLayout() { // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(groupDialogCheck); mainLayout->addWidget(groupAdaptation); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void OtherPage::readSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); checkIllustration->setChecked(settings.value("check_illustration", true).toBool()); checkIntelligence->setChecked(settings.value("check_toggle_intelligence", true).toBool()); checkLimitLesson->setChecked(settings.value("check_limit_lesson", true).toBool()); checkLessonPublish->setChecked(settings.value("check_lesson_publish", true).toBool()); checkNewVersion->setChecked(settings.value("check_new_version", true).toBool()); checkNativeStyle->setChecked(settings.value("check_native_style", false).toBool()); settings.endGroup(); } bool OtherPage::writeSettings() { bool requireRestart = false; #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); if (checkNativeStyle->isChecked() != settings.value("check_native_style", false).toBool()) { requireRestart = true; } settings.setValue("check_illustration", checkIllustration->isChecked()); settings.setValue("check_toggle_intelligence", checkIntelligence->isChecked()); settings.setValue("check_limit_lesson", checkLimitLesson->isChecked()); settings.setValue("check_lesson_publish", checkLessonPublish->isChecked()); settings.setValue("check_native_style", checkNativeStyle->isChecked()); settings.setValue("check_new_version", checkNewVersion->isChecked()); settings.endGroup(); return requireRestart; } //-------------------------------------------------------- LanguagePage::LanguagePage(QWidget *parent) : QWidget(parent) { // Create group with language settings createGroupLanguage(); // Set the layout of all widgets created above createLayout(); // Read settings readSettings(); checkLessonToLayout(); connect(comboLayouts, SIGNAL(currentIndexChanged(int)), this, SLOT(checkLessonToLayout())); connect(comboLayouts, SIGNAL(currentIndexChanged(int)), this, SLOT(clearLayoutSetting())); connect(comboLessons, SIGNAL(currentIndexChanged(int)), this, SLOT(checkLessonToLayout())); connect(buttonLayoutRegEx, SIGNAL(clicked()), this, SLOT(showLayoutAdvanced())); } void LanguagePage::createGroupLanguage() { StartSql *startSql = new StartSql(); groupLanguage = new QGroupBox(tr("Sprache")); labelLanguage = new QLabel(tr("Programmoberflaeche:")); comboLanguages = new QComboBox(); startSql->fillLanguage(comboLanguages, "language_interfaces", "interface"); labelLayout = new QLabel(tr("Tastaturlayout:")); comboLayouts = new QComboBox(); startSql->fillLanguage(comboLayouts, "language_layouts", "layout"); buttonLayoutRegEx = new QPushButton(tr("Erweitert")); buttonLayoutRegEx->setFixedHeight(20); labelLesson = new QLabel(tr("Uebungslektionen:")); comboLessons = new QComboBox(); startSql->fillLanguage(comboLessons, "language_lessons", "lesson"); labelLessonNotice = new QLabel(); QFont h2; #if APP_MAC h2.setPointSize(11); #else h2.setPointSize(7); #endif labelLessonNotice->setWordWrap(true); labelLessonNotice->setFont(h2); labelLessonNotice->setText(tr("Die gewaehlten Uebungslektionen sind nicht auf " "das Tastaturlayout abgestimmt. Sie koennen diese trotzdem " "trainieren, muessen aber unter Umstaenden von Beginn an " "Tastwege zuruecklegen.\n")); QHBoxLayout *layoutRegexp = new QHBoxLayout; layoutRegexp->addWidget(comboLayouts); layoutRegexp->addWidget(buttonLayoutRegEx); // Layout of group box QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(labelLanguage); layout->addWidget(comboLanguages); layout->addSpacing(12); layout->addWidget(labelLayout); layout->addLayout(layoutRegexp); layout->addSpacing(12); layout->addWidget(labelLesson); layout->addWidget(comboLessons); layout->addSpacing(10); layout->addWidget(labelLessonNotice); //layout->addSpacing(20); layout->addStretch(1); layout->setMargin(16); groupLanguage->setLayout(layout); } void LanguagePage::createLayout() { // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(groupLanguage); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void LanguagePage::checkLessonToLayout() { QString layout = comboLayouts->itemData(comboLayouts->currentIndex()).toString(); QString lessons = comboLessons->itemData(comboLessons->currentIndex()).toString(); if (layout.contains(lessons.mid(3)) || (lessons.mid(3) == "de_qwertz" && layout.contains("ch_qwertz"))) { labelLessonNotice->setVisible(false); } else { labelLessonNotice->setVisible(true); } } void LanguagePage::clearLayoutSetting() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); settings.setValue("layout_replace", "NULL"); settings.setValue("layout_regexp", "NULL"); settings.endGroup(); } void LanguagePage::showLayoutAdvanced() { RegExpDialog regExpDialog(comboLayouts->itemData(comboLayouts->currentIndex()).toString(), this); regExpDialog.exec(); } void LanguagePage::readSettings() { int tempIndex; QString dbNameUser = APP_USER_DB; #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); tempIndex = comboLanguages->findData(settings.value("language_gui", APP_STD_LANGUAGE_GUI).toString()); if (!tempIndex) { tempIndex = 0; } comboLanguages->setCurrentIndex(tempIndex); tempIndex = comboLayouts->findData(settings.value("language_layout", APP_STD_LANGUAGE_LAYOUT).toString()); if (!tempIndex) { tempIndex = 0; } comboLayouts->setCurrentIndex(tempIndex); tempIndex = comboLessons->findData(settings.value("language_lesson", APP_STD_LANGUAGE_LESSON).toString()); if (!tempIndex) { tempIndex = 0; } comboLessons->setCurrentIndex(tempIndex); settings.endGroup(); } bool LanguagePage::writeSettings() { bool requireRestart = false; #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); if (comboLanguages->itemData(comboLanguages->currentIndex()) != settings.value("language_gui", APP_STD_LANGUAGE_GUI).toString()) { requireRestart = true; } /*if (comboLessons->itemData(comboLessons->currentIndex()) != settings.value("language_lesson", APP_STD_LANGUAGE_LESSON).toString()) { requireRestart = true; }*/ settings.setValue("language_gui", comboLanguages->itemData(comboLanguages->currentIndex())); settings.setValue("language_layout", comboLayouts->itemData(comboLayouts->currentIndex())); settings.setValue("language_lesson", comboLessons->itemData(comboLessons->currentIndex())); settings.endGroup(); return requireRestart; } tipp10-2.1.0/widget/settingspages.h000066400000000000000000000140511274324046000171460ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the TrainingPage, DatabasePage and ** OtherPage class ** File name: settingspages.h ** ****************************************************************/ #ifndef SETTINGPAGES_H #define SETTINGPAGES_H #include #include #include #include #include #include #include #include #include #include #include #include #include class TrainingPage : public QWidget { Q_OBJECT public: TrainingPage(QWidget *parent = 0); //! Writes all user settings to hard disk. void writeSettings(); public slots: //! Slot, shows the font setting window. /*! After the user clicked the font button, this function creates a QFontDialog and sets the new font if user has choosen one. */ void setFont(); void setFontColor(); void setBgColor(); void setCursorColor(); private: //! Creates a ticker font button and the ticker speed spin box. void createGroupTickerFont(); //! Creates a group with the sound output selection. void createGroupSoundOutput(); //! Creates the layout of the complete class. void createLayout(); //! Sets the name of the font button. void setFontButtonLabel(); //! Reads all user settings. void readSettings(); QLabel *labelTickerFont; QLabel *labelTickerFontColor; QLabel *labelTickerBgColor; QLabel *labelTickerCursorColor; QLabel *labelTickerSpeed; QLabel *labelTickerSpeedMax; QLabel *labelTickerSpeedMin; QLabel *labelDatabasePath; QSlider *sliderTickerSpeed; QGroupBox *groupTickerFont; QGroupBox *groupSoundOutput; QPushButton *buttonSetFont; QPushButton *buttonSetFontColor; QPushButton *buttonSetBgColor; QPushButton *buttonSetCursorColor; QFont tickerFont; QRadioButton *radioSoundcard; QRadioButton *radioSpeaker; QCheckBox *checkMetronome; QSpinBox *spinMetronomeClock; }; class DatabasePage : public QWidget { Q_OBJECT public: DatabasePage(QWidget *parent = 0); //! Writes all user settings to hard disk. void writeSettings(); private slots: //! Slot, deletes the content of the user lessons table. /*! After the user clicked the reset user data button, this function deletes the content data of the user lesson table over StartSql class. @see StartSql */ void deleteUserLessonList(); //! Slot, deletes the content of the user chars table. /*! After the user clicked the reset user data button, this function deletes the content data of the user chars table over StartSql class. @see StartSql */ void deleteUserChars(); //! Slot, opens and cheks the database path file dialog. /*! After the user clicked the browse button, this function shows a file dialog. After that, the exist of the file is checked. */ void setDatabasePath(); private: //! Creates two user data reset buttons. void createGroupUserReset(); //! Creates a database path control. void createGroupDatabase(); //! Creates the layout of the complete class. void createLayout(); //! Reads all user settings. void readSettings(); QLabel *labelDatabasePath; QLabel *labelDatabaseExplain; QLineEdit *lineDatabasePath; QGroupBox *groupUserReset; QGroupBox *groupDatabase; QPushButton *buttonLessonsReset; QPushButton *buttonCharsReset; QPushButton *buttonDatabasePath; QString currentDatabasePath; }; class OtherPage : public QWidget { Q_OBJECT public: OtherPage(QWidget *parent = 0); //! Writes all user settings to hard disk. bool writeSettings(); private: //! Creates a group with check boxes to en-/disable info dialogs. void createGroupDialogCheck(); //! Creates a group with check boxes to en-/disable info dialogs. void createGroupAdaptation(); //! Creates the layout of the complete class. void createLayout(); //! Reads all user settings. void readSettings(); QGroupBox *groupDialogCheck; QGroupBox *groupAdaptation; QCheckBox *checkIllustration; QCheckBox *checkIntelligence; QCheckBox *checkLimitLesson; QCheckBox *checkLessonPublish; QCheckBox *checkNativeStyle; QCheckBox *checkTxtMessage; QCheckBox *checkNewVersion; }; class LanguagePage : public QWidget { Q_OBJECT public: LanguagePage(QWidget *parent = 0); //! Writes all user settings to hard disk. bool writeSettings(); private slots: void checkLessonToLayout(); void clearLayoutSetting(); void showLayoutAdvanced(); private: //! Creates a group with language selection void createGroupLanguage(); //! Creates the layout of the complete class. void createLayout(); //! Reads all user settings. void readSettings(); QGroupBox *groupLanguage; QLabel *labelLanguage; QLabel *labelLayout; QLabel *labelLesson; QLabel *labelLessonNotice; QComboBox *comboLanguages; QComboBox *comboLayouts; QComboBox *comboLessons; QPushButton *buttonLayoutRegEx; }; #endif tipp10-2.1.0/widget/startwidget.cpp000066400000000000000000001275751274324046000172020ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the StartWidget class ** File name: startwidget.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "startwidget.h" #include "sql/startsql.h" #include "updatedialog.h" #include "def/defines.h" #include "def/errordefines.h" #include "errormessage.h" #include "lessondialog.h" #include "downloaddialog.h" #include "illustrationdialog.h" #include "txtmessagedialog.h" StartWidget::StartWidget(QWidget *parent) : QWidget(parent) { // Set the logo companyLogo = new CompanyLogo(this); readLicenseSettings(); // Create group boxes with user settings createGroupLesson(); createGroupLimit(); createGroupError(); createGroupSupport(); // Create buttons createButtons(); // Set the layout of all widgets created above createLayout(); // Read user settings readSettings(); // Widget connections createConnections(); buttonTraining->setFocus(); } StartWidget::~StartWidget() { // Save settings before closing the startwidget writeSettings(); } void StartWidget::createGroupLesson() { tabLessons = new QTabWidget(); //tabLessons->setUsesScrollButtons(false); tabLessons->setElideMode(Qt::ElideRight); //TIPP10 //------ // List widget with training lessons listLesson = new QListWidget(); //fillLessonList(); tabTrainingLessons = new QWidget(); QVBoxLayout *tabVLayout = new QVBoxLayout; tabVLayout->addWidget(listLesson); tabTrainingLessons->setLayout(tabVLayout); tabLessons->addTab(tabTrainingLessons, QIcon(":/img/tab_training.png"), tr("Uebungslektionen")); // List widget with opem lessons listOpen = new QListWidget(); comboTheme = new QComboBox(); labelTheme = new QLabel(tr("Thema:")); tabOpenLessons = new QWidget(); QHBoxLayout *tabPLayout = new QHBoxLayout; tabPLayout->addStretch(1); tabPLayout->addWidget(labelTheme); tabPLayout->addWidget(comboTheme); QVBoxLayout *tabOLayout = new QVBoxLayout; tabOLayout->addLayout(tabPLayout); tabOLayout->addWidget(listOpen); tabOpenLessons->setLayout(tabOLayout); tabLessons->addTab(tabOpenLessons, QIcon(":/img/tab_open.png"), ""); //COMAK-Release //------------- /* // List widget with open lessons listOpen = new QListWidget(); comboTheme = new QComboBox(); labelTheme = new QLabel(tr("Thema:")); tabOpenLessons = new QWidget(); QHBoxLayout *tabPLayout = new QHBoxLayout; tabPLayout->addStretch(1); tabPLayout->addWidget(labelTheme); tabPLayout->addWidget(comboTheme); QVBoxLayout *tabOLayout = new QVBoxLayout; tabOLayout->addLayout(tabPLayout); tabOLayout->addWidget(listOpen); tabOpenLessons->setLayout(tabOLayout); tabLessons->addTab(tabOpenLessons, QIcon(":/img/tab_open.png"), ""); // List widget with training lessons listLesson = new QListWidget(); //fillLessonList(); tabTrainingLessons = new QWidget(); QVBoxLayout *tabVLayout = new QVBoxLayout; tabVLayout->addWidget(listLesson); tabTrainingLessons->setLayout(tabVLayout); tabLessons->addTab(tabTrainingLessons, QIcon(":/img/tab_training.png"), tr("Uebungslektionen")); */ // List widget with own lessons listOwn = new QListWidget(); lessonEditMenu = new QMenu(); buttonEditLesson = new QPushButton(tr("&Bearbeiten")); buttonEditLesson->setFixedHeight(20); lessonNew = new QAction(QIcon(":/img/menu_new.png"), tr("&Neue Lektion"), this); lessonImport = new QAction(QIcon(":/img/menu_import.png"), tr("Lektion &importieren"), this); lessonExport = new QAction(QIcon(":/img/menu_export.png"), tr("Lektion &exportieren"), this); lessonDownload = new QAction(QIcon(":/img/menu_download.png"), tr("Lektion &downloaden"), this); lessonEdit = new QAction(QIcon(":/img/menu_edit.png"), tr("Lektion &editieren"), this); lessonDel = new QAction(QIcon(":/img/menu_del.png"), tr("Lektion &loeschen"), this); //lessonPublish = new QAction(QIcon(":/img/menu_help.png"), // tr("Hilfe"), this); lessonEditMenu->addAction(lessonNew); lessonEditMenu->addAction(lessonEdit); lessonEditMenu->addAction(lessonDel); lessonEditMenu->addSeparator(); lessonEditMenu->addAction(lessonImport); lessonEditMenu->addAction(lessonExport); //lessonEditMenu->addAction(lessonPublish); buttonEditLesson->setMenu(lessonEditMenu); tabOwnLessons = new QWidget(); QHBoxLayout *tabHLayout = new QHBoxLayout; tabHLayout->addStretch(1); tabHLayout->addWidget(buttonEditLesson); QVBoxLayout *tabLayout = new QVBoxLayout; tabLayout->addLayout(tabHLayout); tabLayout->addWidget(listOwn); tabOwnLessons->setLayout(tabLayout); tabLessons->addTab(tabOwnLessons, QIcon(":/img/tab_own.png"), ""); } void StartWidget::createGroupLimit() { // Group "Duration of lesson" groupLimit = new QGroupBox(tr("Dauer der Lektion")); // Radiobutton "Time limit" radioLimitTime = new QRadioButton(tr("Zeitlimit:")); radioLimitTime->setToolTip(tr("Das Diktat wird nach Ablauf " "einer\nfestgelegten Zeit beendet")); // Spin textbox "Time limit" with values from 2 to 20 minutes spinLimitTime = new QSpinBox(); spinLimitTime->setMinimum(2); spinLimitTime->setMaximum(20); spinLimitTime->setSuffix(tr(" Minuten")); spinLimitTime->setToolTip(tr("Das Diktat wird nach Ablauf einer\n" "festgelegten Zeit beendet")); //Radiobutton "Number of tokens" radioLimitToken = new QRadioButton(tr("Zeichenlimit:")); radioLimitToken->setToolTip(tr("Das Diktat wird nach einer " "festgelegten Anzahl\nkorrekt getippter Zeichen beendet")); // Spin testbox "Number of tokens" with values from 200 to 2000 tokens spinLimitToken = new QSpinBox(); spinLimitToken->setMinimum(200); spinLimitToken->setMaximum(2000); spinLimitToken->setSingleStep(100); spinLimitToken->setSuffix(tr(" Zeichen")); spinLimitToken->setToolTip(tr("Das Diktat wird nach einer " "bestimmten Anzahl\nkorrekt getippter Zeichen beendet")); //Radiobutton "To end of lesson" radioLimitLesson = new QRadioButton(tr("Gesamte\nLektion")); radioLimitLesson->setToolTip(tr("Es wird die gesamte (freie) Lektion\n" "von Anfang bis Ende diktiert")); labelLimitLesson = new QLabel(tr("(gesamte Lektion)")); // Layout of group box QVBoxLayout *timeLayout = new QVBoxLayout; timeLayout->addStretch(1); timeLayout->addWidget(radioLimitTime); timeLayout->addWidget(spinLimitTime); timeLayout->addStretch(1); QVBoxLayout *tokenLayout = new QVBoxLayout; tokenLayout->addStretch(1); tokenLayout->addWidget(radioLimitToken); tokenLayout->addWidget(spinLimitToken); tokenLayout->addStretch(1); QVBoxLayout *lessonLayout = new QVBoxLayout; lessonLayout->addStretch(1); lessonLayout->addWidget(radioLimitLesson); lessonLayout->addSpacing(24); lessonLayout->addStretch(1); QHBoxLayout *groupLayout = new QHBoxLayout; groupLayout->addLayout(timeLayout); groupLayout->addSpacing(20); groupLayout->addLayout(tokenLayout); groupLayout->addSpacing(20); groupLayout->addLayout(lessonLayout); groupLayout->setMargin(10); groupLimit->setLayout(groupLayout); } void StartWidget::createGroupError() { // Group "Type error handling" groupError = new QGroupBox(tr("Reaktion auf Tippfehler")); // Checkbox "Block type errors" checkErrorStop = new QCheckBox(tr("Diktat blockieren")); checkErrorStop->setToolTip(tr("Das Diktat wird erst fortgesetzt, " "wenn die\nrichtige Taste gedrueckt wurde")); // Checkbox "Correct type errors" checkErrorCorrect = new QCheckBox(tr("Fehler korrigieren")); checkErrorCorrect->setToolTip(tr("Tippfehler muessen zusaetzlich ueber die\n" "Ruecklauftaste entfernt werden")); // Checkbox "Beep on type errors" checkErrorBeep = new QCheckBox(tr("Akustisches Signal")); checkErrorBeep->setToolTip(tr("Bei jedem Tippfehler ertoent ein " "Beepton")); // Checkbox "Image on type errors" checkErrorImage = new QCheckBox(tr("Sinnbild einblenden")); checkErrorImage->setToolTip(tr("Bei jedem Tippfehler wird das " "zur Taste entsprechende Sinnbild angezeigt")); QFont h2; #if APP_MAC h2.setPointSize(11); labelIntelligence = new QLabel(tr("*Die Texte der Lektion " "werden nicht in ihrer vorgesehenen Reihenfolge diktiert, " "sondern in Echtzeit an die Tippfehler angepasst.")); #else h2.setPointSize(7); labelIntelligence = new QLabel(tr("*Aktivieren Sie diese Option, " "wenn die Texte der Lektion nicht in ihrer vorgesehenen Reihenfolge diktiert, " "sondern in Echtzeit an die Tippfehler angepasst werden sollen.")); #endif labelIntelligence->setWordWrap(true); labelIntelligence->setFont(h2); // Checkbox "Intelligence" checkIntelligence = new QCheckBox(tr("Intelligenz*")); checkIntelligence->setToolTip(tr("Anhand der aktuellen Fehlerquoten aller Schriftzeichen " "werden\ndie Worte und Saetze des Diktats in Echtzeit ausgewaehlt.\nIst die Intelligenz dagegen " "deaktiviert, werden die Texte der Lektion\nstets in der gleichen Reihenfolge diktiert.")); // Layout of group box QHBoxLayout *hlayout = new QHBoxLayout; hlayout->addSpacing(12); hlayout->addWidget(checkErrorCorrect); QHBoxLayout *h2layout = new QHBoxLayout; h2layout->addSpacing(12); h2layout->addWidget(checkErrorImage); QVBoxLayout *layout = new QVBoxLayout; layout->addStretch(1); layout->addWidget(checkErrorStop); layout->addLayout(hlayout); layout->addSpacing(10); layout->addStretch(1); layout->addWidget(checkErrorBeep); layout->addSpacing(10); layout->addStretch(1); layout->addWidget(checkIntelligence); layout->addWidget(labelIntelligence); layout->addStretch(1); //layout->addSpacing(10); layout->setMargin(10); // Pass layout to parent widget (group box) groupError->setLayout(layout); } void StartWidget::createGroupSupport() { // Group "Other user support" groupKeyboard = new QGroupBox(tr("Hilfestellungen")); checkHelpers = new QCheckBox(tr("Tastatur anzeigen")); checkHelpers->setToolTip(tr("Zur visuellen Unterstuetzung " "werden die virtuelle\nTastatur und Statusinformationen angezeigt")); // Checkbox "Enable color selection of keys" checkKeySelection = new QCheckBox(tr("Tasten farbig markieren")); checkKeySelection->setToolTip(tr("Zur visuellen Unterstuetzung " "werden die zu\ndrueckenden Tasten farbig markiert")); // Checkbox "Enable color selection of start keys" checkKeySelectionStart = new QCheckBox(tr("Grundstellung markieren")); checkKeySelectionStart->setToolTip(tr("Zur visuellen Unterstuetzung " "werden die\nverbleibenden Finger der Grundstellung\nfarbig markiert")); // Checkbox "Enable status information" checkKeyBorder = new QCheckBox(tr("Trennlinie anzeigen")); checkKeyBorder->setToolTip(tr("Zur visuellen Unterstuetzung " "wird eine Trennlinie\nfuer die zu Unterscheidung von linker und rechter Hand\n" "angezeigt")); // Checkbox "Enable status information" checkStatusInformation = new QCheckBox(tr("Hilfetext anzeigen")); checkStatusInformation->setToolTip(tr("Zur Unterstuetzung werden " "die zu verwendenden\nFinger in der Statusleiste angezeigt")); // Checkbox "Enable key path" checkKeyPath = new QCheckBox(tr("Tastpfade anzeigen")); checkKeyPath->setToolTip(tr("Zur Unterstuetzung werden " "die Tastpfade der\nFinger auf der Tastatur angezeigt")); // Layout of group box QHBoxLayout *helpLayout = new QHBoxLayout; helpLayout->addWidget(checkHelpers); QHBoxLayout *sLayout = new QHBoxLayout; sLayout->addSpacing(12); sLayout->addWidget(checkKeySelection); QHBoxLayout *ssLayout = new QHBoxLayout; ssLayout->addSpacing(12); ssLayout->addWidget(checkKeySelectionStart); QHBoxLayout *bLayout = new QHBoxLayout; bLayout->addSpacing(12); bLayout->addWidget(checkKeyBorder); QHBoxLayout *siLayout = new QHBoxLayout; siLayout->addWidget(checkStatusInformation); QHBoxLayout *paLayout = new QHBoxLayout; paLayout->addSpacing(12); paLayout->addWidget(checkKeyPath); QVBoxLayout *selectionLayout = new QVBoxLayout; selectionLayout->addStretch(1); selectionLayout->addSpacing(4); selectionLayout->addLayout(helpLayout); selectionLayout->addSpacing(4); selectionLayout->addStretch(1); selectionLayout->addLayout(sLayout); selectionLayout->addSpacing(4); selectionLayout->addStretch(1); selectionLayout->addLayout(ssLayout); selectionLayout->addSpacing(4); selectionLayout->addStretch(1); selectionLayout->addLayout(paLayout); selectionLayout->addSpacing(4); selectionLayout->addStretch(1); selectionLayout->addLayout(bLayout); selectionLayout->addSpacing(4); selectionLayout->addStretch(1); selectionLayout->addLayout(siLayout); selectionLayout->addSpacing(4); selectionLayout->addStretch(1); selectionLayout->setMargin(10); // Pass layout to parent widget (group box) groupKeyboard->setLayout(selectionLayout); } void StartWidget::createButtons() { //Button "Training starten" buttonHelp = new QPushButton(tr("&Hilfe")); buttonExit = new QPushButton(tr("&Beenden")); buttonTraining = new QPushButton(tr("&Schreibtraining starten")); buttonTraining->setDefault(true); } void StartWidget::createLayout() { // Button layout horizontal QHBoxLayout *buttonLayoutHorizontal = new QHBoxLayout; buttonLayoutHorizontal->addWidget(buttonExit); buttonLayoutHorizontal->addSpacing(10); buttonLayoutHorizontal->addWidget(buttonHelp); buttonLayoutHorizontal->addWidget(buttonTraining); // Button layout vertical QVBoxLayout *buttonLayoutVertical = new QVBoxLayout; buttonLayoutVertical->addSpacing(20); buttonLayoutVertical->addLayout(buttonLayoutHorizontal); // Logo layout vertical QVBoxLayout *logoLayout = new QVBoxLayout; logoLayout->addSpacing(10); logoLayout->addWidget(companyLogo); // Logo layout + button layout horizontal QHBoxLayout *bottomLayout = new QHBoxLayout; bottomLayout->addLayout(logoLayout); bottomLayout->addStretch(1); bottomLayout->addLayout(buttonLayoutVertical); // Group error handling and other user support vertical /*QVBoxLayout *bottomboxesLayoutV = new QVBoxLayout; bottomboxesLayoutV->addWidget(groupError); bottomboxesLayoutV->addWidget(groupIntelligence);*/ // Group error handling and other user support horizontal QHBoxLayout *bottomboxesLayout = new QHBoxLayout; bottomboxesLayout->addWidget(groupError); bottomboxesLayout->addWidget(groupKeyboard); // Group duration and layout above vertical QVBoxLayout *boxesLayout = new QVBoxLayout; boxesLayout->addWidget(groupLimit); boxesLayout->addLayout(bottomboxesLayout); // Layout all groups, buttons and logo horizontal QHBoxLayout *centerLayout = new QHBoxLayout; centerLayout->addWidget(tabLessons); centerLayout->addLayout(boxesLayout); // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(centerLayout); mainLayout->addSpacing(1); mainLayout->addLayout(bottomLayout); mainLayout->setMargin(15); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void StartWidget::createConnections() { // Widget connections connect(buttonTraining, SIGNAL(clicked()), this, SLOT(clickTraining())); connect(buttonExit, SIGNAL(clicked()), qApp, SLOT(quit())); connect(buttonHelp, SIGNAL(clicked()), this, SLOT(showHelp())); connect(radioLimitTime, SIGNAL(clicked()), this, SLOT(toggleLimit())); connect(radioLimitToken, SIGNAL(clicked()), this, SLOT(toggleLimit())); connect(radioLimitLesson, SIGNAL(clicked()), this, SLOT(toggleLimit())); connect(checkErrorStop, SIGNAL(clicked()), this, SLOT(toggleError())); connect(checkHelpers, SIGNAL(clicked()), this, SLOT(toggleHelpers())); connect(checkIntelligence, SIGNAL(clicked()), this, SLOT(toggleIntelligence())); connect(listLesson, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(doubleClickLesson(QListWidgetItem*))); connect(listOpen, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(doubleClickLesson(QListWidgetItem*))); connect(listOwn, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(doubleClickLesson(QListWidgetItem*))); connect(lessonNew, SIGNAL(triggered()), this, SLOT(clickNewLesson())); connect(lessonImport, SIGNAL(triggered()), this, SLOT(clickImportLesson())); connect(lessonExport, SIGNAL(triggered()), this, SLOT(clickExportLesson())); connect(lessonDownload, SIGNAL(triggered()), this, SLOT(clickDownloadLesson())); connect(lessonDel, SIGNAL(triggered()), this, SLOT(clickDeleteLesson())); connect(lessonEdit, SIGNAL(triggered()), this, SLOT(clickEditLesson())); connect(tabLessons, SIGNAL(currentChanged(int)), this, SLOT(toggleTabs(int))); connect(comboTheme, SIGNAL(activated(int)), this, SLOT(toggleThemes(int))); } void StartWidget::fillLessonList(bool themeChanged = false) { int trainingNum = 0; int openNum = 0; int ownNum = 0; int themesNum = 0; #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); QString languageLesson = settings.value("language_lesson", APP_STD_LANGUAGE_LESSON).toString(); settings.endGroup(); StartSql *lessonSql = new StartSql(); // Training lesson list // -------------------- if ((trainingNum = lessonSql->fillLessonList(listLesson, &arrayTraining, languageLesson)) == -1) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_EXIST, TYPE_CRITICAL, CANCEL_OPERATION); return; } // Preselection settings.beginGroup("lesson"); int selectTraining = arrayTraining.indexOf(settings.value("list_training","").toString()); if (selectTraining == -1) { listLesson->setCurrentRow(0); } else { listLesson->setCurrentRow(selectTraining); } settings.endGroup(); // Open themes list // -------------------- if ((themesNum = lessonSql->fillThemes(comboTheme, &arrayThemes, languageLesson, tr("Alle"))) == -1) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_EXIST, TYPE_CRITICAL, CANCEL_OPERATION); return; } // Preselection settings.beginGroup("lesson"); int selectTheme = arrayThemes.indexOf(settings.value("combo_theme","").toString()); if (selectTheme == -1) { comboTheme->setCurrentIndex(0); } else { comboTheme->setCurrentIndex(selectTheme); } // Hide Theme-Combo if only one ("all") theme exist if (comboTheme->count() <= 1) { labelTheme->setVisible(false); comboTheme->setVisible(false); } else { labelTheme->setVisible(true); comboTheme->setVisible(true); } settings.endGroup(); // Open lesson list // -------------------- if ((openNum = lessonSql->fillOpenList(listOpen, &arrayOpen, arrayThemes.at(comboTheme->currentIndex()), languageLesson)) == -1) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_EXIST, TYPE_CRITICAL, CANCEL_OPERATION); return; } // Preselection settings.beginGroup("lesson"); int selectOpen = arrayOpen.indexOf(settings.value("list_open","").toString()); if (selectOpen == -1) { listOpen->setCurrentRow(0); } else { listOpen->setCurrentRow(selectOpen); } settings.endGroup(); // Own lesson list // -------------------- if ((ownNum = lessonSql->fillOwnList(listOwn, &arrayOwn)) == -1) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_EXIST, TYPE_CRITICAL, CANCEL_OPERATION); return; } // Preselection settings.beginGroup("lesson"); int selectOwn = arrayOwn.indexOf(settings.value("list_own","").toString()); if (selectOwn == -1) { listOwn->setCurrentRow(0); } else { listOwn->setCurrentRow(selectOwn); } settings.endGroup(); if (listOwn->count() == 0) { lessonEdit->setEnabled(false); lessonDel->setEnabled(false); lessonExport->setEnabled(false); } else { buttonTraining->setEnabled(true); lessonEdit->setEnabled(true); lessonDel->setEnabled(true); lessonExport->setEnabled(true); } } void StartWidget::toggleLimit() { // Check radio buttons in group "Duration of lesson" if (radioLimitTime->isChecked()) { // "Time limit" selected spinLimitTime->setEnabled(true); spinLimitToken->setEnabled(false); } else { if (radioLimitToken->isChecked()) { // "Token limit" selected spinLimitTime->setEnabled(false); spinLimitToken->setEnabled(true); } else { spinLimitTime->setEnabled(false); spinLimitToken->setEnabled(false); } } } void StartWidget::toggleError() { // Check check box in group "Type error handling" if (checkErrorStop->isChecked()) { checkErrorCorrect->setEnabled(true); } else { checkErrorCorrect->setChecked(false); checkErrorCorrect->setEnabled(false); } } void StartWidget::toggleHelpers() { // Check check box in group "Type error handling" if (checkHelpers->isChecked()) { checkKeySelection->setEnabled(true); checkKeySelection->setChecked(true); checkKeySelectionStart->setEnabled(true); checkKeySelectionStart->setChecked(true); checkKeyBorder->setEnabled(true); checkKeyBorder->setChecked(true); //checkStatusInformation->setEnabled(true); //checkStatusInformation->setChecked(true); checkKeyPath->setEnabled(true); checkKeyPath->setChecked(true); } else { checkKeySelection->setEnabled(false); checkKeySelection->setChecked(false); checkKeySelectionStart->setEnabled(false); checkKeySelectionStart->setChecked(false); checkKeyBorder->setEnabled(false); checkKeyBorder->setChecked(false); //checkStatusInformation->setEnabled(false); //checkStatusInformation->setChecked(false); checkKeyPath->setEnabled(false); checkKeyPath->setChecked(false); } } void StartWidget::toggleIntelligence() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif // Check check box in group "Type error handling" if (checkIntelligence->isChecked()) { radioLimitLesson->setVisible(false); if (radioLimitLesson->isChecked()) { radioLimitTime->setChecked(true); spinLimitTime->setEnabled(true); } } else { radioLimitLesson->setVisible(true); if (toggleLimitLesson) { radioLimitLesson->setChecked(true); spinLimitTime->setEnabled(false); spinLimitToken->setEnabled(false); } } settings.beginGroup("intelligence"); settings.setValue("check_intelligence", checkIntelligence->isChecked()); settings.endGroup(); } void StartWidget::toggleThemes(int index){ #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); QString languageLesson = settings.value("language_lesson", APP_STD_LANGUAGE_LESSON).toString(); settings.endGroup(); StartSql *lessonSql = new StartSql(); // Open lesson list // -------------------- if (lessonSql->fillOpenList(listOpen, &arrayOpen, arrayThemes.at(index), languageLesson) == -1) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_EXIST, TYPE_CRITICAL, CANCEL_OPERATION); return; } // Preselection listOpen->setCurrentRow(0); } void StartWidget::toggleTabs(int index) { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif tabLessons->setTabText(0, ""); tabLessons->setTabText(1, ""); tabLessons->setTabText(2, ""); switch (index) { case 0: tabLessons->setTabText(0, tr("Uebungslektionen")); buttonTraining->setEnabled(true); checkIntelligence->setChecked(true); checkIntelligence->setEnabled(false); labelIntelligence->setEnabled(false); radioLimitLesson->setVisible(false); if (radioLimitLesson->isChecked()) { radioLimitTime->setChecked(true); spinLimitTime->setEnabled(true); } break; case 1: tabLessons->setTabText(1, tr("Freie Lektionen")); buttonTraining->setEnabled(true); checkIntelligence->setEnabled(true); labelIntelligence->setEnabled(true); settings.beginGroup("intelligence"); checkIntelligence->setChecked(settings.value("check_intelligence", false).toBool()); settings.endGroup(); // Enable/disable radioLimitLesson if (checkIntelligence->isChecked() == true) { radioLimitLesson->setVisible(false); if (radioLimitLesson->isChecked()) { radioLimitTime->setChecked(true); spinLimitTime->setEnabled(true); } } else { radioLimitLesson->setVisible(true); if (toggleLimitLesson) { radioLimitLesson->setChecked(true); spinLimitTime->setEnabled(false); spinLimitToken->setEnabled(false); } } settings.beginGroup("general"); if (openLessonWarning && settings.value("language_lesson", APP_STD_LANGUAGE_LESSON).toString() == "en_us_qwerty") { QMessageBox::information(this, APP_NAME, tr("Derzeit gibt es die freien Lektionen nur in deutscher" " Sprache. Wir arbeiten daran, bald auch freie Lektionen " "in englischer Sprache anbieten zu koennen." )); openLessonWarning = false; settings.setValue("check_open_lesson_warning", openLessonWarning); } settings.endGroup(); break; case 2: tabLessons->setTabText(2, tr("Eigene Lektionen")); if (listOwn->count() == 0) { buttonTraining->setEnabled(false); lessonEdit->setEnabled(false); lessonDel->setEnabled(false); lessonExport->setEnabled(false); } else { buttonTraining->setEnabled(true); lessonEdit->setEnabled(true); lessonDel->setEnabled(true); lessonExport->setEnabled(true); } checkIntelligence->setEnabled(true); labelIntelligence->setEnabled(true); settings.beginGroup("intelligence"); checkIntelligence->setChecked(settings.value("check_intelligence", false).toBool()); settings.endGroup(); // Enable/disable radioLimitLesson if (checkIntelligence->isChecked() == true) { radioLimitLesson->setVisible(false); if (radioLimitLesson->isChecked()) { radioLimitTime->setChecked(true); spinLimitTime->setEnabled(true); } } else { radioLimitLesson->setVisible(true); if (toggleLimitLesson) { radioLimitLesson->setChecked(true); spinLimitTime->setEnabled(false); spinLimitToken->setEnabled(false); } } break; } } void StartWidget::clickTraining() { // User finished setting the properties and wants to start the // training lesson int selectedLesson = -1; QString selectedName = ""; int listSize = 0; int tabIndex = 0; switch (tabLessons->currentIndex()) { case 0: selectedLesson = arrayTraining.at(listLesson->currentRow()).toInt(); listSize = arrayTraining.size(); selectedName = listLesson->currentItem()->text(); tabIndex = 0; break; case 1: selectedLesson = arrayOpen.at(listOpen->currentRow()).toInt(); listSize = arrayOpen.size(); selectedName = listOpen->currentItem()->text(); tabIndex = 1; break; case 2: selectedLesson = arrayOwn.at(listOwn->currentRow()).toInt(); listSize = arrayOwn.size(); selectedName = listOwn->currentItem()->text(); tabIndex = 2; break; } if (selectedLesson == -1 || listSize == 0) { // No selected lesson found in combo box // -> error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_SELECTED, TYPE_INFO, CANCEL_OPERATION); return; } // -> emit the signal that mainwindow knows user wants to start training emit trainingClicked(selectedLesson, tabIndex, selectedName); } void StartWidget::doubleClickLesson(QListWidgetItem *item) { clickTraining(); } void StartWidget::clickNewLesson() { QStringList nullList; LessonDialog lessonDialog("-1", &nullList, this); if (lessonDialog.exec() != 0) { // Fill lesson list after changing lessons StartSql *lessonSql = new StartSql(); // Own lesson list // --------------- if (lessonSql->fillOwnList(listOwn, &arrayOwn) == -1) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_EXIST, TYPE_CRITICAL, CANCEL_OPERATION); return; } // Preselection listOwn->setCurrentRow(0); if (listOwn->count() == 0) { buttonTraining->setEnabled(false); lessonEdit->setEnabled(false); lessonDel->setEnabled(false); lessonExport->setEnabled(false); } else { buttonTraining->setEnabled(true); lessonEdit->setEnabled(true); lessonDel->setEnabled(true); lessonExport->setEnabled(true); } } } void StartWidget::clickImportLesson() { // Show file read dialog QFileDialog *fd = new QFileDialog(this); fd->setFileMode(QFileDialog::ExistingFile); fd->setViewMode(QFileDialog::Detail); QString path = fd->getOpenFileName(this, tr("Bitte waehlen Sie eine Textdatei aus"), QDir::homePath(), tr("Textdateien (*.txt)")); // Cancel pressed or no file selected if (path == "") { return; } QFile file(path); // Can't open file if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_IMPORT_READ, TYPE_INFO, CANCEL_OPERATION); return; } QStringList *lessonData = new QStringList; lessonData->clear(); lessonData->append(QFileInfo(file).baseName()); QTextStream in(&file); while (!in.atEnd()) { lessonData->append(in.readLine()); } // Check if file is empty // (< 2 because first line is the file name) if (lessonData->size() < 2) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_IMPORT_EMPTY, TYPE_INFO, CANCEL_OPERATION); return; } LessonDialog lessonDialog("-2", lessonData, this); if (lessonDialog.exec() != 0) { // Fill lesson list after changing lessons StartSql *lessonSql = new StartSql(); // Own lesson list // --------------- if (lessonSql->fillOwnList(listOwn, &arrayOwn) == -1) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_EXIST, TYPE_CRITICAL, CANCEL_OPERATION); return; } // Preselection listOwn->setCurrentRow(0); if (listOwn->count() == 0) { buttonTraining->setEnabled(false); lessonEdit->setEnabled(false); lessonDel->setEnabled(false); lessonExport->setEnabled(false); } else { buttonTraining->setEnabled(true); lessonEdit->setEnabled(true); lessonDel->setEnabled(true); lessonExport->setEnabled(true); } } } void StartWidget::clickExportLesson() { QSqlQuery query; QString currentLessonId = arrayOwn.at(listOwn->currentRow()); QString lessonName = ""; QString lessonDescription = ""; QString lessonContent = ""; if (!query.exec("SELECT own_name, own_description, own_unit " "FROM own_list " "WHERE own_id = " + currentLessonId + ";")) { return; } if (query.first()) { lessonName = query.value(0).toString(); lessonDescription = query.value(1).toString(); } if (!query.exec("SELECT content_text " "FROM own_content " "WHERE content_lesson = " + currentLessonId + " " "ORDER BY content_id;")) { return; } // Read all datasets to list items while (query.next()) { // ID of the lesson lessonContent.append(query.value(0).toString() + "\n"); } // Show file read dialog QFileDialog *fd = new QFileDialog(this); fd->setFileMode(QFileDialog::AnyFile); fd->setViewMode(QFileDialog::Detail); QString fileNameEncoded = ""; QRegExp regexp("[A-Za-z0-9_-]*"); if (regexp.indexIn(lessonName) > -1) { QStringList list = regexp.capturedTexts(); QStringList::iterator it = list.begin(); while (it != list.end()) { fileNameEncoded.append(*it); ++it; } fileNameEncoded.append(".txt"); } else { fileNameEncoded = "export.txt"; } QString path = fd->getSaveFileName(this, tr("Bitte geben Sie den Speicherort fuer eine Textdatei ein"), fileNameEncoded); // Cancel pressed or no file selected if (path == "") { return; } QFile file(path); // Can't open file if (!file.open(QFile::WriteOnly | QIODevice::Text)) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_EXPORT_WRITE, TYPE_INFO, CANCEL_OPERATION); return; } QTextStream out(&file); out << lessonContent; } void StartWidget::clickDownloadLesson() { QStringList lessonData; DownloadDialog downloadDialog(&lessonData, this); if (downloadDialog.exec() != 0) { LessonDialog lessonDialog("-2", &lessonData, this); if (lessonDialog.exec() != 0) { // Fill lesson list after changing lessons StartSql *lessonSql = new StartSql(); // Own lesson list // --------------- if (lessonSql->fillOwnList(listOwn, &arrayOwn) == -1) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_EXIST, TYPE_CRITICAL, CANCEL_OPERATION); return; } // Preselection listOwn->setCurrentRow(0); if (listOwn->count() == 0) { buttonTraining->setEnabled(false); lessonEdit->setEnabled(false); lessonDel->setEnabled(false); lessonExport->setEnabled(false); } else { buttonTraining->setEnabled(true); lessonEdit->setEnabled(true); lessonDel->setEnabled(true); lessonExport->setEnabled(true); } } } } void StartWidget::clickEditLesson() { int tempLesson = listOwn->currentRow(); QStringList nullList; LessonDialog lessonDialog(arrayOwn.at(tempLesson), &nullList, this); if (lessonDialog.exec() != 0) { // Fill lesson list after changing lessons StartSql *lessonSql = new StartSql(); // Own lesson list // --------------- if (lessonSql->fillOwnList(listOwn, &arrayOwn) == -1) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_EXIST, TYPE_CRITICAL, CANCEL_OPERATION); return; } // Preselection listOwn->setCurrentRow(tempLesson); } } void StartWidget::clickDeleteLesson() { switch (QMessageBox::question(this, APP_NAME, tr("Wollen Sie die Lektion wirklich loeschen und damit auch " "alle aufgezeichneten Daten, die im Zusammenhang mit dieser Lektion stehen? " "\n\n"), tr("&Ja"), tr("&Abbrechen"), 0, 1)) { case 0: StartSql *lessonSql = new StartSql(); if (!lessonSql->deleteOwnLesson(arrayOwn.at(listOwn->currentRow()))) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_EXIST, TYPE_CRITICAL, CANCEL_OPERATION); return; } if (!lessonSql->analyzeOwnLessons()) { // No selected lesson found in combo box // -> error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_LESSON_ANALYZE, TYPE_INFO, CANCEL_OPERATION); return; } // Fill lesson list after changing lessons if (lessonSql->fillOwnList(listOwn, &arrayOwn) == -1) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_EXIST, TYPE_CRITICAL, CANCEL_OPERATION); return; } // Preselection listOwn->setCurrentRow(0); break; } if (listOwn->count() == 0) { buttonTraining->setEnabled(false); lessonEdit->setEnabled(false); lessonDel->setEnabled(false); lessonExport->setEnabled(false); } else { buttonTraining->setEnabled(true); lessonEdit->setEnabled(true); lessonDel->setEnabled(true); lessonExport->setEnabled(true); } } void StartWidget::showHelp() { helpBrowser = new HelpBrowser("", 0); helpBrowser->show(); } void StartWidget::readLicenseSettings() { // Restores settings of the startwiget // (uses the default constructor of QSettings, passing // the application and company name see main function) #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); lessonExportVisible = false; settings.endGroup(); } void StartWidget::readSettings() { // Restores settings of the startwiget // (uses the default constructor of QSettings, passing // the application and company name see main function) #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif // Set current lesson tab settings.beginGroup("lesson"); tabLessons->setCurrentIndex(settings.value("tab_current", 0).toInt()); settings.endGroup(); toggleTabs(tabLessons->currentIndex()); settings.beginGroup("duration"); radioLimitTime->setChecked(settings.value("radio_time", true).toBool()); spinLimitTime->setEnabled(settings.value("radio_time", true).toBool()); radioLimitLesson->setChecked(settings.value("radio_lesson", false).toBool()); radioLimitToken->setChecked(settings.value("radio_token", false).toBool()); spinLimitToken->setEnabled(settings.value("radio_token", false).toBool()); spinLimitTime->setValue(settings.value("spin_time", LESSON_TIMELEN_STANDARD).toInt()); spinLimitToken->setValue(settings.value("spin_token", LESSON_TOKENLEN_STANDARD).toInt()); settings.endGroup(); settings.beginGroup("error"); checkErrorStop->setChecked(settings.value("check_stop", true).toBool()); checkErrorCorrect->setChecked(settings.value("check_correct", false).toBool()); checkErrorCorrect->setEnabled(settings.value("check_stop", true).toBool()); checkErrorBeep->setChecked(settings.value("check_beep", false).toBool()); settings.endGroup(); settings.beginGroup("support"); checkHelpers->setChecked(settings.value("check_helpers", true).toBool()); checkKeySelection->setChecked(settings.value("check_selection", true).toBool()); checkKeySelectionStart->setChecked(settings.value("check_selection_start", true).toBool()); checkKeyBorder->setChecked(settings.value("check_border", true).toBool()); checkStatusInformation->setChecked(settings.value("check_status", true).toBool()); checkKeyPath->setChecked(settings.value("check_path", true).toBool()); settings.endGroup(); if (!checkHelpers->isChecked()) { toggleHelpers(); } //!!!COMAK-Release if (tabLessons->currentIndex() != 0) { settings.beginGroup("intelligence"); checkIntelligence->setChecked(settings.value("check_intelligence", false).toBool()); settings.endGroup(); } else { checkIntelligence->setChecked(true); checkIntelligence->setEnabled(false); labelIntelligence->setEnabled(false); } settings.beginGroup("general"); openLessonWarning = settings.value("check_open_lesson_warning", true).toBool(); toggleLimitLesson = settings.value("check_limit_lesson", true).toBool(); checkLessonPublish = settings.value("check_lesson_publish", true).toBool(); checkToggleIntelligence = settings.value("check_toggle_intelligence", true).toBool(); checkTxtWarning = settings.value("check_txt_warning", true).toBool(); settings.endGroup(); // Enable/disable radioLimitLesson if (tabLessons->currentIndex() == 0) { radioLimitLesson->setVisible(false); } else { if (checkIntelligence->isChecked() == true) { radioLimitLesson->setVisible(false); } else { radioLimitLesson->setVisible(true); } } } void StartWidget::writeSettings() { // Saves settings of the startwiget // (uses the default constructor of QSettings, passing // the application and company name see main function) #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("lesson"); settings.setValue("tab_current", tabLessons->currentIndex()); if (listLesson->count() == 0) { settings.setValue("list_training", -1); } else { settings.setValue("list_training", arrayTraining.at(listLesson->currentRow())); } if (listOpen->count() == 0) { settings.setValue("list_open", -1); } else { settings.setValue("list_open", arrayOpen.at(listOpen->currentRow())); } if (comboTheme->count() == 0) { settings.setValue("combo_theme", -1); } else { settings.setValue("combo_theme", arrayThemes.at(comboTheme->currentIndex())); } if (listOwn->count() == 0) { settings.setValue("list_own", -1); } else { settings.setValue("list_own", arrayOwn.at(listOwn->currentRow())); } settings.endGroup(); settings.beginGroup("duration"); settings.setValue("radio_time", radioLimitTime->isChecked()); settings.setValue("spin_time", spinLimitTime->value()); settings.setValue("radio_token", radioLimitToken->isChecked()); settings.setValue("spin_token", spinLimitToken->value()); settings.setValue("radio_lesson", radioLimitLesson->isChecked()); settings.endGroup(); settings.beginGroup("error"); settings.setValue("check_stop", checkErrorStop->isChecked()); settings.setValue("check_correct", checkErrorCorrect->isChecked()); settings.setValue("check_beep", checkErrorBeep->isChecked()); settings.endGroup(); settings.beginGroup("support"); settings.setValue("check_helpers", checkHelpers->isChecked()); settings.setValue("check_selection", checkKeySelection->isChecked()); settings.setValue("check_selection_start", checkKeySelectionStart->isChecked()); settings.setValue("check_border", checkKeyBorder->isChecked()); settings.setValue("check_status", checkStatusInformation->isChecked()); settings.setValue("check_path", checkKeyPath->isChecked()); settings.endGroup(); if (tabLessons->currentIndex() != 0) { settings.beginGroup("intelligence"); settings.setValue("check_intelligence", checkIntelligence->isChecked()); settings.endGroup(); } } tipp10-2.1.0/widget/startwidget.h000066400000000000000000000153651274324046000166400ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the StartWidget class ** File name: startwidget.h ** ****************************************************************/ #ifndef STARTWIDGET_H #define STARTWIDGET_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "companylogo.h" #include "helpbrowser.h" //! The StartWidget class provides a lesson list and lesson settings. /*! The StartWidget class provides a widget with a lesson list, buttons to exit program and to start training, and a three lesson settings groups. @author Tom Thielicke, s712715 @version 0.1.1 @date 23.06.2006 */ class StartWidget : public QWidget { Q_OBJECT public: //! Constructor, creates lesson list, setting groups and buttons. /*! In this contructor four groups are created over functions createGroupLesson(), createGroupLimit(), createGroupError() and createGroupSupport(). In addition, user settings are read, and connections are set. @param parent The parent QWidget @see createGroupLesson(), createGroupLimit(), createGroupError(), createGroupSupport(), createButtons(), createLayout(), createConnections(), readSettings() */ StartWidget(QWidget *parent = 0); //! Deconstructor, saves the current settings to hard disk. /*! In this contructor four groups are created over functions createGroupLesson(), createGroupLimit(), createGroupError() and createGroupSupport(). In addition, user settings are read, and connections are set. @see writeSettings() */ ~StartWidget(); //! Fills the lesson list over database class StartSql. /*! @see listLesson */ void fillLessonList(bool themeChanged); //! Writes all user settings to hard disk. void writeSettings(); //! Reads all user settings. void readSettings(); //! Arrays for all lesson lists with data id QList arrayTraining; QList arrayOpen; QList arrayOwn; QList arrayThemes; protected: //! Lesson list. QListWidget *listLesson; QListWidget *listOpen; QListWidget *listOwn; QComboBox *comboTheme; signals: //! Signal, starts the training. /*! This signal is emitted in function clickTraining(). @param lesson Number of the selected lesson @see clickTraining() */ void trainingClicked(int lesson, int type, QString name); private slots: //! Toggles between time limit and token limit. void toggleLimit(); //! Sets and disables the error handling checkboxes. void toggleError(); void toggleHelpers(); void toggleIntelligence(); void toggleTabs(int index); void toggleThemes(int index); //! Slot, starts the training. /*! This slot receives a signal when a user pushs the "start training" button. It checks the selected lesson and emits the trainingClicked signal to inform the parent class about. @see trainingClicked() */ void clickTraining(); void clickNewLesson(); void clickEditLesson(); void clickImportLesson(); void clickExportLesson(); void clickDownloadLesson(); void clickDeleteLesson(); void doubleClickLesson(QListWidgetItem *item); //! Slot, shows the help dialog. /*! This slot shows the help dialog. It creates an object of the QDialog class with an QTextbrowser. */ void showHelp(); private: void readLicenseSettings(); //! Creates a radiobutton with time and token limit items. void createGroupLimit(); //! Creates checkboxes with different error handlings while training. void createGroupError(); //! Creates checkboxes with different supports while training. void createGroupSupport(); //! Creates a lesson list widget. void createGroupLesson(); //! Creates buttons "exit" and "start training". void createButtons(); //! Creates the layout of the complete class. void createLayout(); //! Creates connections for this class. void createConnections(); QPushButton *buttonTraining; QPushButton *buttonExit; QPushButton *buttonHelp; QGroupBox *groupLesson; QGroupBox *groupLimit; QGroupBox *groupError; QGroupBox *groupKeyboard; QLabel *labelIntelligence; QLabel *labelLimitLesson; QLabel *labelTheme; QRadioButton *radioLimitTime; QRadioButton *radioLimitToken; QRadioButton *radioLimitLesson; QSpinBox *spinLimitTime; QSpinBox *spinLimitToken; QCheckBox *checkIntelligence; QCheckBox *checkErrorBeep; QCheckBox *checkErrorStop; QCheckBox *checkErrorCorrect; QCheckBox *checkErrorImage; QCheckBox *checkHelpers; QCheckBox *checkKeySelection; QCheckBox *checkKeySelectionStart; QCheckBox *checkKeyBorder; QCheckBox *checkStatusInformation; QCheckBox *checkKeyPath; CompanyLogo *companyLogo; QPushButton *buttonEditLesson; QWidget *tabTrainingLessons; QWidget *tabOpenLessons; QWidget *tabOwnLessons; bool toggleLimitLesson; bool checkLessonPublish; bool checkToggleIntelligence; bool checkTxtWarning; bool lessonExportVisible; bool openLessonWarning; //! Object of the help browser dialog HelpBrowser *helpBrowser; //! Menu entry for the file menu. QMenu *lessonEditMenu; //! Menu item for lesson edit menu. QAction *lessonEdit; //! Menu item for lesson edit menu. QAction *lessonDel; //! Menu item for lesson edit menu. QAction *lessonNew; //! Menu item for lesson import menu. QAction *lessonImport; //! Menu item for lesson export menu. QAction *lessonExport; //! Menu item for lesson download menu. QAction *lessonDownload; //! Menu item for lesson edit menu. //QAction *lessonPublish; //! Tab widget QTabWidget *tabLessons; }; #endif // STARTWIDGET_H tipp10-2.1.0/widget/statusbar.cpp000066400000000000000000000056471274324046000166440ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the StatusBar class ** File name: statusbar.cpp ** ****************************************************************/ #include #include #include #include "statusbar.h" #include "def/errordefines.h" #include "errormessage.h" #include "def/defines.h" StatusBar::StatusBar(QWidget *parent) : QWidget(parent) { // Init values txtLeftLeft = ""; txtLeft = ""; txtCenter = ""; txtRightRight = ""; txtRight = ""; // Load background image if (!background.load(":/img/statusbg.png")) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_STATUS_PIC, TYPE_WARNING, CANCEL_OPERATION); } setFixedSize(610, 30); setAttribute(Qt::WA_NoSystemBackground); } void StatusBar::setText(QString leftleft, QString left, QString center, QString right, QString rightright) { txtLeftLeft = leftleft; txtLeft = left; txtCenter = center; txtRight = right; txtRightRight = rightright; repaint(); } void StatusBar::setLeftLeftText(QString txt) { txtLeftLeft = txt; repaint(); } void StatusBar::setLeftText(QString txt) { txtLeft = txt; repaint(); } void StatusBar::setCenterText(QString txt) { txtCenter = txt; repaint(); } void StatusBar::setRightText(QString txt) { txtRight = txt; repaint(); } void StatusBar::setRightRightText(QString txt) { txtRightRight = txt; repaint(); } void StatusBar::paintEvent(QPaintEvent *pevent) { QPainter painter(this); // Draw backgorund image painter.drawPixmap(0, 0, background); painter.setFont(QFont(FONT_STANDARD, FONT_SIZE_STATUS)); painter.setPen(QColor(40, 40, 40)); painter.drawText(190, 7, 230, 14, Qt::AlignCenter | Qt::AlignVCenter, txtCenter); painter.setPen(QColor(120, 120, 120)); painter.drawText(10, 7, 80, 14, Qt::AlignCenter | Qt::AlignVCenter, txtLeftLeft); painter.drawText(100, 7, 80, 14, Qt::AlignCenter | Qt::AlignVCenter, txtLeft); painter.drawText(430, 7, 80, 14, Qt::AlignCenter | Qt::AlignVCenter, txtRight); painter.drawText(520, 7, 80, 14, Qt::AlignCenter | Qt::AlignVCenter, txtRightRight); } tipp10-2.1.0/widget/statusbar.h000066400000000000000000000066161274324046000163060ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the StatusBar class ** File name: statusbar.h ** ****************************************************************/ #ifndef STATUSBAR_H #define STATUSBAR_H #include #include #include #include #include class QLabel; //! The StatusBar class provides a status bar with three text parts. /*! @author Tom Thielicke, s712715 @version 0.0.3 @date 08.06.2006 */ class StatusBar : public QWidget { Q_OBJECT public: //! Constructor, creates a status bar with three text parts. /*! In this contructor the following variables are initialized: - txtLeft = "" - txtCenter = "" - txtRight = "" In addition, the image "statusbg.png" is loaded to variable background. @param parent The parent QWidget @see txtLeft, txtCenter, txtRight, background */ StatusBar(QWidget *parent = 0); public slots: //! Slot, sets the all three text items of the status bar. /*! @param left Text on the left side @param center Text in the middle @param right Text on the right side @see txtLeft, txtCenter, txtRight */ void setText(QString leftleft, QString left, QString center, QString right, QString rightright); //! Slot, sets the first left text item of the status bar. /*! @param txt Text @see txtLeft */ void setLeftLeftText(QString txt); //! Slot, sets the second left text item of the status bar. /*! @param txt Text @see txtLeft */ void setLeftText(QString txt); //! Slot, sets the center text item of the status bar. /*! @param txt Text @see txtCenter */ void setCenterText(QString txt); //! Slot, sets the second right text item of the status bar. /*! @param txt Text @see txtRight */ void setRightText(QString txt); //! Slot, sets the first right text item of the status bar. /*! @param txt Text @see txtRight */ void setRightRightText(QString txt); protected: //! Paint event, drwas the backgroung image an the three text itmes. /*! @param event Paint event @see txtLeft, txtCenter, txtRight, background */ void paintEvent(QPaintEvent *event); private: //! First left text of the status bar. QString txtLeftLeft; //! Second left text of the status bar. QString txtLeft; //! Center text of the status bar. QString txtCenter; //! Second right text of the status bar. QString txtRight; //! First right text of the status bar. QString txtRightRight; //! Backgound image. QPixmap background; }; #endif // STATUSBAR_H tipp10-2.1.0/widget/tickerboard.cpp000066400000000000000000000222771274324046000171230ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the TickerBoard class ** File name: tickerboard.h ** ****************************************************************/ #include #include #include #include #include #include "tickerboard.h" #include "def/errordefines.h" #include "errormessage.h" #include "def/defines.h" TickerBoard::TickerBoard(QWidget *parent) : QWidget(parent) { txtCurrentLesson = ""; txtCompleteLesson = ""; counterCurrentLesson = 0; counterCompleteLesson = 0; counterRow = 0; lengthCurrentLesson = 0; lengthCompleteLesson = 0; txtPause = ""; lessonOffset = 0; scrollOffset = 0; scrollCounter = 0; widthSelection = 0; widthCurrentLesson = 0; startFlag = false; colorSelection = colorCursor; tickerFont = QFont(FONT_STANDARD, FONT_SIZE_TICKER); tickerFont.setStyleStrategy(QFont::PreferAntialias); QFontMetrics fm(tickerFont); if (!background.load(":/img/tickerbg.png")) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_TICKER_PIC, TYPE_WARNING, CANCEL_OPERATION); } readSettings(); connect(&timer, SIGNAL(timeout()), this, SLOT(progress())); setFixedSize(610, 65); setAttribute(Qt::WA_NoSystemBackground); // It is very important to set a strong focus on this widget // because it has always to receive the QKeyEvent event!!! setFocusPolicy(Qt::StrongFocus); } void TickerBoard::keyPressEvent(QKeyEvent *event) { // A key was pressed, read the typed text QString typed = event->text(); if (typed == "") { // Return if no text was typed // i.e. if only a modifier was pressed return; } // Emit the pressed QChar emit keyPressed(typed[0]); } void TickerBoard::startTicker(bool wasPaused) { if ((lengthCompleteLesson = txtCompleteLesson.length()) > 0) { QFontMetrics fm(tickerFont); // Check current text and position widthSelection = fm.charWidth(txtCurrentLesson, counterCurrentLesson); widthCurrentLesson = fm.width(txtCurrentLesson); newChar = txtCurrentLesson[counterCurrentLesson]; if (tickerSpeed == 50) { scrollOffset = 290; scroll(-290, 0, QRect::QRect(10, 15, 590, 35)); //contentsRect()); } startFlag = true; repaint(); if (!wasPaused) { emit charChanged(newChar); } } } void TickerBoard::pauseTicker(QString txt) { startFlag = false; txtPause = txt; update(); } void TickerBoard::setTicker(QString txt) { txtCompleteLesson = txt; splitLesson(); checkUpdateRequired(); } void TickerBoard::extendTicker(QString txt, QString seperator) { txtCompleteLesson.append(seperator + txt); splitLesson(); checkUpdateRequired(); } void TickerBoard::getNewChar() { colorSelection = colorCursor; if (startFlag) { changeChar(); } } void TickerBoard::changeChar() { counterCurrentLesson++; counterCompleteLesson++; if (counterCompleteLesson >= lengthCompleteLesson) { // No more text available txtPause = tr("Diktat beendet"); startFlag = false; update(); emit isReady(); emit charChanged(' '); return; } if (counterCurrentLesson >= lengthCurrentLesson) { // Take a new text row counterCurrentLesson = 0; counterRow++; if (tickerSpeed != 50) { scrollOffset = 0; } else { scrollOffset = 290; scroll(-290, 0, QRect::QRect(10, 15, 590, 35)); //contentsRect()); } splitLesson(); } QFontMetrics fm(tickerFont); //txtSelectionWidth = fm.width(txtLesson[txtCounter]); lessonOffset = fm.width(txtCurrentLesson, counterCurrentLesson); widthSelection = fm.charWidth(txtCurrentLesson, counterCurrentLesson); newChar = txtCurrentLesson[counterCurrentLesson]; repaint(); emit charChanged(newChar); checkUpdateRequired(); } void TickerBoard::checkUpdateRequired() { // Check whether a text update is required if ((lengthCompleteLesson - counterCompleteLesson) < NUM_TOKEN_UNTIL_REFRESH) { // Text update required emit updateRequired(); } } void TickerBoard::setErrorSelection() { colorSelection = QColor(249, 126, 0); repaint(); } void TickerBoard::clearErrorSelection() { colorSelection = colorCursor; repaint(); } void TickerBoard::setSpeed(int speed) { //tickerSpeed = speed; if (timer.isActive() && tickerCurrentSpeed != speed) { tickerCurrentSpeed = speed; timer.setInterval(speed); } } void TickerBoard::splitLesson() { QFontMetrics fm(tickerFont); lengthCompleteLesson = txtCompleteLesson.length(); // Split lection into sentences with line break sign at the end // (split case sensitive and skip empty parts) txtLessonSplited = txtCompleteLesson.split(QChar(TOKEN_NEW_LINE), QString::SkipEmptyParts, Qt::CaseSensitive); txtCurrentLesson = txtLessonSplited.at(counterRow) + QChar(TOKEN_NEW_LINE); lengthCurrentLesson = txtCurrentLesson.length(); widthCurrentLesson = fm.width(txtCurrentLesson); repaint(); } void TickerBoard::paintEvent(QPaintEvent *event) { int x; QPainter painter(this); painter.setPen(Qt::NoPen); painter.setBrush(colorBg); painter.drawRect(10, 15, 590, 35); if (startFlag) { // Draw current ticker position x = 290; painter.setFont(tickerFont); painter.setBrush(colorSelection); painter.drawRect(10 + x - scrollOffset + lessonOffset, 15, widthSelection, 35); painter.setPen(colorFont); painter.drawText(10 + x - scrollOffset, 15, widthCurrentLesson, 35, Qt::AlignVCenter, txtCurrentLesson); } else { // Draw pause or start text QFont tmpfont = QFont(FONT_STANDARD, FONT_SIZE_TICKER_PAUSE); tmpfont.setStyleStrategy(QFont::PreferAntialias); painter.setFont(tmpfont); painter.setPen(colorFont); painter.drawText(10, 15, 590, 35, Qt::AlignCenter | Qt::AlignVCenter, txtPause); } painter.drawPixmap(0, 0, background); } void TickerBoard::progress() { if (startFlag) { if (tickerSpeed != 50) { if (scrollOffset < lessonOffset) { // Move ticker 1 pixel to left scrollOffset++; scroll(-1, 0, QRect::QRect(10, 15, 590, 35)); //contentsRect()); if ((lessonOffset - scrollOffset) <= 30) { setSpeed(tickerSpeed); } if ((lessonOffset - scrollOffset) > 30 && (lessonOffset - scrollOffset) <= 60) { setSpeed(tickerSpeed - (3 * (tickerSpeed / 10))); } if ((lessonOffset - scrollOffset) > 60 && (lessonOffset - scrollOffset) <= 90) { setSpeed(tickerSpeed - (5 * (tickerSpeed / 10))); } if ((lessonOffset - scrollOffset) > 90) { // && (lessonOffset - scrollOffset) <= 120) { setSpeed(tickerSpeed - (8 * (tickerSpeed / 10))); } /*if ((lessonOffset - scrollOffset) > 120) { setSpeed(1); }*/ } // If the user types faster than the ticker, move ticker faster after // 160 pixels overage (because the user must see at least the next word) if ((lessonOffset - scrollOffset) > 200) { scrollOffset += (lessonOffset - scrollOffset) - 200; scroll(-((lessonOffset - scrollOffset) - 200), 0, QRect::QRect(10, 15, 590, 35)); //contentsRect()); } } else { // If the user types faster than the ticker, move ticker faster after // 160 pixels overage (because the user must see at least the next word) if ((lessonOffset - scrollOffset) > 280) { scrollOffset += 570; scroll(-570, 0, QRect::QRect(10, 15, 590, 35)); //contentsRect()); } } } } void TickerBoard::readSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("settings"); colorFont = QColor(settings.value("ticker_font_color", QString(TICKER_COLOR_FONT)).toString()); colorBg = QColor(settings.value("ticker_bg_color", QString(TICKER_COLOR_BG)).toString()); colorCursor = QColor(settings.value("ticker_cursor_color", QString(TICKER_COLOR_CURSOR)).toString()); colorSelection = colorCursor; tickerFont.fromString(settings.value("ticker_font", tickerFont.toString()).toString()); setSpeed(tickerSpeed = 50 - (settings.value("ticker_speed", TICKERSPEED_STANDARD).toInt() * 10)); //tickerSpeed = 38 + (settings.value("ticker_speed", // TICKERSPEED_STANDARD).toInt() * 10); //setSpeed(1); settings.endGroup(); } tipp10-2.1.0/widget/tickerboard.h000066400000000000000000000215301274324046000165570ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the TickerBoard class ** File name: tickerboard.h ** ****************************************************************/ #ifndef TICKERBOARD_H #define TICKERBOARD_H #include #include #include #include #include #include #include #include #include #include #include #include #include //! The TickerBoard class provides a text ticker widget. /*! The TickerBoard class provides a text ticker widget. The text can be set and update. It counts the tokens a requests new text if nessesary. @author Tom Thielicke, s712715 @version 0.2.4 @date 01.07.2006 */ class TickerBoard : public QWidget { Q_OBJECT public: //! Constructor, creates a status bar with three text parts. /*! In this contructor the following variables are initialized: - txtCurrentLesson = ""; - txtCompleteLesson = ""; - counterCurrentLesson = 0; - counterCompleteLesson = 0; - counterRow = 0; - lengthCurrentLesson = 0; - lengthCompleteLesson = 0; - txtPause = ""; - lessonOffset = 0; - scrollOffset = 0; - widthSelection = 0; - widthCurrentLesson = 0; - startFlag = false; In addition, the image "tickerbg.png" is loaded to variable background, settings are read and a timer signal is connected to the slot progress() @param parent The parent QWidget @see readSettings(), txtCurrentLesson, txtCompleteLesson, counterCurrentLesson, counterCompleteLesson, counterRow, lengthCurrentLesson, lengthCompleteLesson, txtPause, lessonOffset, scrollOffset, widthSelection, widthCurrentLesson, startFlag, colorSelection, tickerFont, background */ TickerBoard(QWidget *parent = 0); //! Sets the ticker speed (timer intervall). /*! @param speed The ticker speed @see tickerSpeed, timer */ void setSpeed(int speed); signals: //! Signal, emits a signal if current char has changed. /*! @param newChar The new char @see getNewChar() */ void charChanged(QChar newChar); //! Signal, emits a signal if new text is necessary. void updateRequired(); //! Signal, emits a signal if lesson is ready. void isReady(); //! Signal, emits the char of the current pressed key /*! After a key was pressed, this signal is emitted with the unicode char of the pressed key. The signal is used in the function keyPressEvent() */ void keyPressed(QChar key); public slots: //! Slot, refreshes the variables and starts the ticker. /*! @see charChanged(), lengthCompleteLesson, txtCompleteLesson, tickerFont, widthSelection, txtCurrentLesson, counterCurrentLesson, widthCurrentLesson, newChar, startFlag */ void startTicker(bool wasPaused = false); //! Slot, pauses the ticker and shows an pause test. /*! @param txt Pause text @see startFlag, txtPause */ void pauseTicker(QString txt = tr("Leertaste setzt das " "Diktat fort")); //! Slot, sets the text of the ticker. /*! @param txt Ticker text @see splitLesson(), checkUpdateRequired(), txtCompleteLesson */ void setTicker(QString txt = ""); //! Slot, extends the text of the ticker. /*! @param txt Ticker extend text @param seperator Text seperator @see splitLesson(), checkUpdateRequired(), txtCompleteLesson */ void extendTicker(QString txt = "", QString seperator = ""); //! Slot, changes the current char of the text. /*! @see changeChar(), startFlag, colorSelection */ void getNewChar(); //! Slot, changes the color of the selection (type error). /*! @see colorSelection */ void setErrorSelection(); //! Slot, removes the error selection. /*! @see colorSelection */ void clearErrorSelection(); private slots: //! Slot, moves the ticker. /*! This slot moves the ticker 1 pix to the left. If difference of lessonOffset and scrollOffset is bigger 160 pixel the ticker scrolls faster. @see scrollOffset, lessonOffset */ void progress(); protected: //! Starts the timer. /*! This function is called at the beginning and starts the timer with a timer intervall tickerSpeed. @see tickerSpeed */ void showEvent(QShowEvent*) { timer.start(40); } //! Stops the timer. /*! This function is called in the end and stops the timer. */ void hideEvent(QHideEvent*) { timer.stop(); } //! Draws the ticker and the current text with a char selection. /*! This function is called in the end and stops the timer. @param event The paint event @see startFlag, tickerFont, colorSelection, scrollOffset, lessonOffset, widthCurrentLesson, txtCurrentLesson, txtPause, background */ void paintEvent(QPaintEvent *event); //! Keyevent, reacts on every key press and emits the unicode char. /*! The keyevent detect a pressed key, the function then reads the full QString of the pressed key. It represents exactly the value which the user type in, thus inclusive the possibly pressed modifier. To know if there was only pressed a modifier we have to check if the QString is empty. After that only a QChar (the first index of the QString) is emitted over the function keyPressed(). It is necessary to do that not only if the keyboard is started because we must also register a pressed space key to start the keyboard i.e. over a pressed space key. @param event Event of keyboard @see keyPressed() */ void keyPressEvent(QKeyEvent *event); private: //! Chances the current char selection to the next char. /*! This function changes the current char selection and emits the slot charChanged. After that it checks whether a new text is required. @see isReady(), charChanged(), checkUpdateRequired(), counterCurrentLesson, counterCompleteLesson, txtPause, startFlag, lengthCompleteLesson, lengthCurrentLesson, lessonOffset, widthSelection, newChar */ void changeChar(); //! Splits the text into rows over a fix token. /*! @see counterCurrentLesson, counterCompleteLesson, lengthCompleteLesson, lengthCurrentLesson */ void splitLesson(); //! Checks whether a new text is required. /*! @see isReady(), charChanged(), checkUpdateRequired(), counterCurrentLesson, counterCompleteLesson, txtPause, startFlag, lengthCompleteLesson, lengthCurrentLesson, lessonOffset, widthSelection, newChar */ void checkUpdateRequired(); //! Reads all user settings. void readSettings(); //! Flag ticker board is started bool startFlag; //! Text of the current row of the ticker QString txtCurrentLesson; //! Complete Text of the ticker QString txtCompleteLesson; //! Counter of chars of the current text int counterCurrentLesson; //! Counter of chars of the complete text int counterCompleteLesson; //! Number of chars of the current text int lengthCurrentLesson; //! Number of chars of the complete text int lengthCompleteLesson; //! Counter of the rows int counterRow; //! Width of until the current char in pix int widthCurrentLesson; //! Width of current char selection in pix int widthSelection; //! Offset of the lesson in pix int lessonOffset; //! Offset of the scroll in pix int scrollOffset; int scrollCounter; //! List of all text rows QStringList txtLessonSplited; //! Pause text QString txtPause; //! Speed of the ticker int tickerSpeed; //! Current speed of the ticker int tickerCurrentSpeed; //! Current char (with char selection) QChar newChar; //! Timer for the ticker move QTimer timer; //! Ticker font QFont tickerFont; //! Color of the char selection QColor colorFont; QColor colorBg; QColor colorCursor; QColor colorSelection; //! Background image QPixmap background; }; #endif // TICKERBOARD_H tipp10-2.1.0/widget/trainingwidget.cpp000066400000000000000000000522661274324046000176520ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the TrainingWidget class ** File name: trainingwidget.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include #include "trainingwidget.h" #include "def/errordefines.h" #include "errormessage.h" #include "def/defines.h" TrainingWidget::TrainingWidget(int lesson, int type, QString name, QWidget *parent) : QWidget(parent) { // Default values isStarted = false; isPaused = false; currentChar = ' '; currentStrokes = 0; currentChars = 0; currentErrors = 0; currentSeconds = 0; currentLesson = lesson; currentType = type; currentName = name; errorCorrectFlag = false; startTime = QDateTime::currentDateTime(); counterToNewLine = 0; oneErrorFlag = false; // Init sound file #if APP_MAC // Mac-Version // ----------- bells = new QSound(QCoreApplication::applicationDirPath() + "/error.aif"); metronomeSound = new QSound(QCoreApplication::applicationDirPath() + "/metronome.aif"); #else // Win-Version // ----------- bells = new QSound("error.wav"); metronomeSound = new QSound("metronome.wav"); #endif // Initialise timer timer = new QTimer(this); metronomeTimer = new QTimer(this); // Set the logo companyLogo = new CompanyLogo(this, true); // Create all type trainer objects // 1. Ticker tickerBoard = new TickerBoard(this); // 2. Keyboard (set focus!) if ((currentLesson % 100) >= NUMPAD_LESSON_START && currentType == 0) { numPad = new NumPad(this); } else { keyBoard = new KeyBoard(this); } readSettings(); // 3. Statusbar statusBar = new StatusBar(this); trainingSql = new TrainingSql(replaceSetting, regexpSetting, layoutSetting); // Create Buttons "Cancel" and "Pause" createButtons(); // Create layout of widgets createLayout(); // Create connections createConnections(); keyboardSql = new KeyboardSql(opSystem); // Create lesson text //createLesson(); if (!showHelpers) { if ((currentLesson % 100) >= NUMPAD_LESSON_START && currentType == 0) { numPad->setVisible(false); } else { keyBoard->setVisible(false); } //statusBar->setVisible(false); //companyLogo->setVisible(false); parent->setMinimumSize(APP_WIDTH_SMALL, APP_HEIGHT_SMALL); if (!parent->isMaximized()) { parent->resize(APP_WIDTH_SMALL, APP_HEIGHT_SMALL); } } tickerBoard->setFocus(); // Start all startSession(); } void TrainingWidget::createButtons() { // Pause button buttonPause = new QPushButton(tr("&Pause")); buttonPause->setEnabled(false); buttonPause->setFocusPolicy(Qt::NoFocus); #if APP_MAC buttonPause->setShortcut(Qt::ALT + Qt::Key_P); #endif // Cancel button buttonCancel = new QPushButton(tr("A&bbrechen")); buttonCancel->setFocusPolicy(Qt::NoFocus); #if APP_MAC buttonCancel->setShortcut(Qt::ALT + Qt::Key_B); #endif // Help button buttonHelp = new QPushButton(tr("&Hilfe")); buttonHelp->setFocusPolicy(Qt::NoFocus); } void TrainingWidget::createLayout() { // Button layout horizontal QHBoxLayout *buttonLayoutHorizontal = new QHBoxLayout; buttonLayoutHorizontal->addWidget(buttonCancel); buttonLayoutHorizontal->addSpacing(10); buttonLayoutHorizontal->addWidget(buttonHelp); buttonLayoutHorizontal->addWidget(buttonPause); // Button layout vertical QVBoxLayout *buttonLayoutVertical = new QVBoxLayout; buttonLayoutVertical->addSpacing(11); buttonLayoutVertical->addLayout(buttonLayoutHorizontal); // Logo layout vertical QVBoxLayout *logoLayout = new QVBoxLayout; logoLayout->addSpacing(1); logoLayout->addWidget(companyLogo); // Logo layout + button layout horizontal QHBoxLayout *bottomLayout = new QHBoxLayout; bottomLayout->addLayout(logoLayout); bottomLayout->addStretch(1); bottomLayout->addLayout(buttonLayoutVertical); // Ticker layout horizontal QHBoxLayout *tickerboardLayout = new QHBoxLayout; tickerboardLayout->addStretch(1); tickerboardLayout->addWidget(tickerBoard); tickerboardLayout->addStretch(1); // Keyboard layout horizontal QHBoxLayout *keyboardLayout = new QHBoxLayout; keyboardLayout->addStretch(1); if ((currentLesson % 100) >= NUMPAD_LESSON_START && currentType == 0) { keyboardLayout->addWidget(numPad); } else { keyboardLayout->addWidget(keyBoard); } keyboardLayout->addStretch(1); // Statusbar layout horizontal QHBoxLayout *statusLayout = new QHBoxLayout; statusLayout->addStretch(1); statusLayout->addWidget(statusBar); statusLayout->addStretch(1); // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addStretch(1); mainLayout->addLayout(tickerboardLayout); mainLayout->addLayout(keyboardLayout); mainLayout->addLayout(statusLayout); mainLayout->addStretch(1); mainLayout->addSpacing(10); mainLayout->addLayout(bottomLayout); mainLayout->setMargin(15); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void TrainingWidget::createConnections() { connect(timer, SIGNAL(timeout()), this, SLOT(secondsUpdate())); connect(metronomeTimer, SIGNAL(timeout()), this, SLOT(metronomeOutput())); // Incoming connections // Incoming connection from TickerBoard object connect(tickerBoard, SIGNAL(charChanged(QChar)), this, SLOT(setChar(QChar))); connect(tickerBoard, SIGNAL(updateRequired()), this, SLOT(updateLesson())); // Incoming connection from KeyBoard object connect(tickerBoard, SIGNAL(keyPressed(QChar)), this, SLOT(setKey(QChar))); //connect(tickerBoard, SIGNAL(isReady()), this, SLOT(exitTraining())); // Button connections connect(buttonPause, SIGNAL(clicked()), this, SLOT(pauseSession())); connect(buttonPause, SIGNAL(clicked()), tickerBoard, SLOT(pauseTicker())); connect(buttonCancel, SIGNAL(clicked()), this, SLOT(cancelSession())); connect(buttonHelp, SIGNAL(clicked()), this, SLOT(pauseSession())); connect(buttonHelp, SIGNAL(clicked()), tickerBoard, SLOT(pauseTicker())); connect(buttonHelp, SIGNAL(clicked()), this, SLOT(showHelp())); if ((currentLesson % 100) >= NUMPAD_LESSON_START && currentType == 0) { //Verbindung zwischen Laufschrift- und Tastaturklasse connect(tickerBoard, SIGNAL(isReady()), numPad, SLOT(stopBoard())); connect(numPad, SIGNAL(statusRefreshed(QString)), this, SLOT(updateStatusText(QString))); connect(buttonPause, SIGNAL(clicked()), numPad, SLOT(pauseBoard())); connect(buttonHelp, SIGNAL(clicked()), numPad, SLOT(pauseBoard())); } else { //Verbindung zwischen Laufschrift- und Tastaturklasse connect(tickerBoard, SIGNAL(isReady()), keyBoard, SLOT(stopBoard())); connect(keyBoard, SIGNAL(statusRefreshed(QString)), this, SLOT(updateStatusText(QString))); connect(buttonPause, SIGNAL(clicked()), keyBoard, SLOT(pauseBoard())); connect(buttonHelp, SIGNAL(clicked()), keyBoard, SLOT(pauseBoard())); } } void TrainingWidget::startSession() { timer->start(1000); if (metronomeClock != 0) { metronomeTimer->start(metronomeClock); } createLesson(); tickerBoard->pauseTicker(tr("Leertaste startet das Diktat")); statusBar->setCenterText(tr("Grundstellung einnehmen")); } void TrainingWidget::pauseSession() { buttonPause->setEnabled(false); isPaused = true; } void TrainingWidget::cancelSession() { isPaused = true; // Ask only is lesson is started and if anything was typed at all if (isStarted && currentStrokes > 0) { // Ask if user wants to quit really switch (QMessageBox::question(this, APP_NAME, tr("Wollen Sie die Lektion wirklich vorzeitig " "beenden?\n\n"), tr("&Ja"), tr("&Abbrechen"), 0, 1)) { case 0: // User wants to quit break; case 1: // User canceled the message // -> go back to the training isPaused = false; return; } // Ask if user want to save data switch (QMessageBox::question(this, APP_NAME, tr("Sollen die Ergebnisse der Lektion gespeichert " "werden?\n\n"), tr("&Ja"), tr("&Nein"), 0, 0)) { case 0: // Save and exit exitTraining(); return; case 1: // Don't save and exit (cancel like on the beginning) // -> go back to start widget emit lessonCanceled(); return; } } else { // Nothing done yet // -> go back to start widget emit lessonCanceled(); } } void TrainingWidget::createLesson() { QString lessonString; if ((lessonString = trainingSql->createLesson(currentLesson, currentType, lessonUnit, useIntelligence, useEszett, useUmlaut)) == "") { // No lesson created // -> error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_CREATION, TYPE_CRITICAL, CANCEL_OPERATION); return; } switch (currentType) { case 0: // Training lesson counterToNewLine = lessonString.length() + 1; if ((currentLesson % 100) < BORDER_LESSON_IS_SENTENCE) { lessonString.append(" "); } else { lessonString.append(QChar(TOKEN_NEW_LINE)); } break; case 1: case 2: // Open or own lesson if (limitType != 2) { // Exit lesson or unit with newline counterToNewLine = lessonString.length() + 1; if (lessonUnit == 1) { lessonString.append(" "); } else { lessonString.append(QChar(TOKEN_NEW_LINE)); } } else { // Hole lesson counterToNewLine = lessonString.length() - 2; } break; } counterChars = lessonString.length(); tickerBoard->setTicker(lessonString); } void TrainingWidget::updateLesson() { QString lessonString; if (limitType == 2) { return; } if ((lessonString = trainingSql->updateLesson(currentLesson, currentType, useIntelligence, useEszett, useUmlaut)) == "") { // No update lesson created // -> error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_LESSONS_UPDATE, TYPE_CRITICAL, CANCEL_OPERATION); return; } counterToNewLine += lessonString.length(); if ((currentType == 0 && (currentLesson % 100) < BORDER_LESSON_IS_SENTENCE && counterToNewLine > NUM_TOKEN_UNTIL_NEW_LINE) || (currentType == 0 && (currentLesson % 100) >= BORDER_LESSON_IS_SENTENCE) || (currentType != 0 && (lessonUnit == 0 || (lessonUnit == 1 && counterToNewLine > NUM_TOKEN_UNTIL_NEW_LINE)))) { lessonString.append(QChar(TOKEN_NEW_LINE)); counterToNewLine = 0; } else { counterToNewLine++; lessonString.append(" "); } counterChars += lessonString.length(); tickerBoard->extendTicker(lessonString); } // Slot: Aktuellen Buchstaben setzen void TrainingWidget::setChar(QChar newchar) { currentChars++; currentChar = newchar; if ((currentLesson % 100) >= NUMPAD_LESSON_START && currentType == 0) { numPad->setKey(currentChar); } else { keyBoard->setKey(currentChar); } if (!trainingSql->updateUsertable(currentChar, "user_char_occur_num")) { ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_ERRORS_REFRESH, TYPE_CRITICAL, CANCEL_OPERATION); } } // Slot: Aktuellen Buchstaben setzen void TrainingWidget::setKey(QChar key) { if (isStarted && !isPaused) { if (errorCorrectFlag) { // Ruecklauftaste if (key.unicode() == 8) { errorCorrectFlag = false; if ((currentLesson % 100) >= NUMPAD_LESSON_START && currentType == 0) { numPad->setKey(currentChar); } else { keyBoard->setKey(currentChar); } tickerBoard->clearErrorSelection(); oneErrorFlag = false; } } else { // Check if correct key was pressed OR // key was enter and a line break was required // (char and unicode then are different) if (key == currentChar || ((key.unicode() == 13 || key.unicode() == 3) && currentChar == QChar(TOKEN_NEW_LINE)) || (key.unicode() == 9 && currentChar == QChar(TOKEN_TAB))) { //currentChar.unicode() == 182)) { // Correct key was pressed oneErrorFlag = false; currentStrokes++; tickerBoard->getNewChar(); charList << key; mistakeList << 0; } else { // Wrong key was pressed if (!oneErrorFlag) { if (beepOnError) { if (beepSoundcard) { bells->play(); } else { QApplication::beep(); } } currentErrors++; tickerBoard->setErrorSelection(); update(); if (key.unicode() == 13 || key.unicode() == 3) { charList << QChar(TOKEN_NEW_LINE); } else { if (key.unicode() == 9) { charList << QChar(TOKEN_TAB); } else { charList << key; } } mistakeList << 1; if (!trainingSql->updateUsertable(currentChar, "user_char_target_errornum")) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_ERRORS_REFRESH, TYPE_CRITICAL, CANCEL_OPERATION); } if (!trainingSql->updateUsertable(key, "user_char_mistake_errornum")) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_ERRORS_REFRESH, TYPE_CRITICAL, CANCEL_OPERATION); } oneErrorFlag = true; } if (!stopOnError) { oneErrorFlag = false; currentStrokes++; tickerBoard->getNewChar(); } //statusBar->setCenterText(QString::number(key.unicode())); if (correctOnError) { errorCorrectFlag = true; if ((currentLesson % 100) >= NUMPAD_LESSON_START && currentType == 0) { numPad->setKey(QChar(TOKEN_BACKSPACE)); } else { keyBoard->setKey(QChar(TOKEN_BACKSPACE)); } //statusBar->setCenterText(tr("Kleiner Finger " // "rechts - Ruecklauftaste!")); } //update(); } } updateStatusValues(); } else { if (key == ' ') { bool wasPaused = isPaused; isStarted = true; isPaused = false; buttonPause->setEnabled(true); buttonCancel->setText(tr("Lektion vorzeitig &beenden")); // Start board first, cause starting the ticker // emits a signal which need a started keyBoard if ((currentLesson % 100) >= NUMPAD_LESSON_START && currentType == 0) { numPad->startBoard(); } else { keyBoard->startBoard(); } tickerBoard->startTicker(wasPaused); return; } } } void TrainingWidget::secondsUpdate() { if (isStarted && !isPaused) { currentSeconds++; if ((limitType == 0 && limitValue <= (currentSeconds / 60)) || (limitType == 1 && limitValue <= currentChars) || limitType == 2 && (counterChars + 1) <= currentChars) { exitTraining(); } else { updateStatusValues(); } } } void TrainingWidget::metronomeOutput() { if (isStarted && !isPaused) { if (beepSoundcard) { metronomeSound->play(); } else { QApplication::beep(); } } } void TrainingWidget::updateStatusValues() { double strokesPerMinute; double minutes; int timeMinutes; int timeSeconds; QString time; // CPM minutes = (double) currentSeconds / 60.0; if (minutes != 0) { strokesPerMinute = ((double) currentStrokes / minutes); } else { strokesPerMinute = 0; } // Time timeMinutes = currentSeconds / 60; timeSeconds = currentSeconds % 60; time = QString::number(timeMinutes) + tr(":"); if (timeSeconds < 10) { time.append("0" + QString::number(timeSeconds)); } else { time.append(QString::number(timeSeconds)); } statusBar->setLeftLeftText(tr("Fehler: ") + QString::number(currentErrors)); statusBar->setLeftText(tr("A/min: ") + QString::number((unsigned int)strokesPerMinute)); statusBar->setRightText(tr("Zeit: ") + time); statusBar->setRightRightText(tr("Zeichen: ") + QString::number(currentChars)); } void TrainingWidget::updateStatusText(QString statustext) { if (!showStatusInformation) { statustext = ""; } statusBar->setCenterText(statustext); } void TrainingWidget::exitTraining() { QVariant lastRowId; lastRowId = trainingSql->saveLesson(currentLesson, currentSeconds, currentChars - 1, currentStrokes, currentErrors, startTime, currentType, currentName); if (!lastRowId.isValid()) { // No lesson created // -> error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_USER_LESSONS_REFRESH, TYPE_CRITICAL, CANCEL_OPERATION); lastRowId = 0; } emit lessonReady(lastRowId.toInt(), currentType, charList, mistakeList); } void TrainingWidget::showHelp() { helpBrowser = new HelpBrowser("training.html", 0); helpBrowser->show(); } void TrainingWidget::readSettings() { // Read settings of the startwiget // (uses the default constructor of QSettings, passing // the application and company name see main function) #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("general"); if (settings.value("language_layout", APP_STD_LANGUAGE_LAYOUT).toString().right(3) == "win") { opSystem = "win"; } else { opSystem = "mac"; } useEszett = true; if (settings.value("language_layout", APP_STD_LANGUAGE_LAYOUT).toString().left(2) == "ch") { useEszett = false; } useUmlaut = true; if (settings.value("language_layout", APP_STD_LANGUAGE_LAYOUT).toString().left(2) == "us") { useUmlaut = false; } layoutSetting = settings.value("language_layout", APP_STD_LANGUAGE_LAYOUT).toString(); replaceSetting = settings.value("layout_replace", "NULL").toString(); regexpSetting = settings.value("layout_regexp", "NULL").toString(); settings.endGroup(); /*settings.beginGroup("settings"); if (settings.value("radio_win", true).toBool()) { opSystem = "win"; } else { opSystem = "mac"; } useEszett = true; if (settings.value("combo_layout", KEYBOARD_LAYOUT_STANDARD).toInt() == 1) { useEszett = false; } useUmlaut = true; if (settings.value("combo_layout", KEYBOARD_LAYOUT_STANDARD).toInt() == 5) { useUmlaut = false; } settings.endGroup();*/ settings.beginGroup("duration"); if (settings.value("radio_time", true).toBool()) { // Time limit selected limitType = 0; limitValue = settings.value("spin_time", LESSON_TIMELEN_STANDARD).toInt(); } else { if (settings.value("radio_token", true).toBool()) { // Token limit selected limitType = 1; limitValue = settings.value("spin_token", LESSON_TOKENLEN_STANDARD).toInt(); } else { // Lesson limit selected limitType = 2; limitValue = 0; } } settings.endGroup(); settings.beginGroup("error"); stopOnError = settings.value("check_stop", true).toBool(); correctOnError = settings.value("check_correct", false).toBool(); beepOnError = settings.value("check_beep", false).toBool(); settings.endGroup(); settings.beginGroup("support"); showHelpers = settings.value("check_helpers", true).toBool(); showStatusInformation = settings.value("check_status", true).toBool(); settings.endGroup(); settings.beginGroup("sound"); #if APP_X11 bool beepDefault = false; #else bool beepDefault = true; #endif beepSoundcard = settings.value("radio_soundcard", beepDefault).toBool(); metronomeClock = settings.value("spin_metronome", METRONOM_STANDARD).toInt(); metronomeClock = (int) ((double) metronomeClock * 60000.0) / ((double) metronomeClock * (double) metronomeClock); if (!settings.value("check_metronome", false).toBool()) { metronomeClock = 0; } settings.endGroup(); if (currentType != 0) { settings.beginGroup("intelligence"); useIntelligence = settings.value("check_intelligence", false).toBool(); settings.endGroup(); } else { useIntelligence = true; } if (currentType != 0) { lessonUnit = trainingSql->getLessonUnit(currentLesson, currentType); } else { lessonUnit = 0; } } tipp10-2.1.0/widget/trainingwidget.h000066400000000000000000000131751274324046000173130ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the TrainingWidget class ** File name: trainingwidget.h ** ****************************************************************/ #ifndef TRAININGWIDGET_H #define TRAININGWIDGET_H #include #include #include #include #include #include #include #include #include "tickerboard.h" #include "keyboard.h" #include "numpad.h" #include "statusbar.h" #include "sql/trainingsql.h" #include "sql/keyboardsql.h" #include "companylogo.h" #include "helpbrowser.h" //! The TrainingWidget class provides the training widgets and manages them. /*! The TrainingWidget class provides the training widgets ticker, virtual keyboard and a status bar. It manages the training by communicating with all widgets. @author Tom Thielicke, s712715 @version 0.3.6 @date 04.07.2006 */ class TrainingWidget : public QWidget { Q_OBJECT public: //! Constructor, creates all necessary objects for training. /*! In this contructor the following variables are initialized: - isStarted = false; - isPaused = false; - currentChar = ' '; - currentStrokes = 0; - currentChars = 0; - currentErrors = 0; - currentSeconds = 0; - currentLesson = lesson; - errorCorrectFlag = false; - counterToNewLine = 0; In addition, it creates a ticker, a keyboard and a status bar. @param lesson Lesson number @param parent The parent QWidget @see createButtons(), createLayout(), createConnections(), readSettings(), startSession(), isStarted, isPaused currentChar, currentStrokes, currentErrors, currentSeconds, currentLesson, errorCorrectFlag, counterToNewLine, startTime startFlag, colorSelection, tickerFont, background */ TrainingWidget(int lesson, int type, QString name, QWidget *parent = 0); StatusBar *statusBar; KeyBoard *keyBoard; NumPad *numPad; TickerBoard *tickerBoard; signals: //! Signal, lesson is ready. /*! @param row Id of the saved user lesson results */ void lessonReady(int row, int type, QList charList, QList mistakeList); //! Signal, lesson was canceled. void lessonCanceled(); public slots: //! Slot, starts the training session. void startSession(); //! Slot, pauses the training session. void pauseSession(); //! Slot, cancels the training session. void cancelSession(); //! Slot, sets a new char from ticker. void setChar(QChar key); //! Slot, sets a key from virtual keyboard. void setKey(QChar key); //! Slot, updates the lesson text over the database class. void updateLesson(); //! Slot, updates the text of the status bar over the database class. void updateStatusText(QString statustext); private slots: //! Slot, updates the time counter. void secondsUpdate(); //! Slot, updates the time counter. void metronomeOutput(); //! Saves lesson results and exit training. void exitTraining(); //! Slot, shows the help dialog. /*! This slot shows the help dialog. It creates an object of the QDialog class with an QTextbrowser. */ void showHelp(); private: //! Creates the buttons cancel and pause. void createButtons(); //! Creates full layout of the class. void createLayout(); //! Creates the connections between all widgets. void createConnections(); //! Creates the first lesson text. void createLesson(); //! Updates the status values. void updateStatusValues(); //! Reads all user settings. void readSettings(); //! Object of the help browser dialog HelpBrowser *helpBrowser; QChar currentChar; int currentLesson; int currentType; QString currentName; int currentStrokes; int currentChars; int currentErrors; int currentSeconds; int counterToNewLine; int counterChars; QDateTime startTime; bool isStarted; bool isPaused; int limitType; //0=Time, 1=Token, 2=Lesson int limitValue; bool stopOnError; bool correctOnError; bool beepOnError; bool beepSoundcard; bool errorCorrectFlag; bool oneErrorFlag; bool showStatusInformation; bool showHelpers; bool useIntelligence; bool useEszett; bool useUmlaut; int lessonUnit; QTimer *timer; QTimer *metronomeTimer; int metronomeClock; CompanyLogo *companyLogo; TrainingSql *trainingSql; KeyboardSql *keyboardSql; QPushButton *buttonPause; QPushButton *buttonCancel; QPushButton *buttonHelp; QString opSystem; QSound *bells; QSound *metronomeSound; QList charList; QList mistakeList; QString layoutSetting; QString replaceSetting; QString regexpSetting; bool checkErrorImage; }; #endif // TRAININGWIDGET_H tipp10-2.1.0/widget/txtmessagedialog.cpp000066400000000000000000000071551274324046000201740ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the TxtMessageDialog class ** File name: txtmessagedialog.cpp ** ****************************************************************/ #include #include #include #include #include #include "txtmessagedialog.h" #include "def/errordefines.h" #include "errormessage.h" #include "def/defines.h" TxtMessageDialog::TxtMessageDialog(QString message, QString title, QString setting, QWidget *parent) : QDialog(parent) { setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint); settingName = setting; setWindowTitle(title); setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME))); // Set the image messageLabel = new QLabel(message); // Create buttons createButtons(); // Set the layout of all widgets created above createLayout(); buttonOk->setFocus(); //setFixedWidth(illustrationImage->width() + 31); //Max window size for the bitmap //setFixedSize(width, height); } void TxtMessageDialog::createButtons() { //Buttons buttonOk = new QPushButton(this); buttonOk->setText(tr("&Ok")); buttonOk->setDefault(true); // Widget connections connect(buttonOk, SIGNAL(clicked()), this, SLOT(clickOk())); showDialogCheck = new QCheckBox(tr("Diese &Information nicht mehr anzeigen")); } void TxtMessageDialog::createLayout() { // Button layout horizontal QHBoxLayout *layoutHorizontal = new QHBoxLayout; layoutHorizontal->addSpacing(1); layoutHorizontal->addWidget(messageLabel); layoutHorizontal->addSpacing(1); // Button layout horizontal QHBoxLayout *buttonLayoutHorizontal = new QHBoxLayout; buttonLayoutHorizontal->addStretch(1); if (settingName != "") { buttonLayoutHorizontal->addWidget(showDialogCheck); } buttonLayoutHorizontal->addSpacing(1); buttonLayoutHorizontal->addWidget(buttonOk); // Full layout of all widgets vertical QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(layoutHorizontal); mainLayout->addSpacing(1); mainLayout->addLayout(buttonLayoutHorizontal); mainLayout->setMargin(15); mainLayout->setSpacing(15); // Pass layout to parent widget (this) this->setLayout(mainLayout); } void TxtMessageDialog::clickOk() { writeSettings(); accept(); } void TxtMessageDialog::writeSettings() { // Saves settings of the startwiget // (uses the default constructor of QSettings, passing // the application and company name see main function) #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif if (settingName != "") { settings.beginGroup("general"); settings.setValue(settingName, !showDialogCheck->isChecked()); settings.endGroup(); } } tipp10-2.1.0/widget/txtmessagedialog.h000066400000000000000000000050371274324046000176360ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the TxtMessageDialog class ** File name: txtmessagedialog.h ** ****************************************************************/ #ifndef TXTMESSAGEDIALOG_H #define TXTMESSAGEDIALOG_H #include #include #include #include #include #include #include "txtmessagedialog.h" //! The TxtMessageDialog class provides a program settings widget. /*! The TxtMessageDialog class shows three program settings. Setting the layout of the virtual keyboard, setting the ticker speed and font and doing a reset of the user tables. @author Tom Thielicke, s712715 @version 0.0.3 @date 18.06.2006 */ class TxtMessageDialog : public QDialog { Q_OBJECT public: //! Constructor, creates two table objects and provide it in two tabs. /*! In this contructor three groups are created over functions createGroupKeyboardLayout(), createGroupUserReset() and createGroupTickerFont(). In addition, standard settings are read, standard font is set and connections are set. @param parent The parent QWidget @see createGroupKeyboardLayout(), createGroupUserReset(), createGroupTickerFont(), readSettings(), tickerFont */ TxtMessageDialog(QString message, QString title, QString setting = "", QWidget *parent = 0); public slots: private slots: //! Ok button pressed void clickOk(); private: //! Creates a cancel and a save button. void createButtons(); //! Creates the layout of the complete class. void createLayout(); //! Writes user settings void writeSettings(); QPushButton *buttonOk; QCheckBox *showDialogCheck; QLabel *messageLabel; QString settingName; }; #endif //TXTMESSAGEDIALOG_H tipp10-2.1.0/widget/updatedialog.cpp000066400000000000000000000315531274324046000172710ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Implementation of the UpdateDialog class ** File name: updatedialog.cpp ** ****************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include "updatedialog.h" #include "def/defines.h" #include "def/errordefines.h" #include "sql/startsql.h" #include "errormessage.h" // Constructor UpdateDialog::UpdateDialog(QWidget *parent) : QDialog(parent) { setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint); // Init flag default value: no new version available newVersion = false; // QHttp object provides interface to HTTP http = new QHttp(this); // Create dialog content createProgressinfo(); createButtons(); createLayout(); createConnections(); // Proxy settings readSettings(); // Dialog defaults setWindowTitle(tr("Aktualisierung")); setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME))); buttonUpdate->setFocus(); } void UpdateDialog::showHelp() { helpBrowser = new HelpBrowser("update.html", this); helpBrowser->show(); } void UpdateDialog::createProgressinfo() { labelStatus = new QLabel(tr("Hier koennen Sie eine Aktualisierung " "der Lektionen durchfuehren.\nFuer die Aktualisierung ist eine " "Internetverbindung erforderlich.")); progressBar = new QProgressBar(this); progressBar->setVisible(false); } void UpdateDialog::createButtons() { //Buttons buttonClose = new QPushButton(tr("Schliessen")); buttonUpdate = new QPushButton(tr("Aktualisierung starten")); buttonHelp = new QPushButton(tr("&Hilfe")); checkProxy = new QCheckBox(tr("Ueber einen Proxyserver verbinden")); txtProxyServer = new QLineEdit(); txtProxyServer->setShown(false); txtProxyPort = new QLineEdit(); txtProxyPort->setShown(false); labelProxyServer = new QLabel(tr("Server:")); labelProxyServer->setShown(false); labelProxyPort = new QLabel(tr("Port:")); labelProxyPort->setShown(false); buttonUpdate->setDefault(true); } void UpdateDialog::createLayout() { QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->addWidget(buttonClose); buttonLayout->addSpacing(10); buttonLayout->addWidget(buttonHelp); buttonLayout->addWidget(buttonUpdate); QHBoxLayout *proxyLayout = new QHBoxLayout; proxyLayout->addWidget(labelProxyServer); proxyLayout->addWidget(txtProxyServer); proxyLayout->addWidget(labelProxyPort); proxyLayout->addWidget(txtProxyPort); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(labelStatus); mainLayout->addWidget(progressBar); mainLayout->addWidget(checkProxy); mainLayout->addLayout(proxyLayout); mainLayout->addLayout(buttonLayout); mainLayout->setSizeConstraint(QLayout::SetFixedSize); setLayout(mainLayout); } void UpdateDialog::createConnections() { connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), this, SLOT(readResponseHeader(const QHttpResponseHeader &))); connect(http, SIGNAL(done(bool)), this, SLOT(httpDownloadFinished(bool))); connect(http, SIGNAL(dataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int))); connect(buttonUpdate, SIGNAL(clicked()), this, SLOT(downloadVersionFile())); connect(buttonClose, SIGNAL(clicked()), this, SLOT(writeSettings())); connect(buttonClose, SIGNAL(clicked()), this, SLOT(close())); connect(checkProxy, SIGNAL(toggled(bool)), txtProxyServer, SLOT(setShown(bool))); connect(checkProxy, SIGNAL(toggled(bool)), txtProxyPort, SLOT(setShown(bool))); connect(checkProxy, SIGNAL(toggled(bool)), labelProxyServer, SLOT(setShown(bool))); connect(checkProxy, SIGNAL(toggled(bool)), labelProxyPort, SLOT(setShown(bool))); connect(buttonHelp, SIGNAL(clicked()), this, SLOT(showHelp())); } void UpdateDialog::downloadVersionFile() { // Save proxy settings writeSettings(); labelStatus->setText( tr("Versionsinformationen herunterladen...")); labelStatus->update(); progressBar->setVisible(true); qApp->processEvents(); tempVersionFile = new QTemporaryFile; if (!tempVersionFile->open()) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_TEMP_FILE_CREATION, TYPE_CRITICAL, CANCEL_UPDATE); delete tempVersionFile; progressBar->setVisible(false); buttonUpdate->setEnabled(true); return; } buttonUpdate->setEnabled(false); checkProxy->setVisible(false); labelProxyServer->setVisible(false); txtProxyServer->setVisible(false); labelProxyPort->setVisible(false); txtProxyPort->setVisible(false); http->setHost(UPDATE_URL); // Proxy server? if (checkProxy->isChecked()) { http->setProxy(txtProxyServer->text(), txtProxyPort->text().toInt()); } http->get(UPDATE_URL_VERSION, tempVersionFile); } void UpdateDialog::downloadSqlFile() { http->abort(); progressBar->setVisible(true); labelStatus->setText(tr("SQL-Datei herunterladen...")); labelStatus->update(); qApp->processEvents(); tempSqlFile = new QTemporaryFile; if (!tempSqlFile->open()) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_TEMP_FILE_CREATION, TYPE_CRITICAL, CANCEL_UPDATE); delete tempSqlFile; close(); return; } buttonUpdate->setEnabled(false); http->setHost(UPDATE_URL); // Proxy server? if (checkProxy->isChecked()) { http->setProxy(txtProxyServer->text(), txtProxyPort->text().toInt()); } http->get(UPDATE_URL_SQL, tempSqlFile); } void UpdateDialog::updateDataReadProgress(int bytesRead, int totalBytes) { progressBar->setMaximum(totalBytes); progressBar->setValue(bytesRead); } void UpdateDialog::readResponseHeader(const QHttpResponseHeader &responseHeader) { if (responseHeader.statusCode() != 200) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_UPDATE_EXECUTION, TYPE_CRITICAL, CANCEL_UPDATE); http->abort(); return; } } void UpdateDialog::httpDownloadFinished(bool error) { // Download finished if (error) { // Error message + additional error information ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_UPDATE_EXECUTION, TYPE_CRITICAL, CANCEL_UPDATE, http->errorString()); close(); return; } if (!newVersion) { // First check the database version labelStatus->setText(tr("Version ueberpruefen...")); labelStatus->update(); qApp->processEvents(); if (checkVersionFile()) { // DB Version is new // -> download sql file delete tempVersionFile; newVersion = true; downloadSqlFile(); } } else { // Execute sql file and analyze current text in DB labelStatus->setText(APP_NAME + tr(" Datenbank " "aktualisieren...")); labelStatus->update(); qApp->processEvents(); if (executeSqlFile()) { StartSql *lessonSql = new StartSql(); if (lessonSql->analyzeLessons("lesson")) { if (lessonSql->analyzeLessons("open")) { labelStatus->setText(APP_NAME + tr(" wurde " "erfolgreich aktualisiert!")); buttonClose->setFocus(); } else { close(); } } else { close(); } } else { close(); } } } bool UpdateDialog::checkVersionFile() { // Go to the beginning of the version file tempVersionFile->seek(0); QSqlQuery query; QTextStream in(tempVersionFile); // Read only the first line (server DB version) QString updateVersion = in.readLine(); if (updateVersion.isNull()) { // Can't read line // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_ONLINE_VERSION_READABLE, TYPE_CRITICAL, CANCEL_UPDATE); close(); return false; } else { // Check DB version of software if (!query.exec("SELECT * FROM db_version ORDER BY version DESC;")) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_DB_VERSION_READABLE, TYPE_CRITICAL, CANCEL_UPDATE); close(); return false; } else { if (!query.first()) { // Error message ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_DB_VERSION_READABLE, TYPE_CRITICAL, CANCEL_UPDATE); close(); return false; } else { // Server DB version is 0 // -> software is too old to update QString softwareVersion = query.value(0).toString(); if (updateVersion.trimmed() == "0") { if (QMessageBox::information(this, APP_NAME, QString(tr("Ihre Version der Software ist " "veraltet und nicht mehr aktualisierungsfaehig.\nDie " "neue Version erhalten Sie im Internet unter %1\n\n" "Moechten Sie die neue Version jetzt herunterladen?" )).arg(APP_URL), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { QDesktopServices::openUrl(QString(APP_URL)); } close(); return false; } // Check whether ther is a new DB version on the server if (softwareVersion.trimmed() != updateVersion.trimmed()) { labelStatus->setText(QString(tr("Es stehen " "Updates fuer %1 zur Verfuegung...")).arg(APP_NAME)); return true; } } } } labelStatus->setText(APP_NAME + tr(" befindet sich bereits auf " "dem aktuellsten Stand.\nEs stehen derzeit keine Aktualisierungen zur " "Verfuegung.")); return false; } bool UpdateDialog::executeSqlFile() { QSqlQuery query; QString line = ""; int bytesRead = 0; int totalBytes = tempSqlFile->size(); // Go to the beginning of the version file tempSqlFile->seek(0); QTextStream in(tempSqlFile); // Execute all sql command of the downloaded file while (!in.atEnd()) { line = in.readLine(); line = line.trimmed(); bytesRead += line.size(); // Exclude comments and empty lines if (line != "" && !line.startsWith("//", Qt::CaseSensitive)) { // Without error handling, because DROP-Statements are allowed to // be invalid (there exist also a IF EXISTS statement in the SQLite // library which suppresses an error, but it didn't work when I try it) if (!query.exec(line) && !line.startsWith("drop", Qt::CaseInsensitive)) { // Error message + failed sql string ErrorMessage *errorMessage = new ErrorMessage(this); errorMessage->showMessage(ERR_UPDATE_SQL_EXECUTION, TYPE_CRITICAL, CANCEL_UPDATE, line); return false; } } updateDataReadProgress(bytesRead, totalBytes); } delete tempSqlFile; updateDataReadProgress(totalBytes, totalBytes); return true; } void UpdateDialog::readSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("proxy"); checkProxy->setChecked(settings.value("check_proxy", false).toBool()); txtProxyServer->setText(settings.value("proxy_server", "").toString()); txtProxyPort->setText(settings.value("proxy_port", "").toString()); settings.endGroup(); // Show proxy settings if proxy is checked if (checkProxy->isChecked()) { labelProxyServer->setVisible(true); txtProxyServer->setVisible(true); labelProxyPort->setVisible(true); txtProxyPort->setVisible(true); } } void UpdateDialog::writeSettings() { #if APP_PORTABLE QSettings settings(QCoreApplication::applicationDirPath() + "/portable/settings.ini", QSettings::IniFormat); #else QSettings settings; #endif settings.beginGroup("proxy"); settings.setValue("check_proxy", checkProxy->isChecked()); settings.setValue("proxy_server", txtProxyServer->text()); settings.setValue("proxy_port", txtProxyPort->text()); settings.endGroup(); } tipp10-2.1.0/widget/updatedialog.h000066400000000000000000000076271274324046000167430ustar00rootroot00000000000000/* Copyright (c) 2006-2009, Tom Thielicke IT Solutions This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /**************************************************************** ** ** Definition of the UpdateDialog class ** File name: updatedialog.h ** ****************************************************************/ #ifndef UPDATEDIALOG_H #define UPDATEDIALOG_H #include #include #include #include #include #include #include #include #include #include #include "helpbrowser.h" //! The UpdateDialog class provides an online update dialog. /*! @author Tom Thielicke, s712715 @version 0.1.1 @date 19.06.2006 */ class UpdateDialog : public QDialog { Q_OBJECT public: //! Constructor, creates a progress bar, a label and a start button. /*! In this contructor the following variables are initialized: - newVersion = false; In addition, it creates a progress bar, a status label and a start button. @param parent The parent QWidget @see createProgressinfo(), createButtons(), createLayout(), createConnections(), newVersion, buttonUpdate */ UpdateDialog(QWidget *parent = 0); private slots: //! Slot, download the database version from server. void downloadVersionFile(); //! Slot, download the update sql file from server. void downloadSqlFile(); //! Slot, data read progress while downloading. /*! @param bytesRead Number of bytes read @param totalBytes Number total bytes */ void updateDataReadProgress(int bytesRead, int totalBytes); //! Slot, http response header read. /*! @param responseHeader http response header */ void readResponseHeader(const QHttpResponseHeader &responseHeader); //! Slot, download has finished. /*! @param error An error occured true/false */ void httpDownloadFinished(bool error); //! Writes proxy settings to hard disk. void writeSettings(); //! Slot, shows the help dialog. /*! This slot shows the help dialog. It creates an object of the QDialog class with an QTextbrowser. */ void showHelp(); private: //! Creates the cancel and start update buttons. void createButtons(); //! Creates the progress bar and status label. void createProgressinfo(); //! Creates the full layout of the widget. void createLayout(); //! Creates the connections between widgets an QHttp functions. void createConnections(); //! Checks wether the version is new. bool checkVersionFile(); //! Executes all sql command of the update file. bool executeSqlFile(); //! Analyzes all text in database. bool analyzeLessons(QString lessonType); //! Reads proxy settings. void readSettings(); //! Object of the help browser dialog HelpBrowser *helpBrowser; QHttp *http; bool newVersion; QTemporaryFile *tempVersionFile; QTemporaryFile *tempSqlFile; QLabel *labelStatus; QProgressBar *progressBar; QPushButton *buttonClose; QPushButton *buttonUpdate; QPushButton *buttonHelp; QCheckBox *checkProxy; QLineEdit *txtProxyServer; QLabel *labelProxyServer; QLineEdit *txtProxyPort; QLabel *labelProxyPort; }; #endif // UPDATEDIALOG_H