From e5a26a29697195b829421ca986d7837432bc03a6 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Mon, 22 Aug 2022 20:37:30 +0800 Subject: [PATCH 01/75] bump alpha version to 22.8.24 --- .github/workflows/AutoTag.yml | 2 +- .github/workflows/macos-6.2.yml | 2 +- .github/workflows/macos.yml | 2 +- .github/workflows/ubuntu-6.2.yml | 2 +- .github/workflows/ubuntu-PR-check.yml | 2 +- .github/workflows/ubuntu.yml | 2 +- .github/workflows/windows-6.2.yml | 2 +- .github/workflows/windows-PR-check.yml | 2 +- .github/workflows/windows.yml | 2 +- goldendict.pro | 4 ++-- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/AutoTag.yml b/.github/workflows/AutoTag.yml index 6075b4ad..e287e741 100644 --- a/.github/workflows/AutoTag.yml +++ b/.github/workflows/AutoTag.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest env: - version: 22.7.24 + version: 22.8.24 version-suffix: alpha prerelease: true diff --git a/.github/workflows/macos-6.2.yml b/.github/workflows/macos-6.2.yml index b4d24b91..3907b684 100644 --- a/.github/workflows/macos-6.2.yml +++ b/.github/workflows/macos-6.2.yml @@ -29,7 +29,7 @@ jobs: qt_arch: [clang_64] env: targetName: GoldenDict - version: 22.7.24 + version: 22.8.24 version-suffix: alpha prerelease: true diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 48da859d..a96806e8 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -30,7 +30,7 @@ jobs: qt_arch: [clang_64] env: targetName: GoldenDict - version: 22.7.24 + version: 22.8.24 version-suffix: alpha prerelease: true diff --git a/.github/workflows/ubuntu-6.2.yml b/.github/workflows/ubuntu-6.2.yml index 40c02963..435e8bc5 100644 --- a/.github/workflows/ubuntu-6.2.yml +++ b/.github/workflows/ubuntu-6.2.yml @@ -30,7 +30,7 @@ jobs: qt_ver: [6.3.1] qt_arch: [gcc_64] env: - version: 22.7.24 + version: 22.8.24 version-suffix: alpha prerelease: true steps: diff --git a/.github/workflows/ubuntu-PR-check.yml b/.github/workflows/ubuntu-PR-check.yml index 4f9e4c04..3bea8ce4 100644 --- a/.github/workflows/ubuntu-PR-check.yml +++ b/.github/workflows/ubuntu-PR-check.yml @@ -26,7 +26,7 @@ jobs: qt_ver: [5.15.2,6.2.4] qt_arch: [gcc_64] env: - version: 22.7.24 + version: 22.8.24 version-suffix: alpha prerelease: true steps: diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index d67449c5..71917d0c 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -30,7 +30,7 @@ jobs: qt_ver: [5.15.2] qt_arch: [gcc_64] env: - version: 22.7.24 + version: 22.8.24 version-suffix: alpha prerelease: true steps: diff --git a/.github/workflows/windows-6.2.yml b/.github/workflows/windows-6.2.yml index 6bf4b158..52f89799 100644 --- a/.github/workflows/windows-6.2.yml +++ b/.github/workflows/windows-6.2.yml @@ -31,7 +31,7 @@ jobs: qt_arch: [win64_msvc2019_64] env: targetName: GoldenDict.exe - version: 22.7.24 + version: 22.8.24 version-suffix: alpha prerelease: true steps: diff --git a/.github/workflows/windows-PR-check.yml b/.github/workflows/windows-PR-check.yml index 337eb249..0fb32302 100644 --- a/.github/workflows/windows-PR-check.yml +++ b/.github/workflows/windows-PR-check.yml @@ -29,7 +29,7 @@ jobs: env: targetName: GoldenDict.exe - version: 22.7.24 + version: 22.8.24 version-suffix: alpha prerelease: true steps: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 341b27dd..039115d7 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -32,7 +32,7 @@ jobs: qt_arch: [win64_msvc2019_64] env: targetName: GoldenDict.exe - version: 22.7.24 + version: 22.8.24 version-suffix: alpha prerelease: true # 步骤 diff --git a/goldendict.pro b/goldendict.pro index 99f53521..1af7a33a 100644 --- a/goldendict.pro +++ b/goldendict.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = goldendict -VERSION = 22.7.24-alpha +VERSION = 22.8.24-alpha # Generate version file. We do this here and in a build rule described later. # The build rule is required since qmake isn't run each time the project is @@ -90,7 +90,7 @@ win32 { TARGET = GoldenDict win32-msvc* { - VERSION = 22.7.24 # VS does not recognize 22.number.alpha,cause errors during compilation under MSVC++ + VERSION = 22.8.24 # VS does not recognize 22.number.alpha,cause errors during compilation under MSVC++ DEFINES += __WIN32 _CRT_SECURE_NO_WARNINGS contains(QMAKE_TARGET.arch, x86_64) { DEFINES += NOMINMAX __WIN64 From 874b032baa9947a39626dde29c14050fa318033c Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Mon, 22 Aug 2022 20:38:14 +0800 Subject: [PATCH 02/75] opt: modify goldendict.pro file --- goldendict.pro | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/goldendict.pro b/goldendict.pro index 1af7a33a..0fa6e661 100644 --- a/goldendict.pro +++ b/goldendict.pro @@ -90,7 +90,8 @@ win32 { TARGET = GoldenDict win32-msvc* { - VERSION = 22.8.24 # VS does not recognize 22.number.alpha,cause errors during compilation under MSVC++ + # VS does not recognize 22.number.alpha,cause errors during compilation under MSVC++ + VERSION = 22.8.24 DEFINES += __WIN32 _CRT_SECURE_NO_WARNINGS contains(QMAKE_TARGET.arch, x86_64) { DEFINES += NOMINMAX __WIN64 From 0a07ab2278c6a99eb0690a379f874d9273818d62 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Mon, 22 Aug 2022 21:28:07 +0800 Subject: [PATCH 03/75] test: inspector windows --- article_inspect.cpp | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/article_inspect.cpp b/article_inspect.cpp index 8419749b..9e4547b4 100644 --- a/article_inspect.cpp +++ b/article_inspect.cpp @@ -28,22 +28,11 @@ void ArticleInspector::setInspectPage( QWebEnginePage * page ) } qDebug() << page->lifecycleState(); -#if( QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 ) ) +#if( QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 ) || QT_VERSION > QT_VERSION_CHECK(6,3,0) ) page->triggerAction( QWebEnginePage::InspectElement ); #else // without this line, application will crash on qt6.2 ,see https://bugreports.qt.io/browse/QTBUG-101724 // and seems to hangup forever on qt6.3.0 ,so the best solution for now is to comment out the following lines. - static bool first{ true }; - if( first ) - { - qDebug()<<"inspector,phase first time"; - first = false; - } - else - { - qDebug()<<"inspector,phase not first time"; - page->triggerAction( QWebEnginePage::InspectElement ); - } #endif raise(); From 77e6b69cc11a67f2da58b718bc714347d63a0bd1 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Tue, 23 Aug 2022 19:38:23 +0800 Subject: [PATCH 04/75] github: clean PullRequest check action --- .github/workflows/macos-PR-check.yml | 4 ---- .github/workflows/ubuntu-PR-check.yml | 5 +---- .github/workflows/windows-PR-check.yml | 12 ------------ 3 files changed, 1 insertion(+), 20 deletions(-) diff --git a/.github/workflows/macos-PR-check.yml b/.github/workflows/macos-PR-check.yml index cd984e6c..e46bc514 100644 --- a/.github/workflows/macos-PR-check.yml +++ b/.github/workflows/macos-PR-check.yml @@ -25,10 +25,6 @@ jobs: os: [macos-11.0] qt_ver: [5.15.2,6.2.4] qt_arch: [clang_64] - env: - version: 22.8.23 - version-suffix: EndOfHeat - prerelease: false steps: # macos 11.0 默认环境变了,要指定 diff --git a/.github/workflows/ubuntu-PR-check.yml b/.github/workflows/ubuntu-PR-check.yml index 3bea8ce4..4cd16225 100644 --- a/.github/workflows/ubuntu-PR-check.yml +++ b/.github/workflows/ubuntu-PR-check.yml @@ -25,10 +25,7 @@ jobs: os: [ubuntu-20.04] qt_ver: [5.15.2,6.2.4] qt_arch: [gcc_64] - env: - version: 22.8.24 - version-suffix: alpha - prerelease: true + steps: - uses: actions/setup-python@v3 with: diff --git a/.github/workflows/windows-PR-check.yml b/.github/workflows/windows-PR-check.yml index 0fb32302..7997dbcb 100644 --- a/.github/workflows/windows-PR-check.yml +++ b/.github/workflows/windows-PR-check.yml @@ -26,12 +26,6 @@ jobs: os: [windows-2019] qt_ver: [5.15.2,6.2.4] qt_arch: [win64_msvc2019_64] - - env: - targetName: GoldenDict.exe - version: 22.8.24 - version-suffix: alpha - prerelease: true steps: - uses: actions/setup-python@v3 with: @@ -69,9 +63,3 @@ jobs: # call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.msvc_arch }} qmake "CONFIG+=zim_support" CONFIG+=release nmake - - echo winSdkDir=%WindowsSdkDir% >> %GITHUB_ENV% - echo winSdkVer=%WindowsSdkVersion% >> %GITHUB_ENV% - echo vcToolsInstallDir=%VCToolsInstallDir% >> %GITHUB_ENV% - echo vcToolsRedistDir=%VCToolsRedistDir% >> %GITHUB_ENV% - echo QTDIR=%Qt6_DIR% >> %GITHUB_ENV% From 5180dfb35e18814a67f8cf34da3148f1d0d332ab Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Tue, 23 Aug 2022 20:12:03 +0800 Subject: [PATCH 05/75] fix:about blank page handle --- articleview.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articleview.cc b/articleview.cc index 69b5fbeb..16fa1e95 100644 --- a/articleview.cc +++ b/articleview.cc @@ -349,7 +349,7 @@ ArticleView::ArticleView( QWidget * parent, ArticleNetworkAccessManager & nm, Au settings->setAttribute( QWebEngineSettings::PrintElementBackgrounds, false ); #endif - ui.definition->load( QUrl("gdlookup://localhost?blank=1") ); + ui.definition->load( QUrl("gdlookup://localhost?word=(untitled)&blank=1") ); expandOptionalParts = cfg.preferences.alwaysExpandOptionalParts; From 2adfdc031b9cdd655bd6b8d97c516b21296c4f72 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Wed, 24 Aug 2022 21:30:26 +0800 Subject: [PATCH 06/75] opt: resource file detection optimize --- utils.hh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/utils.hh b/utils.hh index 28db1830..21cf2818 100644 --- a/utils.hh +++ b/utils.hh @@ -95,7 +95,19 @@ inline bool isExternalLink(QUrl const &url) { inline bool isHtmlResources(QUrl const &url) { auto fileName = url.fileName(); auto ext=fileName.mid(fileName.lastIndexOf(".")); - QStringList extensions{".css",".woff",".woff2","ttf",".bmp" ,".jpg", ".png",".gif", ".tif",".wav", ".ogg", ".oga", ".mp3", ".mp4", ".aac", ".flac",".mid", ".wv",".ape"} ; + QStringList extensions{ ".css", ".woff", ".woff2", ".ttf", ".otf", ".bmp", ".jpg", ".png", ".gif", ".tif", + ".wav", ".ogg", ".oga", ".mp3", ".mp4", ".aac", ".flac", ".mid", ".wv", ".ape" }; + + //some url has the form like https://xxxx/audio?file=***.mp3&a=1 etc links. + if( ext.isEmpty() ) + { + for( QString extension : extensions ) + { + if( url.url().contains( extension ) ) + return true; + } + return false; + } return extensions.contains( ext, Qt::CaseInsensitive ); } From e6abb1596dc065ef260ce7937d091ab955a30599 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Fri, 26 Aug 2022 00:22:27 +0800 Subject: [PATCH 07/75] add translation of Swiss High-German thanks to Patrik Studer --- CREDITS.txt | 1 + goldendict.pro | 1 + locale/de_CH.ts | 5164 +++++++++++++++++ thirdparty/qwebengine_ts/qtwebengine_de_CH.qm | Bin 0 -> 118433 bytes 4 files changed, 5166 insertions(+) create mode 100644 locale/de_CH.ts create mode 100644 thirdparty/qwebengine_ts/qtwebengine_de_CH.qm diff --git a/CREDITS.txt b/CREDITS.txt index 6eb5b9c9..9ee98b89 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -32,3 +32,4 @@ Nasrollah Noori : Persian translation Vladimir Gerovski: Macedonian Translation Nikolay Korotkiy : Finnish translation Robin Townsend: Lojban translation +Patrik Studer: Swiss High-German translation (de-ch) diff --git a/goldendict.pro b/goldendict.pro index 0fa6e661..1c3cc641 100644 --- a/goldendict.pro +++ b/goldendict.pro @@ -570,6 +570,7 @@ TRANSLATIONS += locale/ru_RU.ts \ locale/zh_CN.ts \ locale/cs_CZ.ts \ locale/de_DE.ts \ + locale/de_CH.ts \ locale/el_GR.ts \ locale/bg_BG.ts \ locale/ar_SA.ts \ diff --git a/locale/de_CH.ts b/locale/de_CH.ts new file mode 100644 index 00000000..28cd3e81 --- /dev/null +++ b/locale/de_CH.ts @@ -0,0 +1,5164 @@ + + + + + About + + + About + Über + + + + GoldenDict dictionary lookup program, version + GoldenDict Programm-Version: + + + + (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) + (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) + + + + Credits: + Danksagungen: + + + + Licensed under GNU GPLv3 or later + Lizensiert unter der GNU GPLv3 oder neuer. + + + + [Unknown] + [Unbekannt] + + + + Based on Qt %1 (%2, %3 bit) + Basiert auf Qt %1 (%2, %3 bit) + + + + AnkiConnector + + + anki: post to anki failed + Anki: Anfrage zu Anki schlug fehl + + + + anki: post to anki success + Anki: Anfrage zu Anki war erfolgreich + + + + ArticleInspector + + + Inspect + Überprüfen + + + + ArticleMaker + + + Expand article + Artikel aufklappen + + + + Collapse article + Artikel einklappen + + + + No translation for <b>%1</b> was found in group <b>%2</b>. + In <b>%2</b> wurde kein Eintrag für <b>%1</b> gefunden. + + + + No translation was found in group <b>%1</b>. + Kein Eintrag, Übersetzung in Gruppe <b>%1</b> gefunden. + + + + Welcome! + Willkommen + + + + <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. + <h3 <h3 align="center">Willkommen zu <b>GoldenDict</b></h2><p>Das sind die ersten Schritte um mit dem Programm arbeiten zu können. <p> Gehen Sie zunächst auf <b>Bearbeiten » Wörterbücher...</b> um die Pfade zu abgespeicherten Wörterbüchern hinzuzufügen sowie um Wikipedia und andere Seiten einzurichten oder die Wörterbücher anzuordnen bzw. in Gruppen zu unterteilen.</p> +<p>Nun sind Sie bereit das erste Wort nachzuschlagen. Dies können Sie im Eingabe-Fenster machen oder <a href="Mit Popups arbeiten">mittels der Popup-Funktion in anderen Applikationen.</a></p> +<p>Um das Programm anzupassen öffnen Sie <b>Bearbeiten » Einstellungen...</b><br />Viele Einstellungen sind auch mit Tipps versehen.</p> +<p>Hilfe, Fragen und Antworten dazu finden Sie im archvierten <a href="http://goldendict.org/forum/">Forum</a>.<br />Programm Updates finden sind auf der Webseite <a href="https://sourceforge.net/projects/goldendict/">GoldenDict</a> und den weiterhin gepflegten Source auf <a href="https://github.com/goldendict/goldendict/">GoldenDict Source</a>. +<br />(c) 2008-2013 Konstantin Isakov. Lizensiert unter der GPLv3 oder neuer.<p></p> +<BODY> +<DIV><B><SPAN style="COLOR: red"> +<HR> +</SPAN></B></DIV> +<DIV><SPAN style="COLOR: red">Seit 2021: <br />Ein neuer Fork von XIAO, mit z.B. einer OCR Erkennung mittels dem externen Hilfsprogramm <a href="https://sourceforge.net/projects/capture2text/">Capture2Text</a> und +vielen anderen Optimierungen, finden Sie auf der </SPAN><SPAN style="COLOR: red"><A +href="https://github.com/xiaoyifang/goldendict/">Webseite von XIAO.</A><FONT color=#000000> + +<HR> + + + + + Working with popup + Mit Popups arbeiten + + + + <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. + <h3 align="center">Mit Popups arbeiten</h3>Um Wörter von anderen aktiven Applikationen nachzuschlagen, muss zunächst die <i>"Scan Popup Funktionalität"</i> unter <b>Bearbeiten » Einstellungen...</b> aktiviert werden. <br /> +Dies kann zu jeder Zeit über das "Popup-Symbol" in der Werkzeugleiste oder mittels Kontextmenü des Symboles in der Symbolleiste geschehen.<br /> + + + + Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. + Dann einfach mit dem Mauszeiger über das Wort in der Applikation fahren, welches nachgeschlagen werden soll. Ein Fenster wird danach sichtbar mit der gefundenen Übersetzung. + + + + Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. + Dann einfach ein Wort mit der Maus (Doppelklicken oder bei gedrückten Tasten darüberfahren) markieren, welches nachgeschlagen werden soll. Dann öffnet sich ein Popup, welches das Wort beschreibt. + + + + (untitled) + (unbenannt) + + + + (picture) + (Bild) + + + + ArticleRequest + + + Expand article + Artikel aufklappen + + + + From + Von + + + + Collapse article + Artikel einklappen + + + + Query error: %1 + Abfragefehler: %1 + + + + Close words: + Ähnliche Wörter: + + + + Compound expressions: + Zusammengesetzte Treffer: + + + + Individual words: + Einzelne Wörter: + + + + ArticleView + + + Select Current Article + Aktuellen Artikel auswählen + + + + Copy as text + Als Text kopieren + + + + Inspect + Betrachten + + + + Resource + Ressource + + + + Audio + Audio + + + + TTS Voice + TTS Stimme + + + + Picture + Bild + + + + Definition from dictionary "%1": %2 + Definition vom Wörterbuch "%1": %2 + + + + Definition: %1 + Definition: %1 + + + + + The referenced resource doesn't exist. + Die angegebene Ressource existiert nicht. + + + + The referenced audio program doesn't exist. + Das angegebene Audioprogramm existiert nicht. + + + + + + ERROR: %1 + FEHLER: %1 + + + + Save sound + Klang speichern + + + + Save image + Bild speichern + + + + Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) + Bilder (*.bmp *.jpg *.png *.tif);;Alle Dateien (*.*) + + + + &Open Link + &Link öffnen + + + + Phrase not found + Satz nicht gefunden + + + + %1 of %2 matches + %1 von %2 übereinstimmen + + + + Video + Video + + + + Video: %1 + Video: %1 + + + + Open Link in New &Tab + Link in neuem Rei&ter öffnen + + + + Open Link in &External Browser + Link in &externen Browser öffnen + + + + &Look up "%1" + &Schlage "%1" nach + + + + Look up "%1" in &New Tab + Schlage "%1" in &neuem Tab nach + + + + Send "%1" to input line + Sende "%1" an die Eingabezeile + + + + + &Add "%1" to history + Füge "%1" zum Verlauf &hinzu + + + + Look up "%1" in %2 + Schlage "%1" in %2 nach + + + + Look up "%1" in %2 in &New Tab + Schlage "%1" in %2 in &neuem Tab nach + + + + Save &Bookmark "%1..." + Speichere &Lesezeichen "%1..." + + + + &Send "%1" to anki with selected text. + Übermittle "%1" zu Anki mit selektiertem Text. + + + + Sound files (*.wav *.ogg *.oga *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) + Audio Dateien (*.wav *.ogg *.oga *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) + + + + WARNING: Audio Player: %1 + WARNUNG: Audio Player: %1 + + + + Failed to create temporary file. + Konnte keine temporäre Datei anlegen. + + + + Failed to auto-open resource file, try opening manually: %1. + Konnte die Ressource nicht automatisch öffnen; versuchen Sie es manuell: %1. + + + + The referenced resource failed to download. + Die angegebene Ressource konnte nicht heruntergeladen werden. + + + + Save &image... + Bild &speichern... + + + + Save s&ound... + &Klang speichern... + + + + Failed to play sound file: %1 + Konnte folgende Audio Datei nicht abspielen: %1 + + + + WARNING: %1 + WARNUNG: %1 + + + + Form + Formular + + + + about:blank + about:blank + + + + x + x + + + + Find: + Suche: + + + + + &Previous + &Vorheriger + + + + + &Next + &Nächster + + + + Ctrl+G + CTRL+G + + + + &Case Sensitive + &Gross und Kleinschreibung beachten + + + + Highlight &all + &Alles hervorheben + + + + BelarusianTranslit + + + Belarusian transliteration from latin to cyrillic (classic orthography) + Weissrussische Transliteration von latein nach kyrillisch (klassische Rechtschreibung) + + + + Belarusian transliteration from latin to cyrillic (school orthography) + Weissrussische Transliteration von latein nach kyrillisch (Schulrechtschreibung) + + + + Belarusian transliteration (smoothes out the difference +between classic and school orthography in cyrillic) + Weissrussische Transliteration (glättet die Unterschiede zwischen klassischer und Schulrechtschreibung im kyrillischen) + + + + ChineseConversion + + + Chinese Conversion + Chinesische Konvertierung + + + + Enable conversion between simplified and traditional Chinese characters + Aktiviere Konvertierung zwischen Chinesischen Charakterzeichen Simpel (SC) und Traditionell (TC). + + + + Chinese Con&version + Chinesische Konvertierung (SC=Simpel, TC=Traditionell) + + + + Enable conversion from simplified characters to traditional (Taiwan variant) characters + Aktiviere Konvertierung von Chinesischen Charakterzeichen Simpel zu Traditionell (Taiwan). + + + + SC to TC (Taiwan variant) + SC zu TC (Taiwan) + + + + Enable conversion from simplified characters to traditional (Hong Kong variant) characters + Aktiviere Konvertierung von Chinesischen Charakterzeichen Simpel zu Traditionell (Hongkong). + + + + SC to TC (Hong Kong variant) + SC zu TC (Hongkong) + + + + Enable conversion from traditional characters to simplified characters + Aktiviere Konvertierung von Chinesischen Charakterzeichen Traditionell zu Simpel. + + + + TC to SC + TC zu SC + + + + Simplified to traditional Chinese (Taiwan variant) conversion + Konvertierung von Chinesischen Charakterzeichen Simpel zu Traditionell (Hongkong). + + + + Simplified to traditional Chinese (Hong Kong variant) conversion + Konvertierung von Chinesischen Charakterzeichen Simpel zu Traditionell (Hongkong). + + + + Traditional to simplified Chinese conversion + Konvertierung von Chinesischen Charakterzeichen Traditionell (TC) zu Simpel (SC). + + + + Dialog + + + Proxy authentication required + Proxy Authentifizierung erforderlich + + + + You need to supply a Username and a Password to access via proxy + Sie müssen Benutzernamen und Passwort eingeben für den Proxy Zugang + + + + Username: + Benutzername: + + + + Password: + Passwort: + + + + DictGroupWidget + + + Form + Formular + + + + Group icon: + Gruppensymbol: + + + + Shortcut: + Tastenkürzel: + + + + Favorites folder: + Lesezeichen Ordner: + + + + None + Keines + + + + From file... + Aus Datei... + + + + Choose a file to use as group icon + Wählen Sie eine Datei als Gruppensymbol + + + + Images + Bilder + + + + All files + Alle Dateien + + + + Error + Fehler + + + + Can't read the specified image file. + Konnte die angegebene Bilddatei nicht lesen. + + + + DictGroupsWidget + + + + + + Dictionaries: + Anzahl Wörterbücher: + + + + Confirmation + Bestätigung + + + + Are you sure you want to generate a set of groups based on language pairs? + Möchten Sie wirklich eine Reihe von Gruppen basierend auf den Sprachpaaren erstellen? + + + + Unassigned + Nicht zugeordnet + + + + Combine groups by source language to "%1->" + Kombiniere Gruppen nach Quellsprache nach "%1->" + + + + Combine groups by target language to "->%1" + Kombiniere Gruppen nach Zielsprache nach "%1->" + + + + Make two-side translate group "%1-%2-%1" + Doppelseitige Übersetzungsgruppen erstellen: "%1-%2-%1" + + + + + Combine groups with "%1" + Gruppen kombinieren mit "%1" + + + + DictHeadwords + + + Search mode + Suchmodus + + + + This element determines how filter string will be interpreted + Dieses Element definiert wie der Filter interpretiert wird + + + + If checked on the symbols case will be take in account when filtering + Falls Symbole aktiviert, wird das Ergebnis in die Filter Berechnung miteinbezogen + + + + Match case + Vergleich Ergebnis + + + + Exports headwords to file + Stichwörter in Datei exportieren + + + + Export + Exportieren + + + + Help + Hilfe + + + + OK + OK + + + + Press this button to apply filter to headwords list + Knopf drücken um den Suchfilter auf die Stichwortliste anzuwenden + + + + Apply + Anwenden + + + + If checked any filter changes will we immediately applied to headwords list + Falls aktiviert, wird das Ergebnis des Suchfilters ständig aktuell gehalten. + + + + Auto apply + Auto-Filter + + + + Filter: + Suchfilter: + + + + Filter string (fixed string, wildcards or regular expression) + Suchfilter eingeben (als feststehende Zeichenfolge, Wildcards oder regulären Ausdruck) + + + + Text + Text + + + + Wildcards + Beliebige Zeichen + + + + RegExp + RegExp + + + + Unique headwords total: %1, filtered: %2 + Unterschiedliche Stichwörter insgesamt: %1, gefiltert: %2 + + + + Save headwords to file + Stichwörter in Datei speichern + + + + Text files (*.txt);;All files (*.*) + Textdateien(*.txt);;Alle Dateien(*.*) + + + + Export headwords... + Stichwörter exportieren... + + + + Cancel + Abbrechen + + + + DictInfo + + + Total articles: + Artikel gesamt: + + + + Translates from: + Übersetzt von: + + + + Total words: + Wörter gesamt: + + + + Translates to: + Übersetzt nach: + + + + Open folder + Ordner öffnen + + + + Edit dictionary + Wörterbuch bearbeiten + + + + Files comprising this dictionary: + Wörterbuch zusammengesetzt aus diesen Dateien: + + + + Description: + Beschreibung: + + + + Show all unique dictionary headwords + Zeige alle Stichwörter des Wörterbuches + + + + Headwords + Stichwörter + + + + Edit the dictionary via command: +%1 + Das Wörterbuch mit folgendem Zeilenkommando bearbeiten: +%1 + + + + DictListModel + + + %1 entries + %1 Einträge + + + + DictServer + + + Url: + Url: + + + + Databases: + Datenbanken: + + + + Search strategies: + Suchplanungen: + + + + Server databases + Server Datenbanken + + + + DictServersModel + + + Enabled + Aktiviert + + + + Name + Name + + + + Address + Adresse + + + + Databases + Datenbanken + + + + Strategies + Planungen + + + + Icon + Symbol + + + + Comma-delimited list of databases +(empty string or "*" matches all databases) + Komma geteilte Liste von Datenbanken (leeres Zeichen oder "*" wählt alle Datenbanken) + + + + Comma-delimited list of search strategies +(empty string mean "prefix" strategy) + Komma geteilte Liste von Datenplanungen (leeres Zeichen oder "*" wählt alle Datenbanken) + + + + DictionaryBar + + + &Dictionary Bar + &Wörterbuchleiste + + + + Extended menu with all dictionaries... + Erweitertes Menü mit allen Wörterbüchern... + + + + Edit this group + Diese Gruppe bearbeiten + + + + Dictionary info + Wörterbuchinfo + + + + Dictionary headwords + Wörterbuch Stichwörter + + + + Open dictionary folder + Wörterbuch-Ordner öffnen + + + + Edit dictionary + Wörterbuch bearbeiten + + + + EditDictionaries + + + &Sources + &Quellen + + + + + &Dictionaries + &Wörterbücher + + + + + &Groups + &Gruppen + + + + Sources changed + Quellen geändert + + + + Some sources were changed. Would you like to accept the changes? + Einige Quellen haben sich geändert. Möchten Sie die Änderungen akzeptieren? + + + + Accept + Übernehmen + + + + Cancel + Abbrechen + + + + Dictionaries + Wörterbücher + + + + ExternalViewer + + + the viewer program name is empty + Der Name des Betrachtungsprogrammes ist leer + + + + FTS::FullTextSearchDialog + + + Full-text search + Volltextsuche + + + + Whole words + Ganze Wörter + + + + Plain text + Nur Text + + + + Wildcards + Beliebige Zeichen + + + + RegExp + RegExp + + + + Max distance between words (%1-%2): + Max. Abstand zwischen Wörtern (%1-%2): + + + + Max articles per dictionary (%1-%2): + Max. Artikel pro Wörterbuch (%1-%2): + + + + + + Articles found: + Artikel gefunden: + + + + Now indexing: + Indexiere: + + + + None + Keine + + + CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" + CJK Symbole in der Suche sind nicht kompatibel mit Suchmodi "Ganze Wörter" und "Reiner Text" + + + + The search line must contains at least one word containing + Die Suchzeile muss zumindest ein Wort enthalten, bestehend aus + + + + or more symbols + oder mehr Zeichen + + + + No dictionaries for full-text search + Keine Wörterbücher für Volltextsuche + + + + FavoritesModel + + + Error in favorities file + Fehler in Lesezeichen Datei + + + + FavoritesPaneWidget + + + &Delete Selected + Ausgewählte &löschen + + + + Copy Selected + Ausgewählte kopieren + + + + Add folder + Ordner einfügen + + + + Favorites: + Lesezeichen: + + + + All selected items will be deleted. Continue? + Alle ausgewählten Einträge werden entfernt. Fortfahren? + + + + Forvo::ForvoArticleRequest + + + XML parse error: %1 at %2,%3 + Fehler beim XML parsen: %1 bei %2,%3 + + + + Added %1 + Hinzugefügt %1 + + + + by + von + + + + Male + Mann + + + + Female + Frau + + + + from + aus + + + + Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. + Damit dieser Fehler verschwindet sollten Sie Bearbeiten » Wörterbücher » Forvo auswählen und ihren eigenen API-Schlüssel eintragen. + + + + FullTextSearchDialog + + + + Search + Volltextsuche + + + + Match case + Vergleiche Ergebnis + + + + Mode: + Modus: + + + + Ignore words order + Wortreihenfolge ignorieren + + + + Ignore diacritics + Diakritika ignorieren + + + + Articles found: + Gefundene Artikel: + + + + Available dictionaries in group: + Verfügbare Wörterbücher in Gruppe: + + + + Wait for indexing: + Warte auf Vergleichsergebnisse + + + + Total: + Gesamt: + + + + Indexed: + Indexiert: + + + + Now indexing: None + Indexiere aktuell: Keine + + + + Cancel + Abbrechen + + + + Help + Hilfe + + + + GermanTranslit + + + German Transliteration + Deutsche Transliteration + + + + GreekTranslit + + + Greek Transliteration + Griechische Transliteration + + + + GroupComboBox + + + Choose a Group (Alt+G) + Gruppe auswählen (ALT+G) + + + + Groups + + + Group tabs + Gruppen Reiter + + + + Open groups list + Öffne Gruppenliste + + + + Add group + Gruppe hinzufügen + + + + Give a name for the new group: + Geben Sie den Namen der neuen Gruppe ein: + + + + Rename group + Gruppe umbenennen + + + + Give a new name for the group: + Geben Sie den neuen Namen der Gruppe ein: + + + + Remove group + Gruppe entfernen + + + + Are you sure you want to remove the group <b>%1</b>? + Möchten Sie wirklich die Gruppe <b>%1</b> entfernen? + + + + + Remove all groups + Alle Gruppen entfernen + + + + Are you sure you want to remove all the groups? + Wollen Sie wirklich alle Gruppen entfernen? + + + + Dictionaries available: + Vorhandene Wörterbücher: + + + + Add selected dictionaries to group (Ins) + Ausgewählte Wörterbücher zur Gruppe hinzufügen (DEL). + + + + > + > + + + + Ins + INS + + + + Remove selected dictionaries from group (Del) + Ausgewählte Wörterbücher von der Gruppe entfernen (DEL). + + + + < + < + + + + Del + DEL + + + + Groups: + Gruppen: + + + + Tab 2 + Tab 2 + + + + Create new dictionary group + Eine neue Gruppe von Wörterbüchern erzeugen. + + + + &Add group + Gruppe &hinzufügen + + + + Create language-based groups + Erzeugt sprachenbasierte Gruppen. + + + + Auto groups + Automatische Gruppen + + + + Rename current dictionary group + Die ausgewählte Wörterbuchgruppe umbenennen. + + + + Re&name group + Gruppe &umbenennen + + + + Remove current dictionary group + Die ausgewählte Wörterbuchgruppe entfernen. + + + + &Remove group + Gruppe &entfernen + + + + Remove all dictionary groups + Alle Gruppen von Wörterbüchern entfernen. + + + + Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. + Benutzen Sie Drag & Drop um Wörterbücher zwischen oder innerhalb von Gruppen zu verschieben oder um die Reihenfolge zu verändern. + + + + Help::HelpWindow + + + GoldenDict help + GoldenDict Hilfe + + + + Home + Startseite + + + + Back + Zurück + + + + Forward + Weiter + + + + Zoom In + Vergrössern + + + + Zoom Out + Verkleinern + + + + Normal Size + Normale Grösse + + + + Content + Inhalt + + + + Index + Index + + + + HistoryPaneWidget + + + &Delete Selected + Ausgewählte &löschen + + + + Copy Selected + Ausgewählte kopieren + + + + History: + Verlauf: + + + + %1/%2 + %1/%2 + + + + History size: %1 entries out of maximum %2 + Verlaufsgrösse: %1 von maximal %2 Einträgen + + + + Hunspell + + + Spelling suggestions: + Rechtschreibvorschläge: + + + + %1 Morphology + %1 Morphologie + + + + HunspellDictsModel + + + Enabled + Aktiv + + + + Name + Name + + + + Initializing + + + Please wait... + Bitte warten... + + + + + Please wait while indexing dictionary + Bitte warten Sie während die Wörterbücher initialisiert werden + + + + GoldenDict - Initializing + GoldenDict - Initialisierung + + + + Dictionary Name + Name des Wörterbuches + + + + Language + + + Afar + Afar + + + + Abkhazian + Abkhazisch + + + + Avestan + Avestan + + + + Afrikaans + Afrikaans + + + + Akan + Akan + + + + Amharic + Amharisch + + + + Aragonese + Aragonesisch + + + + Arabic + Arabisch + + + + Assamese + Assamesisch + + + + Avaric + Avarisch + + + + Aymara + Aymara + + + + Azerbaijani + Aserbaijanisch + + + + Bashkir + Baschkir + + + + Belarusian + Weissrussisch + + + + Bulgarian + Bulgarisch + + + + Bihari + Magahi + + + + Bislama + Bislama + + + + Bambara + Bambara + + + + Bengali + Bengali + + + + Tibetan + Tibetanisch + + + + Breton + Bretonisch + + + + Bosnian + Bosnisch + + + + Catalan + Katalanisch + + + + Chechen + Tschetschenisch + + + + Chamorro + Chamorro + + + + Corsican + Korsisch + + + + Cree + Cree + + + + Czech + Tschechisch + + + + Church Slavic + Kirchenslawisch + + + + Chuvash + Tschuwasch + + + + Welsh + Walisisch + + + + Danish + Dänisch + + + + German + Deutsch + + + + Divehi + Divehi + + + + Dzongkha + Dzongkha + + + + Ewe + Ewe + + + + Greek + Griechisch + + + + English + Englisch + + + + Esperanto + Esperanto + + + + Spanish + Spanisch + + + + Estonian + Estnisch + + + + Basque + Baskisch + + + + Persian + Persisch + + + + Fulah + Fulfulde + + + + Finnish + Finnisch + + + + Fijian + Fijianisch + + + + Faroese + Färöisch + + + + French + Französisch + + + + Western Frisian + Westfriesisch + + + + Irish + Irisch + + + + Scottish Gaelic + Schottisch-Gälisch + + + + Galician + Galizisch + + + + Guarani + Guaraní + + + + Gujarati + Gujarati + + + + Manx + Manx + + + + Hausa + Hausa + + + + Hebrew + Hebräisch + + + + Hindi + Hindi + + + + Hiri Motu + Hiri Motu + + + + Croatian + Kroatisch + + + + Haitian + Haitianisch + + + + Hungarian + Ungarisch + + + + Armenian + Armenisch + + + + Herero + Herero + + + + Interlingua + Interlingua + + + + Indonesian + Indonesisch + + + + Interlingue + Interlingue + + + + Igbo + Igbo + + + + Sichuan Yi + Sichuan Yi + + + + Inupiaq + Inupiaq + + + + Ido + Ido + + + + Icelandic + Isländisch + + + + Italian + Italienisch + + + + Inuktitut + Inuktitut + + + + Japanese + Japanisch + + + + Javanese + Javanisch + + + + Georgian + Georgisch + + + + Kongo + Kongo + + + + Kikuyu + Kikuyu + + + + Kwanyama + Oshivambo + + + + Kazakh + Kasachisch + + + + Kalaallisut + Kalaallisut + + + + Khmer + Khmer + + + + Kannada + Kannada + + + + Korean + Koreanisch + + + + Kanuri + Kanuri + + + + Kashmiri + Kashmiri + + + + Kurdish + Kurdisch + + + + Komi + Komi + + + + Cornish + Cornisch + + + + Kirghiz + Kirghizstan + + + + Latin + Latein + + + + Luxembourgish + Luxemburgisch + + + + Ganda + Ganda + + + + Limburgish + Limburgisch + + + + Lingala + Lingala + + + + Lao + Laotisch + + + + Lithuanian + Litauisch + + + + Luba-Katanga + Kiluba + + + + Latvian + Litauisch + + + + Malagasy + Madagassisch + + + + Marshallese + Marshallesisch + + + + Maori + Maori + + + + Macedonian + Mazedonisch + + + + Malayalam + Malajalam + + + + Mongolian + Mongolisch + + + + Marathi + Marathi + + + + Malay + Malaysisch + + + + Maltese + Maltesisch + + + + Burmese + Burmesisch + + + + Nauru + Nauru + + + + Norwegian Bokmal + Bokmål + + + + North Ndebele + Nord-Ndebele + + + + Nepali + Nepali + + + + Ndonga + Ndonga + + + + Dutch + Holländisch + + + + Norwegian Nynorsk + Nynorsk + + + + Norwegian + Norwegisch + + + + South Ndebele + Süd-Ndebele + + + + Navajo + Navajo + + + + Chichewa + Chichewa + + + + Occitan + Okzitanisch + + + + Ojibwa + Ojibwe + + + + Oromo + Oromo + + + + Oriya + Oriya + + + + Ossetian + Ossetisch + + + + Panjabi + Punjabi + + + + Pali + Pali + + + + Polish + Polnisch + + + + Pashto + Paschto + + + + Portuguese + Portugiesisch + + + + Quechua + Quechua + + + + Raeto-Romance + Rätoromanisch + + + + Kirundi + Kirundi + + + + Romanian + Rumänisch + + + + Russian + Russisch + + + + Kinyarwanda + Kinyarwanda + + + + Sanskrit + Sanskrit + + + + Sardinian + Sardinisch + + + + Sindhi + Sindhi + + + + Northern Sami + Nordsamisch + + + + Sango + Sango + + + + Serbo-Croatian + Serbokroatisch + + + + Sinhala + Singhalesisch + + + + Slovak + Slowakisch + + + + Slovenian + Slovenisch + + + + Samoan + Samoanisch + + + + Shona + Shona + + + + Somali + Somali + + + + Albanian + Albanisch + + + + Serbian + Serbisch + + + + Swati + Swati + + + + Southern Sotho + Süd-Sotho + + + + Sundanese + Sundanesisch + + + + Swedish + Schwedisch + + + + Swahili + Swahili + + + + Tamil + Tamil + + + + Telugu + Telugu + + + + Tajik + Tadschikisch + + + + Thai + Thailändisch + + + + Tigrinya + Tigrinya + + + + Turkmen + Turkmenisch + + + + Tagalog + Tagalog + + + + Tswana + Setswana + + + + Tonga + Tongaisch + + + + Turkish + Türkisch + + + + Tsonga + Xitsonga + + + + Tatar + Tatar + + + + Twi + Twi + + + + Tahitian + Tahitianisch + + + + Uighur + Uigurisch + + + + Ukrainian + Ukrainisch + + + + Urdu + Urdu + + + + Uzbek + Usbekisch + + + + Venda + Tshivenda + + + + Vietnamese + Vietnamesisch + + + + Volapuk + Volapük + + + + Walloon + Wallonisch + + + + Wolof + Wolof + + + + Xhosa + Xhosa + + + + Yiddish + Jiddisch + + + + Yoruba + Yoruba + + + + Zhuang + Zhuang + + + + Chinese + Chinesisch + + + + Zulu + Zulu + + + + Lojban + Lojban + + + + Traditional Chinese + Chinesisch traditionell + + + + Simplified Chinese + Chinesisch vereinfacht + + + + Other + Andere + + + + Other Simplified Chinese dialects + Andere vereinfacht Chinesische Dialekte + + + + Other Traditional Chinese dialects + Andere traditionell Chinesische Dialekte + + + + Other Eastern-European languages + Andere osteuropäische Sprachen + + + + Other Western-European languages + Andere westeuropäische Sprachen + + + + Other Russian languages + Andere russische Sprachen + + + + Other Japanese languages + Andere japanische Sprachen + + + + Other Baltic languages + Andere baltische Sprachen + + + + Other Greek languages + Andere griechische Sprachen + + + + Other Korean dialects + Andere koreanische Sprachen + + + + Other Turkish dialects + Andere türkische Sprachen + + + + Other Thai dialects + Andere thai Sprachen + + + + Tamazight + Tamazight + + + + LoadDictionaries + + + Error loading dictionaries + Fehler beim Laden der Wörterbücher + + + + Main + + + Error in configuration file. Continue with default settings? + Fehler in der Konfigurationsdatei. Mit Standardeinstellungen fortfahren? + + + + MainWindow + + + &Menubar + &Menüleiste + + + + + Look up in: + Suche in: + + + + Found in Dictionaries: + In Wörterbüchern gefunden: + + + + Back + Zurück + + + + Forward + Vorwärts + + + + Scan Popup + Scan Popup + + + + Pronounce Word (Alt+S) + Wort aussprechen (ALT+S) + + + + Zoom In + Ver&grössern + + + + Zoom Out + Ver&kleinern + + + + Normal Size + Normale Grösse + + + + Words Zoom In + &Suchwörter vergrössern + + + + Words Zoom Out + S&uchwörter verkleinern + + + + Words Normal Size + Suchwörter in normaler &Grösse + + + + Show &Main Window + Im &Hauptfenster zeigen + + + + Tracking Clipboard + Zwischenspeicher überwachen + + + + Close current tab + Aktuellen Tab schliessen + + + + Close all tabs + Alle Tabs schliessen + + + + Close all tabs except current + Alle anderen Tabs schliessen + + + + Add all tabs to Favorites + Alle Tabs als Lesezeichen + + + + + Accessibility API is not enabled + Barrierefreiheit-API ist nicht aktiviert + + + + + + + + Remove current tab from Favorites + Aktuellen Tab von Lesezeichen entfernen + + + + Article, Complete (*.html) + Artikel, komplett (*.html) + + + + Article, HTML Only (*.html) + Artikel, nur HTML (*.html) + + + + Saving article... + Artikel wird gespeichert... + + + + The main window is set to be always on top. + Das Hauptfenster ist eingestellt als immer im Vordergrund. + + + + + &Hide + &Verbergen + + + + Export history to file + Verlauf in eine Datei exportieren + + + + + + Text files (*.txt);;All files (*.*) + Textdateien(*.txt);;All Dateien(*.*) + + + + History export complete + Export des Verlaufes abgeschlossen + + + + + + Export error: + Exportfehler: + + + + Import history from file + Verlauf von Datei importieren + + + + Import error: invalid data in file + Importfehler: ungültige Daten in Datei + + + + History import complete + Import des Verlaufes abgeschlossen + + + + + Import error: + Importfehler: + + + + Export Favorites to file + Exportiere Lesezeichen in Datei + + + + + XML files (*.xml);;All files (*.*) + XML Dateien (*.xml);;Alle Dateien (*.*) + + + + + Favorites export complete + Lesezeichen Export beendet + + + + Export Favorites to file as plain list + Exportiere Lesezeichen in Datei als Text + + + + Import Favorites from file + Importiere Lesezeichen von Datei + + + + Favorites import complete + Lesezeichen Import beendet + + + + Data parsing error + Datenanalyse Fehler + + + + Dictionary info + Wörterbuchinfo + + + + Dictionary headwords + Wörterbuchinfo + + + + Open dictionary folder + Wörterbuch-Ordner öffnen + + + + Edit dictionary + Wörterbuch bearbeiten + + + + Now indexing for full-text search: + Indexiere Volltextsuche: + + + + Remove headword "%1" from Favorites? + Entferne Überschrift "%1" von Lesezeichen ? + + + + + &Quit + B&eenden + + + + Loading... + Lade... + + + + + Welcome! + Willkommen + + + + %1 dictionaries, %2 articles, %3 words + %1 Wörterbücher, %2 Artikel, %3 Wörter + + + + Look up: + Nachschlagen: + + + + All + Alle + + + + Opened tabs + Offene Reiter + + + + Show Names in Dictionary &Bar + Namen in &Wörterbuchleiste anzeigen + + + + Show Small Icons in &Toolbars + Kleine Symbole in der &Toolbar anzeigen + + + + &Navigation + &Navigation + + + + String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. +To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively + Begriff für die Suche in Wörterbüchern. Wildcards '*', '?' und Symbole '[...]' sind erlaubt. +Um folgende Symbole zu finden '*', '?', '[', ']' benutze wie folgt '\*', '\?', '\[', '\]'. + + + + Open Tabs List + Liste der Reiter öffnen + + + + (untitled) + (unbenannt) + + + + %1 - %2 + %1 - %2 + + + + Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. + Der Mechanismus für die Tastenkürzel konnte nicht initialisiert werden.<br>Vergewissern Sie sich, dass der XServer die RECORD Erweiterung aktiviert hat. + + + + New Release Available + Neue Version verfügbar + + + + Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. + Version <b>%1</b> von GoldenDict ist nun zum Herunterladen verfügbar.<br>Klicken Sie auf <b>Herunterladen</b>, um zur Seite fürs Herunterladen zu gelangen. + + + + Download + Herunterladen + + + + Skip This Release + Diese Version überspringen + + + + You have chosen to hide a menubar. Use %1 to show it back. + Es wurde eingestellt die Menüleiste zu verstecken. Mit %1 kann sie wieder angezeigt werden. + + + + Ctrl+M + CTRL+M + + + + Page Setup + Seite einrichten + + + + No printer is available. Please install one first. + Es ist kein Drucker vorhanden. Bitte zuerst einen installieren. + + + + Print Article + Drucke Artikel + + + + Save Article As + Artikel speichern als + + + + Error + Fehler + + + + Can't save article: %1 + Kann Artikel nicht speichern: %1 + + + + &File + &Datei + + + + &Edit + &Bearbeiten + + + + &Help + &Hilfe + + + + &View + &Ansicht + + + + &Zoom + &Zoom + + + + H&istory + &Verlauf + + + + &Dictionaries... + &Wörterbücher... + + + + F3 + F3 + + + + Search + &Volltextsuche + + + + Favo&rites + &Lesezeichen + + + + &Search Pane + &Suchformular + + + + &Results Navigation Pane + &Ergebnisliste + + + + &History Pane + &Verlaufsliste + + + + &Preferences... + &Einstellungen... + + + + F4 + F4 + + + + &Homepage + &Webseite + + + + &About + &Über + + + + About GoldenDict + Über GoldenDict + + + + GoldenDict reference + &GoldenDict Hilfe + + + + F1 + F1 + + + + Quit from application + Applikation beenden + + + + Favor&ites Pane + &Lesezeichenliste + + + + Ctrl+Q + CTRL+Q + + + + &Forum + &Forum + + + + &Close To Tray + In die &Symbolleiste schliessen + + + + Minimizes the window to tray + In the Symbolleiste minimieren + + + + Ctrl+F4 + CTRL+F4 + + + + &Save Article + Artikel &speichern + + + + Save Article + Artikel speichern + + + + F2 + F2 + + + + &Print + &Drucken + + + + Ctrl+P + CTRL+P + + + + Page Set&up + &Seite einrichten + + + + Print Pre&view + Druck&vorschau + + + + &Rescan Files + Dateien neu ein&lesen + + + + &New Tab + Neuer Rei&ter + + + + &Always on Top + &Immer im Vordergrund + + + + Always on Top + Immer im Vordergrund + + + + Ctrl+O + CTRL+O + + + + + + Menu Button + Menüschaltfläche + + + + Search in page + &Tab durchsuchen + + + + Ctrl+F + CTRL+F + + + + Full-text search + &Volltextsuche + + + + Ctrl+Shift+F + CTRL+Umschalt+F + + + + Show + Zeige + + + + Export + &Exportieren + + + + Import + Im&portieren + + + + Add + &Hinzufügen + + + + + + + + Add current tab to Favorites + Aktuellen Tab als Lesezeichen hinzufügen + + + + Ctrl+E + CTRL+E + + + + Export to list + Exportieren als &Liste + + + + Ctrl+F5 + CTRL+F5 + + + + &Clear + &Zurücksetzen + + + + New Tab + Neuer Tab + + + + Ctrl+T + CTRL+T + + + + &Configuration Folder + &Konfigurationsordner + + + + + + &Show + &Anzeigen + + + + Ctrl+H + CTRL+H + + + + &Export + &Exportieren + + + + &Import + &Importieren + + + + Mdx::MdxArticleRequest + + + Dictionary file was tampered or corrupted + Die Wörterbuchdatei war manipuliert oder korrupt + + + + Failed loading article from %1, reason: %2 + Konnte den Artikel von %1 nicht laden, Grund: %2 + + + + MediaWiki::MediaWikiArticleRequest + + + XML parse error: %1 at %2,%3 + Fehler beim XML-parsen: %1 bei %2,%3 + + + + MediaWiki::MediaWikiWordSearchRequest + + + XML parse error: %1 at %2,%3 + Fehler beim XML-parsen: %1 bei %2,%3 + + + + MediaWikisModel + + + Enabled + Aktiv + + + + Name + Name + + + + Address + Adresse + + + + Icon + Symbol + + + + MultimediaAudioPlayer + + + Couldn't open audio buffer for reading. + Konnte Audio Buffer nicht öffnen zwecks lesen. + + + + OrderAndProps + + + Form + Formular + + + + Dictionary order: + Reihenfolge der Wörterbücher: + + + + Inactive (disabled) dictionaries: + Inaktive (deaktivierte) Wörterbücher: + + + + Dictionary information + Informationen des ausgewählten Wörterbuches: + + + + Name: + Name: + + + + Total articles: + Artikel insgesamt: + + + + Total words: + Wörter insgesamt: + + + + Translates from: + Übersetzt von: + + + + Translates to: + Übersetzt nach: + + + + Description: + Beschreibung: + + + + Files comprising this dictionary: + Wörterbuch zusammengesetzt aus diesen Dateien: + + + + Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. + Verändern Sie die Reihenfolge mit Drag & Drop. Lassen Sie ein Wörterbuch mittels Drag & Drop in die "inaktive Gruppe" fallen um es zu deaktivieren. + + + + Sort by name + Sortieren nach Name + + + + Sort by languages + Sortieren nach Sprachen + + + + Dictionary headwords + Wörterbucheinträge + + + + Dictionaries active: %1, inactive: %2 + Anzahl Wörterbücher aktiv: %1 | inaktiv: %2 + + + + PathsModel + + + Path + Pfad + + + + Recursive + Rekursiv + + + + Preferences + + + + System default + Systemvorgabe + + + + + Default + Standard + + + + Classic + Klassisch + + + + Modern + Modern + + + + Lingvo + Lingvo + + + + Babylon + Babylon + + + + Lingoes + Lingoes + + + + Lingoes-Blue + Lingoes-Blau + + + + MB + MB + + + + Changing Language + Sprache ändern + + + + Restart the program to apply the language change. + Starten Sie das Programm neu um die neue Sprache zu aktivieren. + + + + Preferences + Einstellungen + + + + &Interface + &Oberfläche + + + + Tabbed browsing + Reiter + + + + Normally, opening a new tab switches to it immediately. +With this on however, new tabs will be opened without +switching to them. + Normalerweise werden neue Reiter geöffnet und sofort selektioniert. +Mit dieser Option werden neue Reiter im Hintergrund geöffnet ohne +diese zu selektionieren. + + + + Open new tabs in background + Neue Reiter im Hintergrund öffnen + + + + With this on, new tabs are opened just after the +current, active one. Otherwise they are added to +be the last ones. + Mit dieser Option werden neue Reiter nach dem aktuellen, aktiven Reiter geöffnet. +Andernfalls werden diese ans Ende hinzugefügt. + + + + Open new tabs after the current one + Neue Reiter nach dem aktuellen öffnen + + + + When enabled, an icon appears in the system tray area which can be used +to open main window and perform other tasks. + Falls aktiviert, erscheint ein Symbol in der Symbolleiste, mit welchem das Hauptfenster geöffnet und andere Aufgaben getätigt werden können. + + + + Enable system tray icon + Aktiviert das Symbol in der Symbolleiste + + + + With this on, the application starts directly to system tray without showing +its main window. + Hiermit startet die Applikation direkt in die Symbolleiste ohne das Hauptfenster zu zeigen. + + + + Start to system tray + In die Symbolleiste starten + + + + With this on, an attempt to close main window would hide it instead of closing +the application. + Hiermit wird das Hauptfenster verborgen, falls die Applikation geschlossen wird. + + + + Close to system tray + In die Symbolleiste schliessen + + + + Startup + Start + + + + Start with system + Mit Betriebssystem starten + + + + Interface language: + Sprache der Oberfläche: + + + + Display style: + Darstellung: + + + + &Scan Popup + &Scan Popup + + + + When enabled, a translation popup window would be shown each time +you point your mouse on any word on the screen (Windows) or select +any word with mouse (Linux). When enabled, you can switch it on and +off from main window or tray icon. + Falls aktiviert, wird jedesmal das Popup-Fenster angezeigt, wenn die Maus über ein Wort am Bildschirm fährt (Windows) oder +wenn ein Wort mit der Maus markiert wird (Linux). +Dies kann im Hauptfenster und in der Symbolleiste an- und abgeschaltet werden. + + + + Enable scan popup functionality + Aktiviert die Scan Popup Funktionalität + + + + Automatically starts GoldenDict after operation system bootup. + Startet GoldenDict automatisch nach jedem Systemstart. + + + + Select this option if you don't want to see the main tab bar when only a single tab is opened. + Wählen Sie diese Option, falls Sie die Reiterleiste bei einem offenem Reiter nicht sehen möchten. + + + + Hide single tab + Einzelnen Tab ausblenden + + + + Ctrl-Tab navigates tabs in MRU order + CTRL+TAB wechselt zwischen den zuletzt verwendeten Reitern + + + + Double-click translates the word clicked + Doppelklick übersetzt das angeklickte Wort + + + + Normally, pressing ESC key moves focus to the translation line. +With this on however, it will hide the main window. + Beim Betätigen der ESC-Taste wird normalerweise der Fokus an die Übersetzungszeile übertragen. +Mit dieser Option wird jedoch das Hauptfenster verborgen. + + + + ESC key hides main window + ESC-Taste verbirgt das Hauptfenster + + + + Turn this option on if you want to select words by single mouse click + Aktivieren Sie diese Option, falls Sie Wörter mit einem einfachem Mausklick auswählen möchten. + + + + Select word by single click + Wort mit einfachem Klick auswählen + + + + Add-on style: + Add-on Stil: + + + + Help language + Sprache der Hilfe: + + + + Normally, clicking on a link, double-clicking on a word or looking up +selection in an article loads the translation and almost immediately +scrolls to the article from the same dictionary. With this option off, +however, the article from the topmost dictionary is shown. + Wird auf einen Link geklickt, ein Wort doppelgeklickt oder eine Suche in einem Artikel gestartet, +dann lädt die Übersetzung und scrollt direkt zum selben Artikel im Wörterbuch. +Wenn diese Option deaktiviert ist, dann wird das zuoberst erscheinende Wörterbuch angezeigt. + + + + Automatically scroll to target article + Automatisch zum Zielartikel scrollen + + + + Adjust this value to avoid huge context menus. + Mit der Anpassung dieses Wertes können riesige Kontextmenüs vermieden werden. + + + + Context menu dictionaries limit: + Wörterbuchlimit im Kontextmenü: + + + + Dictionary Font: + Wörterbuch Font + + + + set the fallback font family for dictionary + Wörterbuch Font auf Standart zurücksetzen. + + + + Chooses whether the scan popup mode is on by default or not. If checked, +the program would always start with the scan popup active. + Gibt an, ob der Scan Popup Modus standardmässig aktiviert ist oder nicht. +Falls aktiviert, wird das Programm immer mit aktiviertem Modus gestartet. + + + + Start with scan popup turned on + Mit aktiviertem Scan Popup starten + + + + With this enabled, the popup would only show up if all chosen keys are +in the pressed state when the word selection changes. + Fallt aktiviert, wird das Scan Popup bei Änderung der Wortauswahl nur angezeigt, wenn alle ausgewählten Tasten gedrückt sind. + + + + Only show popup when all selected keys are kept pressed: + Nur Popup anzeigen, wenn alle ausgewählten Tasten gedrückt werden: + + + + Left Ctrl only + Nur CTRL Links + + + + Left Ctrl + CTRL Links + + + + Right Shift only + Nur Umschalttaste Rechts + + + + Right Shift + Umschalttaste Rechts + + + + Alt key + ALT-Taste + + + + Alt + ALT + + + + Ctrl key + CTRL-Taste + + + + Ctrl + CTRL + + + + Left Alt only + Nur ALT Links + + + + Left Alt + ALT Links + + + + Shift key + Umschalttaste + + + + Shift + Umschalttaste + + + + Right Alt only + Nur ALT Rechts + + + + Right Alt + ALT Rechts + + + + Right Ctrl only + Nur CTRL Rechts + + + + Right Ctrl + CTRL Rechts + + + + Left Shift only + Nur Umschalttaste Links + + + + Left Shift + Umschalttaste Links + + + + Windows key or Meta key + Windows/Meta-Taste + + + + Win/Meta + Win/Meta + + + + Normally, in order to activate a popup you have to +maintain the chosen keys pressed while you select +a word. With this enabled, the chosen keys may also +be pressed shortly after the selection is done. + Normalerweise müssen die entsprechenden Tasten, während ein Wort markiert wird, gedrückt bleiben, um das Scan Popup zu aktivieren. +Mit dieser Option können die Tasten auch kurz nach der Markierung gedrückt werden. + + + + Do not show popup when selection or clipboard in one of GoldenDict's own windows changes + Zeige kein Popup während Selektion oder Zwischenablage Änderungen von GoldenDict eigenem Fenster + + + + Ignore GoldenDict's own selection and clipboard changes + Ignoriere eigene Selektion oder Zwischenablage Änderungen von GoldenDict + + + + Send translated word to main window instead of to show it in popup window + Übersetzte Wörter ans Hauptfenster senden, anstatt sie im Popup-Fenster anzuzeigen. + + + + Send translated word to main window + Übersetzte Wörter ans Hauptfenster senden + + + + Show a flag window before showing popup window, click the flag to show popup window. + Zeige ein Flaggen Fenster bevor Popup Fenster erscheint, auf Flagge klicken um Popup anzuzeigen. + + + + Show scan flag when word is selected + Zeige Flagge scannen wenn Wort selektiert wurde + + + + Playback + Abspielen + + + + Play audio files via built-in audio support + Wähle Audio Hintergrund Applikation aus. + + + + Use internal player: + Internen Abspieler verwenden: + + + + Choose audio back end + Wähle Audio Hintergrund Applikation aus. + + + + Enter audio player command line + Kommandozeile für Audio Player eingeben + + + + System proxy + System Proxy + + + + Custom proxy + Kunden Proxy + + + + Custom settings + Kunden-Einstellungen + + + + Anki Connect + Anki ist ein Programm zum Erstellen digitaler Karteikarten und Auswendiglernen. Dabei werden die Karteikarten in immer grösser werdenden Zeitintervallen abgefragt. + Mit Anki verbinden + + + + http:// + http:// + + + + Deck: + Sammlung (Deck): + + + + Model: + Modell: + + + + Maximum network cache size: + Maximale Netwerk Cache Grösse: + + + + Maximum disk space occupied by GoldenDict's network cache in +%1 +If set to 0 the network disk cache will be disabled. + Maximale Festplattengrösse benutzt durch GoldenDict Netzwerk Cache in +%1 . +Wenn auf 0 gesetzt, wird Netzwerk Cache deaktiviert. + + + + MiB + MiB + + + + When this option is enabled, GoldenDict +clears its network cache from disk during exit. + Wenn diese Option aktiviert ist, löscht GoldendDict den Netzwerk Cache während dem Beenden. + + + + Clear network cache on exit + Netzwerk Cache löschen während dem Beenden + + + + Full-text search + Volltextsuche + + + + Allow full-text search for: + Erlaube Volltext Suche für: + + + + Don't search in dictionaries containing more than + Nicht in Wörterbüchern suchen, die mehr als + + + + articles (0 - unlimited) + Einträge enthalten (0 -> unbegrenzt) + + + + ScanPopup unpinned window flags + ScanPopup nicht gewählter Window Flaggen + + + + Experiment with non-default flags if the unpinned scan popup window misbehaves + Experiment mit "non-default flags" falls nicht angefügtes Scan Popup sich komisch verhält + + + + <default> + <Default> + + + + Popup + Popup + + + + Tool + Werkzeug + + + + This hint can be combined with non-default window flags + Dieser Hinweis kann mit anderen Nichtstandart Flaggen-Fenstern kombiniert werden. + + + + Bypass window manager hint + Ignoriere Window Manager Bemerkungen + + + + Favorites + Lesezeichen + + + + Favorites saving interval. If set to 0 Favorites will be saved only during exit. + Automatischer Speicherintervall für Lesezeichen. Falls der Wert 0 eingetragen wird, erfolgt die Speicherung nur bei Beendigung des Programms. + + + + Turn this option on to confirm every operation of items deletion + Wird diese Option aktiviert, erfolgt jegliche Entfernung von Lesezeichen nur nach vorheriger Sicherheitsabfrage. + + + + Confirmation for items deletion + Sicherheitsabfrage + + + + Select this option to automatic collapse big articles + Wählen Sie diese Option, falls Sie automatisch grosse Artikel einklappen möchten. + + + + Collapse articles more than + Artikel einklappen mit mehr als + + + + Articles longer than this size will be collapsed + Artikel welche diese Grösse überschreiten werden eingeklappt + + + + + symbols + Zeichen + + + + Turn this option on to ignore unreasonably long input text +from mouse-over, selection, clipboard or command line + Aktivieren Sie diese Option um sehr lange Eingabetexte zu ignorieren, welche via +Maus, Selektionen, Zwischenspeicher, Kommandozeile eingegeben werden. + + + + Ignore input phrases longer than + Ignoriere Eingabe Sätze welche länger sind als + + + + Input phrases longer than this size will be ignored + Eingabe Sätze welche länger sind als diese Grösse werden ignoriert + + + + Turn this option on to ignore diacritics while searching articles + Option einschalten um diakritische Zeichen (Punkte, Striche, Häkchen, Bögen etc.) während der Artikelsuche zu ignorieren. + + + + Ignore diacritics while searching + Ignoriere Diakritische Zeichen während der Suche + + + + Ignore punctuation while searching + Ignoriere Satzzeichen während der Suche + + + + Turn this option on to enable extra articles search via synonym lists +from Stardict, Babylon and GLS dictionaries + Wählen Sie diese Option, falls Sie eine Zusatzsuche mit den Synonymlisten von +Stardict, Babylon und GLS Wörterbüchern wünschen. + + + + Extra search via synonyms + Zusatzsuche mit Hilfe von Synonymen + + + + Use any external program to play audio files + Ein externes Programm zum Abspielen der Audiodaten benutzen. + + + + Use external program: + Externes Programm benutzen: + + + + Ad&vanced + &Erweitert + + + + History + Verlauf + + + + Turn this option on to store history of the translated words + Aktivieren Sie diese Option, um den Verlauf der übersetzten Wörter zu speichern. + + + + Store &history + &Verlauf speichern + + + + Specify the maximum number of entries to keep in history. + Geben Sie die maximale Anzahl von Einträgen im Verlauf an. + + + + Maximum history size: + Maximale Verlaufgrösse: + + + + History saving interval. If set to 0 history will be saved only during exit. + Intervall zum Speichern des Verlaufs. Falls 0, wird der Verlauf beim Programmende gespeichert. + + + + + Save every + Speichern alle + + + + + minutes + Minuten + + + + Articles + Artikel + + + + Turn this option on to always expand optional parts of articles + Aktivieren Sie diese Option, um optionale Abschnitte von Artikeln immer auszuklappen. + + + + Expand optional &parts + Optionale &Abschnitte ausklappen + + + + Keys may also be pressed afterwards, within + Die Tasten können auch im nachhinein innerhalb von + + + + To avoid false positives, the keys are only monitored +after the selection's done for a limited amount of +seconds, which is specified here. + Um Falschmeldungen zu vermeiden, werden die Tasten nur für eine begrenzte Anzahl Sekunden überwacht, wie hier angegeben. + + + + secs + Sekunde(n) gedrückt werden + + + + Hotkeys + Tastenkürzel + + + + Use the following hotkey to show or hide the main window: + Das folgende Tastenkürzel benutzen, um das Hauptfenster zu zeigen oder zu verbergen: + + + + Use the following hotkey to translate a word from clipboard: + Das folgende Tastenkürzel benutzen, um ein Wort von der Zwischenablage zu übersetzen: + + + + The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. + Die Tastenkürzel funktionieren global und in jedem Programm und Kontext, sofern GoldenDict im Hintergrund läuft. + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Achtung: Es scheint, dass sie eine X.Org-XServer-Version benutzen, bei welcher die RECORD-Erweiterung nicht richtig funktioniert. Deshalb werden Tastenkürzel höchstwahrscheinlich nicht funktionieren. Dies muss am Server selbst korrigiert werden. Dies bezieht sich auf folgenden </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">Fehlereintrag</span></a><span style=" color:#ff0000;">, welchen Sie, falls gewünscht, kommentieren können.</span></p></body></html> + + + + &Audio + &Audio + + + + Pronunciation + Aussprache + + + + Auto-pronounce words in main window + Wörter im Hauptfenster automatisch aussprechen + + + + Auto-pronounce words in scan popup + Wörter im Scan Popup automatisch aussprechen + + + + &Network + &Netzwerk + + + + Enable if you wish to use a proxy server +for all program's network requests. + Aktivieren, falls ein Proxy-Server für alle Netzverbindungen des Programms verwendet werden soll. + + + + Use proxy server + Proxyserver verwenden + + + + Type: + Typ: + + + + + Host: + Host: + + + + + Port: + Port: + + + + User: + Benutzer: + + + + Password: + Passwort: + + + + Enabling this would make GoldenDict block most advertisements +by disallowing content (images, frames) not originating from the site +you are browsing. If some site breaks because of this, try disabling this. + Dies zu aktivieren lässt GoldenDict die meiste Werbung blockieren, indem Inhalte (Bilder, Frames) +aus Seiten blockiert werden, die nicht der jeweils angezeigten entsprechen. +Sollten einige Seiten nicht mehr funktionieren, kann das Deaktivieren dieser Option helfen. + + + + Disallow loading content from other sites (hides most advertisements) + Inhalte nicht von fremden Seiten laden (unterbindet meist Werbung) + + + + Enabling this would allow to listen to sound pronunciations from +online dictionaries that rely on Flash or other web plugins. +Plugin must be installed for this option to work. + Das Aktivieren erlaubt Audioaussprachen von Onlinewörterbüchern anzuhören, welche auf Flash oder Webplugins basieren. +Ein Plugin muss für diese Option installiert sein. + + + + Enable web plugins + Webplugins aktivieren + + + + Some sites detect GoldenDict via HTTP headers and block the requests. +Enable this option to workaround the problem. + Einige Seiten erkennen GoldenDict mittels HTTP-Kopfzeilen und blockieren die Anfrage. +Diese Option kann dieses Problem beheben. + + + + Do not identify GoldenDict in HTTP headers + GoldenDict nicht in HTTP-Kopfzeilen identifizieren + + + + When this is enabled, the program periodically +checks if a new, updated version of GoldenDict +is available for download. If it is so, the program +informs the user about it and prompts to open a +download page. + Falls aktiviert, prüft das Programm periodisch auf neue Versionen. +Sollte eine neuere Version verfügbar sein informiert GoldenDict den Benutzer und öffnet eventuell die Download-Seite. + + + + Check for new program releases periodically + Periodisch auf neue Programmversionen prüfen + + + + ProgramTypeEditor + + + Audio + Audio + + + + Plain Text + Klartext + + + + Html + Html + + + + Prefix Match + Präfixtreffer + + + + Unknown + Unbekannt + + + + Programs::RunInstance + + + No program name was given. + Kein Programmname wurde eingegeben. + + + + The program has crashed. + Das Programm ist abgestürzt. + + + + The program has returned exit code %1. + Das Program hat mit %1 beendet. + + + + ProgramsModel + + + Enabled + Aktiviert + + + + Type + Typ + + + + Name + Name + + + + Command Line + Kommandozeile + + + + Icon + Symbol + + + + QObject + + + + Article loading error + Fehler beim Laden des Artikels + + + + + Article decoding error + Fehler beim Dekodieren des Artikels + + + + + + + Copyright: %1%2 + Copyright: %1%2 + + + + + Version: %1%2 + Version: %1%2 + + + + avformat_alloc_context() failed. + avformat_alloc_context() fehlgeschlagen. + + + + av_malloc() failed. + av_malloc() fehlgeschlagen. + + + + avio_alloc_context() failed. + avio_alloc_context() fehlgeschlagen. + + + + avformat_open_input() failed: %1. + avformat_open_input() fehlgeschlagen: %1. + + + + avformat_find_stream_info() failed: %1. + avformat_find_stream_info() fehlgeschlagen: %1. + + + + Could not find audio stream. + Konnte den Audiostream nicht finden. + + + + Codec [id: %1] not found. + Codec [id: %1] nicht gefunden. + + + + avcodec_alloc_context3() failed. + avcodec_alloc_context3() fehlgeschlagen. + + + + avcodec_open2() failed: %1. + avcodec_open2() fehlgeschlagen: %1. + + + + Cannot find usable audio output device. + Konnte kein verwendbares Audioausgabegerät finden. + + + + Unsupported sample format. + Nicht unterstütztes Abtastformat. + + + + ao_open_live() failed: + ao_open_live() fehlgeschlagen: + + + + No driver. + Kein Treiber. + + + + This driver is not a live output device. + Dieser Treiber ist kein aktives Ausgabegerät. + + + + A valid option key has an invalid value. + Ein gültiger Optionsschlüssel hat einen ungültigen Wert. + + + + Cannot open the device: %1, channels: %2, rate: %3, bits: %4. + Konnte folgendes Gerät nicht öffnen: %1, Kanale: %2, Rate: %3, Bits: %4. + + + + Unknown error. + Fehler unbekannt. + + + + avcodec_alloc_frame() failed. + avcodec_alloc_frame() fehlgeschlagen. + + + + + + Author: %1%2 + Autor: %1%2 + + + + + E-mail: %1%2 + E-Mail: %1%2 + + + + Title: %1%2 + Titel: %1%2 + + + + Website: %1%2 + Webseite: %1%2 + + + + Date: %1%2 + Datum: %1%2 + + + + anki: post to anki failed + Anki: Übermittlung zu Aniki ist fehlgeschlagen + + + + QuickFilterLine + + + Dictionary search/filter (Ctrl+F) + Wörterbuch suchen/filtern (CTRL+F) + + + + Quick Search + Schnellsuche + + + + Clear Search + Suche zurücksetzen + + + + ResourceToSaveHandler + + + ERROR: %1 + FEHLER: %1 + + + + Resource saving error: + Fehler beim speichern der Ressource: + + + + The referenced resource failed to download. + Die Ressource konnte nicht heruntergeladen werden. + + + + WARNING: %1 + WARNUNG: %1 + WARNUNG: %1 + + + + Romaji + + + Hepburn Romaji for Hiragana + Hepburn Romaji für Hiragana + + + + Hepburn Romaji for Katakana + Hepburn Romaji für Katakana + + + + RussianTranslit + + + Russian Transliteration + Russische Transliteration + + + + ScanFlag + + + MainWindow + Hauptfenster + + + + ScanPopup + + + Dialog + Dialog + + + + + + + + ... + ... + + + + Back + Zurück + + + + Forward + Weiter + + + + Pronounce Word (Alt+S) + Wort aussprechen (ALT+S) + + + + Alt+S + ALT+S + + + + Send word to main window (Alt+W) + Wort an das Hauptfenster senden (ALT+W) + + + + Alt+W + ALT+W + + + + Add word to Favorites (Ctrl+E) + Wort zu Lesezeichen hinzufügen (CTRL+E) + + + + Shows or hides the dictionary bar + Zeigt oder versteckt die Wörterbuchleiste + + + + Always stay on top of all other windows + Immer im Vordergrund aller Windows Fenster + + + + Use this to pin down the window so it would stay on screen, +could be resized or managed in other ways. + Hiermit kann das Fenster fixiert werden, damit es am Bildschirm bleibt, +es in der Grösse verändert, oder andersweitig verwaltet werden kann. + + + + + %1 - %2 + %1 - %2 + + + + SoundDirsModel + + + Path + Pfad + + + + Name + Name + + + + Icon + Symbol + + + + Sources + + + Text to Speech + Sprachausgabe + + + + (not available in portable version) + (Wird in der portablen Version nicht unterstützt !) + + + + + + Choose a directory + Verzeichnis auswählen + + + + + + + + + Confirm removal + Löschung bestätigen + + + + + Remove directory <b>%1</b> from the list? + Soll das Verzeichnis <b>%1</b> von der Liste entfernt werden? + + + + + + Remove site <b>%1</b> from the list? + Soll die Seite <b>%1</b> von der Liste entfernt werden? + + + + Remove program <b>%1</b> from the list? + Soll das Programm <b>%1</b> von der Liste entfernt werden? + + + + Files + Dateien + + + + Paths to search for the dictionary files: + Pfad, um nach Wörterbuchdateien zu suchen: + + + + + + + + + &Add... + &Hinzufügen... + + + + + + + + + &Remove + &Entfernen + + + + Re&scan now + Neu ein&lesen + + + + Sound Dirs + Audioverzeichnis + + + + Make dictionaries from bunches of audiofiles by adding paths here: + Wörterbücher von Audiodateien erstellen, indem hier die Verzeichnisse eingefügt werden: + + + + Morphology + Morphologie + + + + Path to a directory with Hunspell/Myspell dictionaries: + Ordnerpfad mit Hunspell/Myspell Wörterbüchern: + + + + &Change... + Än&dern... + + + + Available morphology dictionaries: + Verfügbare Morphologie Wörterbücher: + + + + Each morphology dictionary appears as a +separate auxiliary dictionary which +provides stem words for searches and +spelling suggestions for mistyped words. +Add appropriate dictionaries to the bottoms +of the appropriate groups to use them. + Jedes Morphologie Wörterbuch erscheint als zusätzliches Hilfswörterbuch, +welches Stammwörter für Suchen und ähnliche Schreibweisen für +falsch geschriebene Wörter bereitstellt. + +Fügen Sie entsprechende Wörterbücher am besten am Ende der passenden Gruppe ein. + + + + Wikipedia + Wikipedia + + + + Wikipedia (MediaWiki) sites: + Wikipedia (MediaWiki) Seiten: + + + + Websites + Webseiten + + + + Any websites. A string %GDWORD% will be replaced with the query word: + Auf jeder Webseite wird der Text %GDWORD% mit dem Suchwort ersetzt: + + + + Programs + Programme + + + + Forvo + Forvo + + + + Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. + Aussprachen live von <a href="http://www.forvo.com/">forvo.com</a>. Diese Seite erlaubt es Menschen Aussprachen von Wörter aufzunehmen und zu teilen. Diese können in GoldenDict angehört werden. + + + + Enable pronunciations from Forvo + Aussprachen von Forvo aktivieren + + + + API Key: + API Schlüssel: + + + + Use of Forvo currently requires an API key. Leave this field +blank to use the default key, which may become unavailable +in the future, or register on the site to get your own key. + Die Benutzung von Forvo erfordert einen API-Schlüssel. +Bei einem leeren Wert, wird ein Standardschlüssel verwendet, welcher vielleicht in Zukunft ungültig wird. +Sie können sich auch auf der Seite registrieren, um ihren eigenen Schlüssel zu erhalten. + + + + Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. + Holen Sie sich <a href="http://api.forvo.com/key/">hier</a> den eigenen Schlüssel, oder lassen Sie das Feld leer um den Standardschlüssel zu verwenden. + + + + Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, +%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. + Alternativ kann man folgenden String verwenden: %GD1251% für CP1251, %GDISO1%...%GDISO16% für ISO 8859-1...ISO 8859-16 oder auch +%GDBIG5% für Big-5, %GDBIG5HKSCS% für Big5-HKSCS, %GDGBK% für GBK und GB18030, %GDSHIFTJIS% für Shift-JIS. + + + + DICT servers + DICT Server + + + + DICT servers: + DICT Server: + + + + Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. + Für externe Programme. Der String %GDWORD% wird mit dem Suchwort ersetzt. Falls eine solche Zeichenkette nicht vorhanden ist, wird das Wort an die Standardeingabe geschickt.. + + + + Language codes (comma-separated): + Sprach-Code (mit Komma getrennt): + + + + List of language codes you would like to have. Example: "en, ru". + Die Liste der Sprach-Code, welche Sie benutzen möchten wie zum Beispiel "de, en". + + + + Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. + Die vollständigen Listen der Sprach-Code finden Sie <a href="http://www.forvo.com/languages-codes/">hier</a>. + + + + Transliteration + Transliteration + + + + Russian transliteration + Russische Transliteration + + + + Greek transliteration + Griechische Transliteration + + + + German transliteration + Deutsche Transliteration + + + + Belarusian transliteration + Weissrussische Transliteration + + + + Enables to use the Latin alphabet to write the Japanese language + Aktiviert das Verwenden des Lateinischen Alphabetes zum Schreiben der Japanischen Sprache. + + + + Japanese Romaji + Japanisch Rōmaji + + + + Systems: + Systeme: + + + + The most widely used method of transcription of Japanese, +based on English phonology + Die weitverbreiteste Methode zur Transkription vom Japanischen, basierend auf der Englischen Aussprache. + + + + Hepburn + Hepburn + + + + The most regular system, having a one-to-one relation to the +kana writing systems. Standardized as ISO 3602 + +Not implemented yet in GoldenDict. + Das regulärste System, mit einer 1 zu 1 Beziehung zum Kana-Schrift-System. +Standardisiert als ISO 3602. + +(Noch nicht in GoldenDict implementiert.) + + + + Nihon-shiki + Nippon + + + + Based on Nihon-shiki system, but modified for modern standard Japanese. +Standardized as ISO 3602 + +Not implemented yet in GoldenDict. + Basierend auf dem Nippon-System, modifiziert fürs moderne Japanisch. +Standardisiert als ISO 3602. + +(Noch nicht in GoldenDict implementiert.) + + + + Kunrei-shiki + Kunrei-shiki + + + + Syllabaries: + Silbenschriften: + + + + Hiragana Japanese syllabary + Japanische Hiragana Silbenschrift + + + + Hiragana + Hiragana + + + + Katakana Japanese syllabary + Japanische Katakana Silbenschrift + + + + Katakana + Katakana + + + + StylesComboBox + + + None + Kein Theme + + + + TextToSpeechSource + + + Selected voice engines: + Ausgewählte Sprachmodule: + + + + &Add + &Hinzufügen + + + + &Remove + &Entfernen + + + + Preferences + Einstellungen + + + + Volume: + Lautstärke: + + + + Rate: + Rate: + + + + Preview + Aussprechen + + + + Available voice engines: + Verfügbare Sprachmodule: + + + + Text to be previewed: + Text Aussprechen (Vorlesen): + + + + Type text to be previewed here. + Text zum Vorlesen hier eingeben... + + + + &Preview + &Abspielen + + + + No TTS voice available + Keine TTS-Stimme verfügbar + + + + Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. + Konnte keine verfügbare TTS-Stimme finden.<br>Vergewissern Sie sich, dass mindestens ein TTS-Modul auf dem Computer installiert ist. + + + + Confirm removal + Löschung bestätigen + + + + Remove voice engine <b>%1</b> from the list? + Soll das Sprachmodul <b>%1</b> von der Liste entfernt werden ? + + + + TranslateBox + + + Type a word or phrase to search dictionaries + Ein Wort oder einen Satz eingeben um Wörterbücher zu durchsuchen... + + + + Drop-down + Dropdown + + + + VoiceEnginesModel + + + Enabled + Aktiv + + + + Name + Name + + + + Id + Id + + + + Icon + Symbol + + + + WebSitesModel + + + + Insert article as link inside <iframe> tag + Artikel als Link innerhalb Reiter "iframe" einsetzen + + + + Enabled + Aktiv + + + + As link + Als Link + + + + Name + Name + + + + Address + Adresse + + + + Icon + Symbol + + + + WordFinder + + + Failed to query some dictionaries. + Einige Wörterbücher konnten nicht abgefragt werden. + + + + WordList + + + WARNING: %1 + WARNUNG: %1 + + + diff --git a/thirdparty/qwebengine_ts/qtwebengine_de_CH.qm b/thirdparty/qwebengine_ts/qtwebengine_de_CH.qm new file mode 100644 index 0000000000000000000000000000000000000000..aa8ed31fd95f20c1d5abbb1fd27d41045172ce95 GIT binary patch literal 118433 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 literal 0 HcmV?d00001 From cda1cd51f8159a9ae2b775c24479c044034aa32f Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Fri, 26 Aug 2022 20:36:01 +0800 Subject: [PATCH 08/75] fix: Win Specific, add help files --- .github/scripts/windows-publish.ps1 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/scripts/windows-publish.ps1 b/.github/scripts/windows-publish.ps1 index c5e8bbde..436f9656 100644 --- a/.github/scripts/windows-publish.ps1 +++ b/.github/scripts/windows-publish.ps1 @@ -47,6 +47,10 @@ function Main() { Write-Host "copy license.." Copy-Item "opencc\*" $archiveName\opencc\ Write-Host "opencc config files.." + + New-Item -ItemType Directory $archiveName\help + Copy-Item "help\*" $archiveName\help\ + Write-Host "help files.." # 拷贝WinSDK dll $sdkDll="{0}Redist\{1}ucrt\DLLs\{2}\*.dll" -f $env:winSdkDir.Trim(),$env:winSdkVer.Trim(),$env:msvcArch Write-Host "copy sdk dll$($sdkDll)" From 54389a72ebf0c5f58280716a4762ee3794d491d3 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Sat, 27 Aug 2022 20:31:12 +0800 Subject: [PATCH 09/75] update help file the original qch file can not be opened by qt6.3 --- help/gdhelp_en.qch | Bin 739328 -> 786432 bytes help/gdhelp_ru.qch | Bin 850944 -> 897024 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/help/gdhelp_en.qch b/help/gdhelp_en.qch index 0a7adff0ffc8435d0cecb4479bf48b897e4bc6f9..2b8e76d4c778a30627f1ca81a3c320fd1e37bc45 100644 GIT binary patch delta 33189 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 Hq(A--(b5mV delta 42011 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

0FN$6=D4;p8>)J4a%>*F>8( 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 M&J|MBaXIsU0aa0@;s5{u diff --git a/help/gdhelp_ru.qch b/help/gdhelp_ru.qch index a521a9c4b0312fe161bc2997e50b26aa0380ccbb..f681075022fe287efe0333aa6d98071a3a294761 100644 GIT binary patch delta 44445 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%0A-`j3t5JSKvG2mr zF_K?-YHl5$b*~8aj_WNV;|wfReFT?8yuMUuOIUCy10VY6f(;kzlj!S$w@*l;{npzi z@@vneQ85%2)dNi#>!e=Ck6M06`6Q6Pj9ZKn-9MI-|0bcHfA^IY!2_yP%Izqz8=;X`Ya+uuT zv`7&@ICcG<2h(WdQjs9|T+*zrD=wv{=AqigvVC!5^5hr&?D~gcIhwFTGe@MfYijY+ z6@G35-0TMl>pUgOo$@_?Ii{?OD$?Hkz5Ro%(s~*0H*vJCM{imp+qE-1yP@K>iGh#p zp1-?eY}aK_t$XZ#Az*g@>`g7=oLzaf8vdD5zan?8oLNHJnzltrZY~pZ*QFS9Th=>r zs8%nLXFm7?Hc7TiYf{I*JS*?~NtB{z0D_+*CS^3D$hcNMC>l4OZZ=+VdV&Enqs z9cc-k;+USaUFlzdIedR;iRjO2eRo%RAhSQ<$axMiz=5&>Xul!rh(F-XLD^49K#~7R z0{Tx9(0`JE{*wgspCq9FBmw;=3FtpbK>tYs`cD$jf0BUyf1U(XLlht9rGSzq$a;zj zZ8!8v9%jt#ji9}R^Eb$~tT-o3kTCIR!1s}ACE($1!Cxa3-20LL!l!DCaEZo~jxRVw z6!r~wHx6>I*bgL}U>=Dz3+YY?nPp5o<9*S72Kr+*aVEwC-Mwgg4Xnaa?&yy4^75T) zCaD~C6#KHfPq#?Ii#i@4AP4|>-jcurk*fj7)&Ka@a~=c@lZS@|#6P7Sfk!;DvNhf~ zEJ>ob{noTaq@tVt>>$F341YkLiu)rsbVrSTgOPGbIzk$bdm^yB=f*DqpC5aaWe<&B zcsNgDu;vcW?NNDcq=H&Sjfe`JI=)qa(_!@sL5;N*K^!cwO9g(@p}x3ERyXW59! zMsTbb&}u>Tbl>RKr^Iiz3j`5!Enoj7L0m_;*i&cFR|W`NH{Ah@yXH0OY?3b$OsDCs zi)Qh-kC&{J#rzk))ONrYkhq=ml!F_V-pQpLA>b|{)28PYZE;s5>mDlLS9{g*Z9|pMx!Cri1YSC0bpX zB1*rrIPqdw6Q$0ju4qtJYo(pYUPYBO9u5n zV2smheMz2!? z)&w;f$(YO|gk)Jj5XRvZi#E5rAGwgx-cpVaMnZwJQ8Njjf`W6D!)s}_wskNlVtL=! z@EE2Q>5@14u`z$Y^syAwpDJYmGMS50A#YXZsix46#zrykHt>Y|1_vLt57tSIA3@oR zGcIO@g8Zow-(0RA&HsYS%E0R8b|S8>loLa5UgHvf^8p{FLn?=+1OBm!k1{+r{CYd| zMDHFG8Ov3IdS^FjeTm*W4298jf1Oj9C4Qcz)+Cy(ek3t8);#NnOZt~^&8!TvR4@(Q zq4)@oLgF$kfisgT`EU890VxG?=VK!jW|qD6^cSKk7S`flvt89`qhNK68Lq-uv3?=V z-Us0SRAs$?Y3G<@4qNa!%$2Rs44kFK=9ye<8t>O%+Q6oJ@!;aw-ttwvLU%(j37~FNV=^DB49MU?`C(NaXwlW+mzCd!Rs*y4kOBGQ z{Ka`%&oS@S;dA}L4Win{isd%<-&EDubEO5G5_eFVQibA8rm(Os(P z<*g$wBpzsq@L}b0058LTZdJvosrgD1KQw`un4BgitEdX zvQXeehQHKsahJ7(U9lHh+kskznhP}*mg)_;O9pFL0@Is?jhHX=P~0q)YNc}GTJM)9 zBjc47J0elNp}rMdc9C+aY-_D_71Pl#N=CNMq{Ph_jGQIc^y0y6fLYlaiy;9>wM6r^lhg}}@_TgU z0ygQ3y*}BIJ?W-+gi7x-rZwc<7l&GO%YewyJVFk4m4$q9g>WaCv`)cpbsPOAq^=Z? zo&`X{W=D=(!QeM0Ij8y+7o_NqJO`l0J@;%&1o}qoHDMIgL(n>%<6Db?-+iyl5A6KT zmmDXqCL^yE9TDU0fcR?5~279-$XJ zTM9&uoykR}THfcQym)u!qevj4ug0sF0Zz43h)llO##v)8Uz>#JAtvF7-=-T+I3Bnt zPKoTC>6gsY*tBm;?j>vsJxRF+)unmpz zShfpQ<1n$GB-sDx)P%mJg!7=HvAZa%er234mgWb%IyC!dBl(Ri z;pkWr9uX!l5qQhQSV|7%@$sYSL3`L34a{|aoaI#YuE|U`|JTZ?0NX-2XPp8QqAOgjjn1#+-#u@7*P5riV>))D)_)xfy^Q%1y zo{&o>{!rK}dP$liNY&*UDufTelABStnb_*q=L46R#God6ks zFRPDLh&cWz>gbj`>syF(0c%=zYW_WlnFF#T0MMxWMM_~MjEU*WC!Ga%9pD`(b5QX} zFAU{ea~x_s&H@{(1-emWC+aAP7y_c?k@)Dn5NqP~Rfr+MY%R%i>{Kc(rRLH?a?^E3 z6QmYa8Kx8ux3K7U%^$9tF{a5GO0&~meE*hD9`qyc3Q;;`TsUF3$pWvLgaZ`crv`Y4 zXgUT;be;iAX?%0?B&n+e*_A%u6^gY_;6l|#@)&h_B9Rk(0#{)ky~M4lP!z-vhlbqT zTqfZJzlfM0bj_yLp+qC3qHnOQ2b&Q^A~4T0u=VI3{^0=qVUwsrmCltNFPslx#{l!XgJNye(es3p+uBW8N3N|O{?LzSTnYJ|mHYJWBF17K5%sdui* zy+jt~#koULawob_;~tyabeGY5VOtnq?Yyv4RmbrBkE+AIOpQEgb{apuNC94rlW}hm zkF_@$SQii$eN>28B@unnM%=v{bvK6n)M4yPin5gt0()Gt`-tj}z46)6!5SBpBhJ5j@QUuA}|waW_3+r!Q|&*l2SiQ z2a8hE7t`8cSqP95cy6|d{)KkSQxvINYQTjg;d;hFm9;_P}kTi&PJI@M-{*- zi6t$};gX-;sasz63C=g|f3SffFIrhy^7InWphQO&==X_k`!Sn|yV->yY+Ojz*|@hU zn&KM{kz>F(i$igZ5m zepZ3UvWh}5KO`2oHq{`Yshc@H5{+>4tft(wrOnCPF_R7Y{i^GgG!+QSDwmwb9lebGO84*YgL>)gbC#TWdz-DA=XmsHR4r%L2d}{1H*?W4L!2F$ zVVmM%sS4QIXMEM@{_A=!EPbHylJSnW6NwG<0WmAw)+^Nzmbydb(cNlQm^i@ zjK1$6aGT!GEfE!E`~U=f?L>-5U1#d#t{;lGqSCp70-mzxEJ|F~7U|aRrrEX8g%V$p z7o1fU_J2{!g@U3OD04WB8KS~7pW!9oL~&SEZW?A0{q-@}5jeIvDrSQNBCI*!W<9k^Om6bX zM7QM-%%~%Xl00Qn&3DWtPO)_Ag_4{kqtH3EZmjgT3v!ip`&ECNX7~Qm+>dl^b%mjh z0(*(!v}6^@FqyuGCKYz-@SuBn7375v5Q&M#l$Rn-^$q>8`C6r7dfCCl^!nW zM@E>G+ZPa-lMQ`T?QMw~17UN>454%oygXM|EHnt%%gBnSS5>MJKXXq+|((#_#Dl?I)Qr=`qPV)1{mjd-~ zoztY;m2W%Wd0OQ!DD3>mG&Z&F?xFG1 zep%%{9~HoK&N??`P^oj>H?xuYF{O!=4|lyQZ)`XKlNlO!4?gfr%K9COQkqbg1bK<5 zmM)XbU(fHQ!M&pt{SKOgxsNUsD)$wu|;EaSkXxXBNx}==7pR6 zoYRS+dGOH05aNRgcHZ=}!1pU%P#h)?IxMZra+2DB~t2r&C-C6bP&iid2UJ+pJ_B6&RWPy)U=hUc7>JH z5PN`(66WKbd!!ZE!^%QlUce6KTFNwx}!zKPC}T@^Y# zmDf((DZHD4s>aCHiH0u;Q&#tZU%V(ci5Fld*>s5Y zNPYx`?iIkRPruGVpxIngD4Zr5Oj@XLh{}_+psD!WC7j7O7@?&>X(whRbB;z^y+19% zuSC677LWToz0_(}nCV6>kmzGYX*kjpW8l7O2v-)-c9dXgDqNEw2#95Tk`C#I@Benv zUpE{2GFvhImhQdOGIP1)1K0XZ$iMPTmFyT(64Zr%d z*XR3ICp0$V9uVVnX6XDZq@gPE(}k5)za@QIWn`Hm7>5s!MtnHed}=cd?X7MWmadq_ zOQ>3{<`G9iRZ?hJijMgEI<<*;!U9-Rqw-Lhn4qk>3W^OYbbUg*ElE8jIk+}v}VWe#MoX0@^nNs5tQiQUSx{p8wNNC-3it{6asolp5&m_|`ofu>PK z-<2;Fb+A03k$8}|fJ{AEEIXmG2*Y>P9@O*t@Kj{*gCpwPxd-wGEuTDkGj%w>u$z}m z*{4v{Pej}4TLcl|*9Io|*M9Pv#Zy_iEbn$Z>;mMSOQ-Jcd@yS-ztFw@R6}&m$S6S} zk)u6m?^N@Y1CHMkS;wJ+$LS6$`^6_Cf*Qm*`KFlhQwmiJ^Lp}{8Kv$Lx^|X>heQfr zkBa<=CDyeBz8c)Ht@&{8n zsZXH$rDO($sI?c%>!+`Cg!qWL!d#cM%!J+&Rn_0VnGZ-1YugtZ!#JWPE3BWIJREy2Fx?kCCy+2aGXpHQdaW}sl5wRU% zO>8EPjEv-E>)#T+o+dg{e8_qLkf^^Ph;u@O1>{-+0Qf2%Sq0j1&O{RE?Yo-t;*7Fk zq(K`1aSc(LPK;7N5ROU`Ww{*=(L(&3no4h1Y}&k8e}Eb)KL!jQYe|Bpj(0h<|A1}e zf$H`}EoZBWEf#7_{>py3ug|^fRld{Nm}Xi#uG%noA z)RDMTd^;m;Rj^oi_a*C;wDKh~|G4K?@?o}u0&`=wM19_unkGb1g>d~OkwFe!<>rnl z4+vTG&UoJO+)EO4OP;LX^==g}ca5ssr+#MP63^L=2!7TWBF}q(6Vm%O1h zxJk9J`*p`MfX&QwpVB+vLLfwltS8U|Yt9Ys$d!2u-<0kQ_&_+Q)am=$liIsV6Vag$ zhBxxtru`kZ+Y)Zo3ZlmKDbz%2`Pbrcy+cZ7 zy>RS%pn+6Ak0n7u-r36%fOS_lt2K6~GcfZ)iJ+c%yOG6erkZ>}!-$_+ngu9#B@JG^ zu$+~-ef`Ss&BUiY%~O>xk><4>Azqs-9uavpXhrt^!KwsFjN9sv1Za#A31GWU$T?Gv zrBnU9D`Bth5V?6La4}(;fz2y>%G!p3&YIPfl#;NQq9>KCqTGXbOKy|Gmog%syBL2x z5~h@75P0pJ-Cd6iT_L#2-G$$~!X~aOy{!^5I>TTl&HOZX`Kj(>^5~s$Trs+}ZM7JP zpPV-rY~JW`qAKW(0u3LuvqsUU!xx5tW;%a|b1Vi>EO0AbH@w?iYDcP>Q0yi-5qs5W z0Tbh~{HCUxzH`1SSe4HcFpNfje61Dd-fv!sc={M}v=g+5JyfTek1O~JCbW1I2dv%j zk=$2$KIA@m+nEEQGen=y+y)U=%&RT-1NplhqqI|uZqWIJCe$98eQ8iA$T^|^`UO#z zVbnU2Eo`OeF!UNL$wRis8UN&6eyoVxMA-WnMl{RIu$Z&-H(QAM)I`ApLJV1hyiIhZ zvtl!bafVQhRNr=-+@JM>2@p*9t?yJ^vgmT3PIv?*UMj98<}8F~6tRn~(~9e4CK92OHvtO$lrI(Jh&g+)ALwGB0=j zg?u;{C6AG$?AA$&Z0ef#MXvLvKI!r=<3i(N@qAQ6ja&0}KaEZy_jA+9*LT8bxpeUa z4Giu|^6^mYBm})W{@;$XFK4%q+|koiiL%Hn&stN<2`MXK4IQC8Qcx7Z|b?tM`ehhv#DfMZH+!wL7!0 zF0n;sF;$sD@#m*klR%ql z8j{2!;8nyB{!6Pg*ohuZ1nU@?!c)V~O^K@OY^E>>LkLAv4Zq-Uf2-+^1~2nsb2PXX z+KH~U}$&CZ>$F3&(TT0I~VgkUiTefUDv+d+lZek5Y9lgx(X9WOQMRa zQhe9l9N71kFCWhmf$Qf9ZuOBumUPRER+{LjqVoXuO{*yXV4Q9Xru-laV<-JtlRd^XiL`8 z@ix$?dVx!~x4suyhYaW##dsp@nr&bi`}A3xcBX8CdF!;ITVI)@pB>jub2wMO;_rX! z!wo&t88QItIs-0Hd2%IP8cNMeRjBjN#Ty0XSqArnxzY&X|@xF_|Zq)m& zhN!Gvj%OO$sXvb-noKT<*RlVEgKg%R$p`4~m#enL<}l=qBz01)F|_j5?KiT!egnxB zC|(+`b9Je*ezjbqUqE}+NdQRqRPlVOj|<(-HL1IcNpwEeOzua=hM?*?&{Swvq}q*| zK=~n!=Bsv@kAiRdQMFga=_p-Qv37LHv)edl3DDnliO6hza}?YxoA7tfF)<44V3>uv z$~wB%7Ok2VATem9_O3HKK4wfzX;FWjG!40e1Fol4Nn8as5LN5f?21&y$xy&}(1tgl zFD7TSJlOGFeM{LJ;?jI$X5W%LO>CzSbBf!b!F`eVJzTWX%M4RwN2lKkbT!CzY;6w@ zJ(%No&tQy^K$=yKP16-`EsA!*lAR&Vs2=)hr))rwrsgDNq&I(s_6%ZuI3=g`^pI8A zmV`Ic%cC#1*5Yb2R?lT1kvd!8mHvpZZoqJ&=J@f1EL)PDy+?$Qt!%Q(p2^NGWIM>rh{!>9NcKK< zNJdd)?~xTkAwv4y-ag;Q@Avzo=cC8#zKnCdU)S{>=eTcHHJ^-DlO3&T1B!ohZyMr` z;Rf>EQ+Gxw@}A&K-TCp+q|h@3TxT~m9Bu2*w zL5F0J;8*OiRSisAsXOQFRw_r*Zp3D{9|RtGbY1(0GJGXCb7hm5g1W>CvxA3;6|n{8ia)rOi%<|WY9niSLt>kz{7oowhg%qK*i-cS7mA2F*U z__t|gitvCr!ai%XC~tmHSB!@LRphCuR0=H9v#APC}n(uhIDH$PwD@ zz+Co90)DVt%y_nWA~XGcN0R{NF=tkekU(nO4>BHoS(fv59@>sCoj-3~6X~AkQNuoP zjO-{3zn!?>Zcl+m6^l|vGWZ-|9+Ajf)I7=ox zN8DP|*Ey(LFoSsC+EC#VEBh8hV|>a}(r;E1e5@>c6hgL6^1hbGqMe;9tENL0Q>c{RdgsQS z%_}#BPM<5|O34vF>#S1H^R5zgC-w5ey4i6_{(9~uGf#34mmom?ZP9mI<@-+($i%f? zqpJKX1c(!JGr!;=CmkFvwc%p)SKv?3TlezuKPcu6!VHw|KmF6fcyOykVi6|E`m~8i z@rJ#u{+gjc(0X?z*(I?T!q8Fobsn1p3rs6c5s4)WcdyRWh?+3|wU8wZYITwh*r;{! zme>P|h^$PShC9`M3uJyY1_aVjxKc( zuqFtq__i1&d9^c=Mc~#Jt#}~$iT2`IKI2O*8NT^l z_cl}oyBvH(ifl6;s5~sz{r&XaJ0rA^gGe(ak)0v_A9U#1rMlo7iJ8r}#6{!Tm^DMq zfA>wlv878Z(0fTzhjpwV)!b+>y}_J*(&YWqc8YCk!-go#L=2ba^+$51)|st>#++=q z1)8TTPkvV6KTh8MRdd3kLB7l^=_Ga%b*Uon(n!=2hlUTTTsF@N7AO`h{BmL)%@pNK z=rW}4B=SM-VJsSvV%+2ody)Fl=31I(CJ<_7qPi zPe(6@6=lGMOZ7t8Iy2Fx`seJf&-%ysa5K4=N-{ic{Gv;Gv0@`hZv>RldL=q< z3jVnF=JG^X({3D1_Hd+^97;Sc$NhN7n4M9w=&Q%gKWSetV}d33i6MV>8iHFy$$PAB zzT_#+&hX0c{&<6`0|(DPQsO84b?nI5Ph9VJM-`k)YjgVk;jhXmu@CsO8mtTZN!{v3 z@1$gYn~2!aOth+(e1)67wPr>G~Xhpo|d_<#``m2>JknId$6pkst&h63$uBUnUz%4p1{_b zN`P=P_526wD`Y(0zqUX3iwV!8`?n+vx6wX3-?VT0Y1ihx%&A`(R7V{=@fadByl%3) z;p!rXZ~q}?BX6iUQbxd}*5LKZ$Lmw??!ApFocM9_9NWd%&s!gonGSo8N}t@`aAI56$y0xSRHdl zyBnHCUcjiuqCb?mon&jU~ z3@gaC1*CGPOYWsyD<5|X3lc;Bl5!#Or4reBSj7Kp6;I})zSyiQtcJRc?r1o;77eC)~H*k6DR@GXb#qu}2qhs8ZQ%RU97D}-;B2SM6p`1khK%YDBc*_%0kh#;nWh@FXqP{kmZ1_z|}`~ zt}1#u{nFOj(0k=WA}7c;-~oTofw~DhAX9Epr%NxFxGV3Di#GoB`zq%h7ovEwD~~i} zx$x)US#&~a_7kL~0pT~fSv!2KrzH?V_H~~okhjb^*J+aTnMRrxQt8pMm-OeFSnLbA z6c0EYl}O$Ve<&RPE&uMpUAMS~8inojXa0qsK*; zC-16W9`?vRd6YRtQdQwp5FuHvE^0Pr-+*KpFa7(1h{5Z!E9*)BQzT*JV3}~D6n-5i zf2Qu!YFUyZDf*4V5DmBQ@6m7A?|jawaQuWiHEW-Mt`K>O^HSHZ8_ z(T_T|=u)(61vYTr!oCIDb>bG8rfes7ZEi@NPL0ZBx9bYaMjDt322Q1+`*00&Vk=$` zM}4KEeqkf!KrEP@;+SEGM>BpmxyrKE`WnOIWXXR7J+8&(sYzr7c%vJ2<5?{$vq45n z4<9LhP-?UH(qPCQ|?PX0bV`;$$6zaK-6Tus;Cjf=&xrfib0WIUw( zgLJ*|=i}h_uLIs0SMiqb{0xtO?XG%)uQb_TX)W^}zhV3P&w#G_y{eE1bmQ^ajn@AC z#>e7?(gt@Y1#+JKsb~xs`_Y)|L1N4mt2)21K%OT4K#;RsK=_%j;CHWJ^`xZcJZGx? zZH9PbM6K9-Tgbak)sz~Ef<)7d0R;9*Kjoud?A3w!AH`YE7Y29i(|%FQt7JL%yO#Gq zQWN<;(i2vt6`qlgjeZ<2+K<*yHWFvX;o`B6_I-&J9e1_sMQhf;1up$YJNS@&D7v37 zyCxtr;$pwXEyO9;M7j9#gVgAud0SuXXR~iHJKtG7@G^d7`YN(St*9~%?EXuE-U%9L z-r)hcP!fCf9QHPt%JTiwMsNTHvjt{BGJ?D#rdWV zj%FpP%)UK|!B2viY3aX@K2e z0d0tDK?EzN!Jb$Zi*f*}GoU-5CviK7V8e8I6H8-JK0pls3fDQ!y;HU6n z&`ty)Sd=qR-2puTeF!2!1Ro~GpTG-?3IJ*_U>IN&K@y07VK6ZS53#6Npe6t&1EvyW zBQHLT2~&pd9SNO{NTWjLX-P3|+ysz;_&|^#pa`Hifgv!{`MoLyFg9z18CcXh;duhK z0CxfR37x?Y7R0z85+-0#M?gJ=Scf74B}C){0&ZXe@QA{oLIo-@ASoaPQ5c92!bDLM z`Cw5rK&1y{24p8n01?8NWG*7e)7(Ji0~7=lA-eFi2qs622=cTzP^AH70TqcZJbe>W zszL;LS{0}ofI38fkyso(q8jj1L@^D9M3ASAz%?^KOF$c<3r~w-y6lM{PdfnB8PFZj zljy?J;+R2iBFNJ|Kn(y41`H#*@U#SGCXxv9bQDly0TTd|i7q@XX`rsQF+az5H#?fm z@cpehL+Ey*pXwsf_n<-mff;}~fcZrKdHS{BlW&nYte@>^W#2>Q2Nz2LD*hY|Na#K>K+31wB+g)Y|RLv3j%7OgqFYo{E!1=lA?5dYEXKo$QqQ&n)IWo?Xb1??;NnNj{Yf$;;Qqeg|&rx}ieubpL8o?S=?YY!&j+S$@ zUu0e}Y34n94XW#0>ODvQIR-D1uCz!YxAICXeZ|qMW|scbpVcMDyt!+&Zt|~sEw0AZG2XotS0ry z2D+?z9;0y%oiLDPX(-F87!4w1Efz(LJTDzmKng$_q#iKm9gGnjvIvW!2P!ilJ0LgG z5=5wBYKJz^Bvh-?K$Qhl1XM*{6sra%KphDcs|HYY0QCTk zkQc?OiHR~rLd9wZR7*e`KnLW7DYP)jPDrR&oq_5O=n3e9yl{p#CdVHM6>9)cg8{<; zqmUQ&(7}|(AfaN71!@9dGGHq5!XtMv4X=<;v1R}@2QVM72zgLB0<-~{r*H~PK43&i5&edf-O z$~M-yM7*W(@k3t67?ojBGazsQa2aqN`JZA@D26co) z;UkdMFai=}HRPZ|Br4>iGzHeI2`2}RMd{(x0_PY${lQO;H91A*L8ie+ssd33vXc?i z$#Bj)8P2(#%m6I`ZE!Art?8hzrZ|R7lhT-2qQUC7~Mf9l9B3vqrRSbSQ7PXIev3j%% zeSVn|gOEF4J*tAQ*TB^P&M}8_YL7`i#Dj|W2rNoZA=aVr!E}y)QM(S996WrecJYBq z3`hz{fqzlE4>6_G_)zWA0F@q)8IT?SqIMlI4P5w;J-LC(2Pgc#&*ROoJ35lx%6B$^t3^suEr#+Y8gBP6#Di z1E@NHdVofR7s-Bt88jt?l5GZ5OF$by2f~YFdt+vt2%%&<1JxbS6VQk7BH2DAq3xgZ zKmH?2tbRxFxiToxfuZ9tmOhyVng>8&Fkl#96ybl#_E0lfKYCX4=ybj39W)()iwS_q z5Z|Cu386-blMcgsj+6f1k_MFxM?QT_gC)U5{(@%SK{;v+c{bs9r~<(9_J|-1dH&ot zw~Os%0}R;!b=Y!fd#Q94!!=F_mBj@30W*LLgx`_y08Cdl0hFN}@E!62ivUXrE;1B| z8LS|HGE@oFTEGUt7J`cm1z~315kMJg2Wl5!FJM2xMTXGHN^;kJkW+0X5TWx}g1&qA zGQX>!T=yEnq6R_W2;cp15AcUF6N(AQMukDI7Ij|u`G7@$rKpQVz*9_A1q!lu zB~WVt8vt8S7v2uTB)>yJ-fjnK7ho@7KQv{Zmq$1z=L-t*_8?G404D%vP#4~gz?9CT zAa5@Kbs2CSa0_+e?MO_+4hr)2E>QOYj{r|m7v7G-bp1m~*P+0~aY20Wf8zh9xoFJb z<@0Hd6sQz{G=TK~O>@sMGfd~x95Yba0l5MB{+s4v$VKaG43fgUYQ6DQxu;QV8k2m? zUDcY<&QTBqiU5iOO8;+~<6&R+-s1Sp8capb0BtV8MMXeWKn)xO3Y7taXF&FR0U7yJ zkPb_F7iSAvpeKXZmTU<_td{IbuLkKnnOpPM<@~8GhcJfl3d^ z49E_@$Y}!9oZ;uq8K``Kf`B6Mi<~Ax%^7~)oPjD0C<~|vzo>>6P;-W#H)o(~0O|nh z!7r*I32M%8D5*w3H3PH+w1Hn#L$bfS?T?}8J42FFvOfy>##FLseNxKJ{u)Bf83Z~5 zx&wN`|EmW7H}g3u9mf5w31j?Fa|Ra!0D}R;;7~QdAHd)bpsX4~S3N?9Q7Cu@I4Fn%2Qv7!uuCX>+y7fW(1&%Op+eW47_qyFa3*L$mJIiSo~8$bVZwbG zuz0?x69fX5iV48Lp(;uR-!TI)2QVLgQAKH(s5fw^ii&_*3RnqP3%{tMbWAc94pmVD zP+I`o0lT2z@Vts%VRCxTN4yuP{eXjjBma$f2BviUe8eY!Is>=>xcuLUXJQ)G&PRM5 zs9S)$fcyWAcowGX@O;FNfO-nC4ut@#0>s6DXJZEO5YT|*1CxALT*tXMw<^QLY~n!YR$D;b z1>6Tb!nruND#u_>aG-OmQ%J2tf#v80@o}@kxK&_Y6XBXe%?w;41*8C^!7Tw1FiZs< z?pqUl$b)ZTf&}1ZW0miFyhmV3W;iYZQ1u9S&Ti2V@3hhj`wDIx(`Z5$({D3UsC-z*4|Uger)5 zkI|?>)M8P!Ky3hQ0c=O;fru`Q(R)M@7S#pRUci39L4+lU_<*q)Mr2@7BS4)1oB>=w zID?38jQcl40(8y?)OEluz+Hq7h=5@N_7KqIwGY%Iz*C5IDCijIzqcv)VbBv+`5{NK zLeuD|H#^pR7cU#Kl`7aeYT#X*ZuN%r5V2u`GZ2uiauCwMRvl0-`Y=)2c+ljh1ETc+ zjR4J{jp})}K4OyZpKnDifocQj0O*W&VZ2Y695+13c11GNjV7qB1iV)h&2`Gwim!~J~oc8B`qn~F-eR>Mfe z`Br{Il|KjqM*t@PXYl@;{RaG+x0B@VTloCd7lq~}aB&%M9dHXGc*mpf<-;^XQksnX z(y~1)Dhv#06ksf10>uBu)c}Sk2RDGmRSk}eap1&~rX#k_*EmoFvPy&lQ|OE6hxTmX z%Yvb4m>C+Yuh73y5?`@QVq<$Mvl&Ji^6h{*({^6ZHipw+Xq5+o%>XR{ZT>fZFDx*N zR+u;AK34EOU)h0+&VcR^-=I7Z&`ByH9fp9mcc=sea>|ek>+6Sj3jIbJAWR2P4_ZW= zzt9n|Vk2;e5jzmL|KAlG^sw%iaCEpA4+<9J3f&0@*C!(`dDeAUkfLYjkiw#NnxB`L z<{qu)RIqx(0xkhTW7V{>$7X`K^~;6{!q8mSga&!l0BQLigRz~~(7(zV-`F!HuMjAy z=}xbCpRK*`F`Y-Z9PUph;pG=hb>83Gjl`dNIF=#qAN~n~f0j%V#%ra>-`qhYeSaF7La^3?YA|OTP&H`8kM&`^$h< z=@sp;OeC4dT@SKRO6iA>%IWi(u2e`oW8x80C5x=Jn(NhWs2+l`wLKIw8(g%LZ*8(M zPd4WW$+?60z20R!3V&15_&Y8R9as7OXoyqU;(;{5lHk4EtqDPCDn=^i=Cy=`#W#7m zs)A>|hZ`TFQ)?otU(?SMv41=BAc}WL@-H{vojHyR@Nq@OQV0vk&%gGK)l}XT(lr$J&+B>U&{-U5h04FLRTlhnBGG22 zhga=2qE>UCde9vwxK00OUjXcc1$q*P%y20CHg#p5Hv{w-v~jQA*)#SrzTEHM1@J`L;6}m>cg7VG^WLj6wtIkQxL`P>VyvF|+S)V)9pa1kNhc*- zBK*0q^Gh<$*cfH*@|9%_viU$r`>sF<2`-Lc12fGo{yo8KB{6z zpVaf%RGxe#m0srK!E~Y9!7*3Z_Pg(Bm>76H zxiii97Oy)sMw;eoTpOxFWS31SvkP@ah#P4f{`Zb-cF9c*K33gTx%y|OHylD44@_r7 z_X#l`zj>Db=ndRFlv+P*+uQteoi#Nr>FK0xi0#QI`GU(-8uYTZG^$GJnX1~0xEAQo z`J*A?x41HM4my(LqT1DZS+3*}IQRW-;M}J2z$7uLQ>PF{EKjx^y`|uC_%i&lDfv@) zxIw69L$#k`+DHn`ADEAh;T@9Z$d7XVuYQzt2WOIR@7rq}bN!MeaGZW9x_o!W-tNlF zs?C-qn4a*E_@t~lBjuCc5pSMr`BaR0Xr+*syHBkTtz>kGog6|$-^gyH$bQc+^hp`i z5Es)Kc5mYQ{9%qwE{=i&-OKNesUKmy`~9^y`O>FKK?Ckwt%i3le{#QEVe4VGxY~-Z zj=CNc^_ZcGo&dhJOx3O3eVEs~p~4)(`ZcJl`bdZgKJfO|BB6h>gbs}I#-zZS{}_7I z&Y5E^k82v=ZSRYjN}3uU>G9ggV%vk!0e`K9d=-kz`vY`tEv**jb(d;7ymxOCoJJZv z>hhtL{)N51_uH;jzuBT}^O$<_%avXEY${RYGv|2N0sCv%sg!fHSyUXRqg6C?S(N?SOyA_p&5YAcM zIo4;L=Dfu^mUzzODbHDP1}y$=nY>tPd}M4!B%B`jTZF#=SD2sJTIBn|)>4;5ToBr- zfgy7&(n0Px1^4B>LV1TVLDMQkP3L@^SRyzD3N>6fu&+pU3I~Us>FE zpF8j#aybmooB93u`s#}Ln1SQLLE^p}nv-Q-((Ep!_757W-6dWj{;L#h;zF$N3)u+Z zq-VLq#>v+77kGMaLJd0nVoi_g8ctz0K@xzMT1_HuGS&z%aqKvl1+k5M;i z>JPrE%++c7qOQ;sHpDMj*Tn@Ig1g1r@lc040TuHtNETb3a-{-Qr1#xVQ%DnGZ`6 zZ*?3s;CvB&+qHM|Wz+UsuN-PV={4s-&adriU76hQ{<}B7R>g1fJMKB?(ciT(O3M%{ zTcA#w&Te~zL#4DmQ(NiX#?o$~~(m!+xY)s~y1el>8O|MXe!AeFzkz1vfARt6{j zfopO4a+D4thH)O2bI;VOAO2-kjf`QA+@5$&Z=8s8ZG#kP^1Gk%ZP$Z(*_&?sc>{Ev zur+={PKu1r?#+o&U#YGSeMsuI`*IcGbD2lo^TSpm(G{Fz8IQ1U+-Q?sG$A zdqwT(kLJ1xdTyK_RenWE*X|KZ;K&TSlnbcQaN)G3{<=f-Mcic+Ca_*7^5B*QVH}<7 zQCM%@_v05+As@z{zJh;te{oCqzEIw6G@Dm_&BK~pWfwlPEt(3xmq#m2@l(s!>w1m< z$ZEytm!fnf5iEx;e%I&wdsu6K_!F2WO!m6ZI>lyPrjKA6HE(zqz8{?as5aLRCRzVf zzzHv=>j`^FSheO-8t#vg+i&6@s#Xelb219T@_RT#lU`1I5s}UOHXz8#<*q$?zY@Ka zi_RJypbOh9s^Y3Gye+1bng1ptif4rEi(g^d&X<@t+ee1Z*^5DDYR~=ETN$G>7$ftP zua`4FHK00hc<}d#XllV_++MOaGI#ct8M_mii)MuUsl~NycZ0#C7u$aQ4PIZXJ}QOY zy91w^W|aJ-;x3Krs*W5=puJh|3CmzZU#3$~@WE6w8McPTJ>_#$=g{((@|_Nznk5t8 zi1$3vonpz%rl1K7#gQ6$ch7S9rucaErK@t!_@ilDepdy%WXtq$3tqCS6w1`E?`?`6 z7anmUUrZ6ZZ(;n_)p?|Rq@-eA+;*zCPd$>)0)Kr%lj^;LS+Q=ZZHC9`_2C$LGPI03 z%Ybf7k%d7u^gteofo#JMT{j(ub(lI7u7?jJxbJzZIGfW2%?SnX{_`Yy_uWi20hJQV z7_nH6t4gV!mY(TC=6&-Yqqa~y2`y}I@Nt>G>FNR9=7Dm}l*l{5a=l89z_1)qU9YuS zvHNq*H_I_U+oJznFWz$<7&`rz?jemHxXNo+p1I{vG2iBVR$gCaT>k1)*??Nvjn~^p z`MBc^r`kn{W23SUN$QdwTKb=g*bu#smm&D~#ARi=hqE>!A;gC(lPGach|W6tJ$ZJZ zqsxHdsFs%NKu5l(GV3^&gL~?y_NSdYdMjQE^bYxSr6Dx5%VSiNgXK9%yq5;J4A6^&P;WxO|>oMTQj;qm;yB&CAk)9qSY)FQoUMt9rd!b#}&ao z`t8aGi?ayvs25U1_9s;x_AksiI|geM)O;lx#Yn%22Ry49czk$cy4SKF*AACY{F}wM z7TvOb8#U3ov<|LZx94$7ZHa7VCTOl&`?ub{%#F|G3w&+nU*B^YcPz1bK)F?;+s*7P40ck95=TdTNo>dKuL{;s%6a1yV_ykCe zZC-y-I@vo#7}I>|>T0FCD*y45YU@tufz$#N)ymXie+KX2hSObCy0bSuS-Uwh|NihcZfQ5Aoa|MbpQAXz<9 zph0)b#);$$SzpuBkRHE3&(J(}Pj2wW`L(vR-5oI1>MMU*LA#*{bMAZYB+av>3RjAm z%|A=)mDu5|(&0;bW?S3Zd~LMmQ1gSBQ=EqY6OrndlCwv*-pTyOmJ*R2t4NP(lS z&p^HHopR@L*% z?JP#O9-Ly8$=TuT27j{g5W%SLdFJii(F)NlS!O@uCZ2wc{;g5)bJ2v~?bn^`{^ib& zYClevGB$MXQEgU??jtv{Yl@lNQs_KFhDN%tl;|2IXR5I_7o*FwDOnnOneu&ptkJF> z2A1!aLjQhP;fyOJANrR#)t=b;PhjP>#jWB8rb6jpNKE41ddT}eSKq<~&2EiW5Bla9UU-(ZWO!yH_Bj@dVb8pG4S(M7&7!@9rpX~CJ zZaq5Y!J$kaboywwHF?{Ol(~_?RF&U$n;@t8X(-PRC1(1%-kZ$zdu$F1Z>F=%k?0^R zk?*U#_cd3jk|6Rz9TFHf>KS zoB5STcbtIS`sJ;rnQLNIhZQy!Joo<;%^AI~JTY`Lzx80cXV15%{%>eDee)~#w6BJf z(!$f$_uXM%vmTK!6D^m!`2_gYbN8h*%l|bo9<1A#Rd`7?-YORnT#`X=O-{_Al!3Uf<|2IuqIFaHYUZl|hEeR9`D1%`mY0Xv zOC~G4N7NK4>u-V@Ow3C}op?QtxL8c~59w1(H2>anQ+!#&X#dv)k45eg5halO)7jE+D48DBeR2z#xb2nOR&S;*!*9Pp+WGApl9=z{ z2)eHpeGj@|ZlJgxz8vOclO$Y2&UP_P=JuQ3z3<@IZ4{mrT5bKMcv3?k<}61tkn@NVbUAVa6F@} zJ$kQP^SJSMAE;_l3g&+NBLoB2H-IPdvih73EZy zO;AZQK_4B28MN^TDhs(X*o4nZoRkqigj+C ztg(_nM@Zt<=KSv|>Au?(7H=c4EfXgik1akEJl3p-Lw8NHyR+2!v>!*z)_74;H7KE# zi$Bd%d!{MOFDodf6Gz`-BF$64A4P|#qh81nM7SmM@~D`TY_(t<&GeK*KN!za>Q}B#N4nghYeEDl2JtxB zQLo?HuH=&b$sK&AG;}0FDXc@XZri_z$l9wzkI2X=k()1N zt`_zJhUuf8*iYHL=SjeOI|m)O{!oio9Qs>RUREEO-*hG2r_}QKWFeeWi~RI=Kg#TW z$PyEb=#k8$E_(f>czM=eBzMw$yC+NKPIut%J6$r8cni8xnO^*?Qv(!9`S0&PqeEKf zzIW05X)na3*G-hoCtj!$NwzQPbnA>+e}#pYTqR3MC%Z8?*nRAzD?zRs{pTL;Egt5a zJo2O77ma3aW;}Ntuh}~d+#V^{ZsG4Y>wkUipPlwCTWKYx{ojiVu--ed(xX384}G1- zh8?r0jq;Ow&xRW1yY&Adl)u7+`!P_W0yd2#S`HJL7 zIimhPUgnHed&@j$uJ4MhEjia7>R-Z~x<*j*QJ|n znI5oRtMMQE9eD&9HHTA9Wv%@4CjK7Zxhnpyj(X2E?>9A$p_?r32U!uIQ~i8h4n8!l zuF?nTTsKU~7PR~BSEnz^JN|JX&T;cY7~+Lym}<*V#};y<0fgZJGsVE#1ekN#_mx8{o}CExa^%ccIddsVz$ActbSEv^Yy_-j7Ql<+}P5`?(U4nu~Lhd zTvT+16`ks%ILB63RLz!e@|i!>yA{gxathC`z+!G9nA-8>#>>YZt`ckS|GexrDQUt@ z8of4o8H1r(r2IqO;3+rH*|}zCAxi2k*Ko9)q%AsTTGu_*jXf7H&-B&;I=DdHHO!^IM=#p-hm&!mJF^ z^I&-KD8zT;?|||q=DV1pGxhq;E|=ZeTm2)$cM%dkH^o1W9i4S{>fUaBRCTQGOVcf# z|MCr6(sm)6&+_6CnqQ;J&9Ya4R`M!3Ln9!Ru28`ZYslzK_bEw6>Vc8lmDED=XXTCG9_YO{5g< z9^Ja`EAf|hRYEp5Cp9FBA>UrHdM8p{HL41`puWKK7!KXDQugY{c&gbx^Jhs~Oz-$_ zuvu0nekQ(6eu@rW9jGR0``-TaNC%TO+2cJezIdd&!V*8J&4iq0T&g%b$;5dxbS-V+Le*cTX8G8nalzaEwal4qU&w9dwiyKUt9n3yzI5gsfGW3PT^s8 z1h)UZRslm>9 zpma^DMkNi`IuLB%7%0-)XLTKsida{3=y~$Yd*ku3OaFq59$C-0?sqQY&;aq+9voK0 zt@^UFC8xkNUL9vEjJ?0kK*Zu#9fj6{)+xuawRxWVeU5oXScihHcDDL-M@KSB0gdJ! z+7J`zARpR#wD>2DjTO_?_(ytpdGS;Uyw`+yd-LUL<6o>RNA6pkIgdTe-o{RV*uK1U#>a)U-@64IDRFu3+0M-Au=~@1k**CJl?LMe}05a>cW2J=2X4 z|IqmilTh$<;0J|?4_?BnU#Ii1`;w@jggb(JdFzQo8;b$(+h?fKmOC3(f3oOYv$QJb zEE89DdQXwdu+ro5FuTNS;=fUCw3%c&BhML?OWL0l3b!HoXsb#PqQ@EGslqd}&Z%b1 z_3szA+0xMoD(mF0BsdcnYI}YXsKbj`xt`z?!M%NG+x~ppZod1F?pv1{zEIv~Z)c^+ zxY{CV>C-Jn-0gkT&(`OK)5g{&wJL9&RiaJt6orgFkPK(v+@r0y-)7J}bxr9TF5-}$ z<-3DiFm-y~m*6AD8w)IbAE*&`h$7*u3l>*>$YiIq(QHqBwuBR&_B?Z~y+);0luZA4 zQGxyn!vImcyrw$v&O^4!$$_unh=1z^;>k+Vk=C+O_?#c|HPU1 z)yForUpVH^@);#>a?tgvUGtZ(J}Zx;AXduP;Jaaqwo6%yW?~Z}Vql@s^*?l0sA4rS4tyuoIhZto#wDs74nwrpBiXl|8)0jsB^3~(*-#- z#t{*H2L30pL9p32j*rn>+fi880;d$GD^NcMw%h|Ji4`1I{e6aDqa$#0)?I=*y;Q#S9mDihx!#j;3HU9v2k zQI=Z@LZe06c5K}x1!?V)YPp8%HP&Of)CaU&d=mC*cvyv^%fb3{)Ew!QMur&9WOyZw}f*a|T z626;P2xLg|tY}jH2)2pM@dQ6mx*rpD#pu8$YF!DLOLq^=&9jGmmW_{;Y(HS2u5B?Q zHaQDNSBGBzY8yX?`H0x95E~O4Ct%1nrTW3mS=16BSz7jO#XL*{X88T)FP^|DUAAx* z))>1~{3~}N;7ns@I<5w+RH@YTot9bFP&XH|ur<+8sN-|2&qdi` z$~4`697P-VEMHsWx0k>xHq|9$eXwM6GXxvU7hd1D9y8q+OrW=reZzs(SpI|qZXYiwJw#Pd5g`}ZL9hUJ)-4Aoj+TTrG{Pv^$~V5+{eAi zqo5uprDZLTjfp_MOMe#WcmA7ZB4lM{d@ZQrIQ=3>tEZU;QANB4Yjo+&b6H%n*?ImkUiw0L+8s*%}_ZVvY0zogzhBRkH6SD{S~z<%SpnxkpHe6mtC#{+~S! z(FSOqxfeV(*Gvjs(j*N7y`Gi%X)7V7wGJ4qwmKgZ`16fWqBA^RC~`FMI^66YyA^t= zs+D&^y0eh6h39<%foE_*+b!h=nZSOB<1j>uK;>RNFRE2OOBE)qG(CR*r?lbKNg+a9-L%ZHG2#no+Tp8RmpW(!ZxgRDaB#a z%&fKzBLqe#s6+Kt&b0S7cZ-;0v#uJkt_j$YCU|AD>FV^#IEhc-4fKPNrRxXR6AjqcZ|Vbx&oj@8Mks@5jX5;YfTGcD=@yvs2CiX z@6EUsu)Fs6(ftpima)ICl7HW^V?5{yiaK7nKiyl^F+`uYo@tKJ<7D$J6fmqX48ka(aWvQJ#$rnim=$i)Pwd1ljLU1Wv8;@ zYZN|D*ZeNM2{=f9X3_I%NJKK)JCFI-x7i~l3gz5qoI`@ND&z+>$1S5p5(Cq&qi9}A z+i4tq$A*EE;%_1bkIi@Py#HP<5s%TGORBGVv6s4|7{6;a|JXFzl(Q7hyc6a*Rs>WrQC2UkwpPn@wCWL+BS7~<5D&~wRAf?|` zRN9*)^1;{(OTzpTU%8ds2#P?*r`X;S<{X}QS~m;TvVf^1lS>t{ppqU>s|4A z@Uv`LB!vQU)?=8=qH2!#?y6kDhYHH9V; zD}RfnR@hQ@268Y$Ahg9yBpT5Wem;Y(d-3*-Qn8H#w@yj2;g%zR!2~4rNWyVIfxs5x z)^WzgXs}!=VzWrtUr<+=0p!b2Q!47KZ{23C^{7i=eOamA{W_~CAS=&|eFC&T@p9NF ziG;xL9^o5vjEJciWE45%2GIemn?Dm;a(_~O7WurM8lL4s$$d~)-A;8S=RT;^oo?}w z`%|S;TWmM$IaO((v{35S$8pLULt(%GWaDH64vz={1}~rqo}XfT3_$o$X)Z;7&3ZsV zmpR22krZSD&VfnJ6!E)sHed(b8Im>3k^!%zbR_5z#26Sx;es99;EdpY;WpPFtAFp7 zmeQyaY<+gpL^aLQ{|D~B4%|T+m;t1)Kszv$3#oz}O34+q`#6P9d6@DqN{wvuk-*+s zVUK?$ACZN)0*`3OL(a+6RkMPa zE8myoV^Q;>$XTCyEg}Yq;Df?P>V_iFxwoMjB*^L?^H4R_O5;j|ISZfp;eXSG8O{Wz zFzfm&HB8(Lh>f}s5*5-8CeH_w4~K5T!c$b2-fxS`VNbEqU<;kr)Qxy&QA#3k`J0oM zKHKpQ^(a%W$AQUeTxI7pe0Ga!VqF71 zutUkQ`?^T#ys^dlQJ@bvF@H^A@lLis#;o!11D0rbDH)EtBmQCKYij#Q*_0b4@p2%! zdaBn?O}N3^2etfG7Wy8DV{B+!C4*tIla|qnPYL3In$GK+#PW8{MjqiK;LUJ zy;|ylNDfSn&!k41f(ag<{98PJha>xZR>#_M>K+E1rj8ZZ7Ua>00T{gelD3Y*G7c47;a%T2jaCC!JvU}r6SR|;b5$<{s$IOfbO zeS^7@WCYna8@jA>DUi0t>M17r;*%t-wAk`ub9o7Az)n1r&3{63OEf-l{^I)uw=-mg z6%PB(W+NlF%4{ep6e(kDyLHDE>TQ%!jyWM91CX}~-#?vY3)fL}g=rP#>!QGP?n?At z3ccs`LT4}i7Bes$nsAVw$;(S>s+~w=%E+OwGp`v;5&Z_i;80^rfE@{2llGP1eD`h9 zekp*^*J(6HR)331I)r9gCl|axA|J5KP1AYr2?KSu;u|@)OB)dXhJ0jF+Y@|b;%!L{ z)>DdH3^vT^Nw4NiQu1|5ilxIm4N=mXBxHO~z)0lWfS>`Neb&j`i{=vU)XPwYqo;bA zR?}4APC?ClOP0ae~&mV1OT3N000$A zc$}?RU2oe|7{1@HI1AIVp(b9t!L}|9o3@Edkl+Sw6Uq{|wQ!RzanUAmk)$de%GL-3 z5<*N9+`tWzo5pRDCeB~5{}J!UIreevbrs^GY2tIv`|-Tb`*B>l_~5hqUw-xZL$T>> z+2so*{3q;6ePb=xf85F81G7>qUl5|SWjYm6-K;cQrn8pYan=jBaQ$MTAU0~7roH`j zbEo*M)~Jd?fetv9W1Hn`H%0I^aD!Rk1*hRF5sZRa*a^E~JKPPX@NgD(13wsu@5HAK zyJprOSXHNF@Zk%hWLx!bMANj_axLeDZMHT|)5!_v#kRSYe{;;|j!|v3a$>V-uFD-p zV|^VCnMGPKz(j+6C_Qb|UckSa^{uGdl~xN5ST*x$rI{;dJSP%~TArnT)@jXFW9+em9{Sqt5a|U&SUd=S z0Lh*RU(+KgIP9&KjBT_;8CnIf%;r7Y+Nc9&*4Bn-HLGhmYpb$hwhZO(c6}o!DmL&6 zBZeYMJIF@cDldzI2z~>1d~j=m4$Z*30VqELtGa7T_$xF$ZsZ>=irN1~y>L$ihp>GJI=Tqx5LQMA zvyV^(6HU=|RP+bJ4T}>FhTH`|!Vbs=D=BRER5N$v}SZYhpfPF+M7%O(TG9fboq)GOWabv49U)huH6P z90nYUvD`l+polZXmarf0Y1%$c#SzsJZ&+Q}M;^K$;3bNHNV(ean}jPEy9f5T>I`}v zDGWy1{#&^JEm*%FaW`|{ZQS=W7k{ON1P8Wyq=hoW!(7mb;S1)m^yOF&tyUy- zlA`x)(1E!8Y^UMe0hR#i`FjyK!{(vf5vZFf&YluCTndWhGvoj>p7IWbYnitsxG-g9 ze+n3t5R#P=EO~|u2C^YeeKH;m8*%`^3BXNrRz~*-+;$_|$p8c|u8Boi$I9SsY-PBc zwDLN_joC3I=AZ#l#Qi0$h#-MDU4|GE${Q{sg9Jw~X#^~Is0)gNhhA!s6`9n?B~qIx zOo+w_r@AB%YdS{WbD^9_zenLq_{kA{e~1;DzhY7{ANX_}IZu$6h}RK%0Ld#Ptw*R( zHWhY9)iN(LY~aH$im|LGd`-uvy18!BSXbP4nzpjE2?=u8C$^o$r52rkNo5R!8<$5qe};xq z%tii_ytqO}`qXT_INv#_3iT;+5Aqu0K|gd+;qKKXk^k^LqV&_$X#h$r6KYq=x~rIm z$ZharPF>Y!0MmXje;yT!mp^#EV%~WY6^p-Q_37!XhvP0BA0?gWAsXZdd_2md^86F{ z4p#1I$up-|52J*kiY*HqNS|@Df0|HZ!>{CGo6HzPea=57C67tV<45%QBp=8BEm3;P zt%D=EDuTb0p+vEo=}}qMy5*dRH;P7-IL|%F`?zulER$HD(2YHQitJ*Zv8>ZL`MCOa zXh)aIs+M$M2TngnDl`;n8fY-JhEhhd=s+djM}T+|JZ8F_P>ei=RLD9uf0bSl=uv89 zmNDWQWCf&w)Y&EuO$j9}*HZ0%G@yu!+ax^NEom}_QL^z1#}}@ z52(s|st5SlX5D5u(BUag)Y#>)x?31S_lm{Ie@4LYqf(P+Em%7x$vp%Qqr-#a6{?|_7Cr$O$+|U*Cotuqr-jT%V~+7r!r#tW-Vy7`CkzYLYNq{6QlB8=3|4v3Bfq)e zkf|Ng-B&ZYFGcX=e<}xth0EzVj3UqrdR=hUgqX(m%+4p4S9O}4akELqQr;x8s`9yB zP%H_8V#0x2$W#U^sc*FC8d){to3TrCY?pyJ+vSy2yr@!+C-Qr)Cij!*I(?8L;~?pr zEU9m_d$OO^EY*De!!34)fKO3*wt_e)->N9cU`YuY=7shwf4-cnb~XYwKv8rNX8tAiyG?dxCc73x%l{d*$1+T z!%#3d9Hz*|27|#EVKAfu`0s!IP=El>5*1-)gb6LN;((tJ$e&<~R6zbl{)CsoWnjIq z?yM|jBq|gyhlf}Yj?OV8*5-D^#iQlthsVML?HxRwHNBmjLp1}Py^Q|#Dd!q79pOJ; zv+=dX5(gouz}|_7!G-`2+rp8%FywAa)(SFbmz5TdYRUSA%ofG@U#LJa!I8hQCnkgZ zjmSY?hY7hk+dGB$_&Wud6X3zDtwG=9^jPy@fAHZf=J@B||{d?@O?cG7cV0TpSJ;&*8J+VS>|n*?Zf&It%@Cn(od4*HCyceSLUNnT;AgoXQw^ z-hIxtjV=kCAr>Ej4~r#?CBz<2VN@X}$yNa$PALP&gI&1-&l#~5Aq0ITeeP)3|2Wkb z2L}ml1qhY0+XKsXKzp5q43!Hv+)v5t^~!*hxvT-o8EuVF|j>@C6r9|2e|oF86; zph83=*^x=ec$j=v7B3u?lTUghhn|!Y`Zp@4fy6sUiR4C38S&l!Z_h|hEHN|UzaKSR z>?!=`5>OaiI3oZ+)kvHeGO{ur}e*Zt>!T&K~5Q=B%C;BiclNjLYQ-jkOxkZV@0Td2qens zB@oET$0x}-B#=Wy66Yup@W9D(+z5>S+lLh>WoD!g=qsc+_7z9&A-9q1$R*@Fat8Sh zIf{IZ>__$@A0s=E&Bz914YCqhf-FF0Bh!(|$arKlG7K4r^vTMK!6b88`h-`p zNcrA!Zm=wK_m5%S)|mGS6W2xz-ZuNY`Ng+HEm97 z@)6~&Ruumz+6&$1esM9*rDZ1k@?33p9T$xtjY-r6XVeo16K+hL7eT$bZOn9__^3*U z5QCY5o>z>s(t?zE?gJOEi23Vs&4MpPl*wB@7IS?!mrGaelTI^H{DTOqe(cYdu{WDT zd$iANfg+8iOx$xFG&AD1@>ETeqNhZmv;^`(ODNr38uiu2@4ZzdYa2<*S4pKP?dbpf zyqvG`^syd47dvZa`9w?uOd2BZ~4<@n~7Z>|Nrn5VnJA(4Z zx(X8O`rbL6_?`GJ7d_w3VvrW@_fFlwSxh3I&J|9onT}=o8SgA|S2WpA#1p4a{GrzK zd`3}SOK-Y|!Ov%|%LX&xq2|!t_l5l2EV|jHsv7&+Uk-FqVa!YRgYOIKDNNpGijjLq zQ|r|s^l;_Tb{+Ep&bqZ%(v$xC_em6OYOTW_{3Or%?CI$CD19cNeGkn$@6oTwvXnZs zSuB@xWqd2fN$3}swD!O`vhQ9jt@3Dcwpm< z3pS1@uu(vQjXdJN#juIEn4Ugr9|4jt~ z&h;q&t*0=ms7iqY7lO0G-MzpN6d>Z`9q8jL?Cb4H@ek>d0%1}d_+{{5(4icCJU#7w1DtI^IaZJKf4|@% z!GVi|*8u5b!(+fj+e=tolK=j|M~nl%1m|`7N6{w)jP?FLAy`dfr~m%MLiE3*#9cq5^sd4W;SHUx}( zfBlL2pU*tVzrM)X8=@3JLbv7ozDpx;z?)|ZcXhIN@Cgb$cP8TBha0n{1z#iNCGc%T zN>E{63OI5bhTLw+T0*i>z)>(>xa;|YjqTUgKM0OhK_K6NStIgIOI8n3mIHz07QgE6 zY>!RwRO|zt#YDwKg)Uwcx+r6GQB+n`O!ksA863$@>F4NX;_M#)YF!i-1$&_aVvJBH zNbEaF4MdtjNCSjgp%RbXzWAC52zeLC;%v)Ap4Mc zD3lyl|3Zf%InV=SGk*9h=8wahops>VpxtGF>_1m02N0=1 z%2xoi286KtC><0Ejexy^fpd;mSy_+&U$XQ6lAZq_B|FZ`5;u91zr>Tr-to>ir71%o z)~tM@$xXH|*Xy`6(Y`C=AZfbD(4zkGnKzgD5cM2W>A-5jWLo-{{GT6_w?7|9PNy@4 zC9BT5-jEfbdn`R~qSalW`uS-bJZP&*w4jslw>t-`K}eim_e|l5jfo|z@{{7w-JuI& zGBRPmZ&6LhlH1T;B@5O5^JbEPJVe`7ln*+avXM!~0gzfitE9N0Rn`KwQ z2zqr(jBrYtY26<#h6e>5CkulCr>$GK`RKlZalT(Y+;50OX3eBKcD$q?@kc90GL_n{ z88-zcU~ITU)b-?I>D=}A3FKFtNZwn&T9rsU4X>2Fcv$=}P5o76z}^1u-@gaj_r9-1 zJt*fG+0NdgWy}kYk#w*ZtA6tbl~8Ujlf|EW!yYqT9bcih7l{z+YcJFGCvW9+D0;&v zxBdEotiBLk&`O?c&Xp;OP1O7KBW5)HB8qI&tn`h>(`WN3O!d>7rEF46y|26o@wyNk zzTOMc33nBb^lTP(33{1j?)9p`oj8JuD86%AlD-a1xJj$%j<4s9{1$ReB%3*tqrzi~ zCP5n`I-MM*W3*v(8)cO;NIbwwj$syCLE*LN*|)0LX*_xY=g)@Mc3sv^aGix47OHMF zp-on9`Lo$nvMJd;j8e|=seQ?T3a{7gc;%?FU6|a(VLs*4FHLi`L+NY`hnusX+jX$- zMn{m}lx0c!`rMr*nFrmC!imQBWg~*rWVf6!&srPWRz4OfSB<0pm}c`!x3XP$&7nRi ze#(!SAA3Hg5fJ3C$lEW%pF(pPNB%*Jb&$5wK zwTFjmpO>GRHL@BEN*`S2&912?ZQeWCKX}B%^Qxqf8KDMjD(|TnFhq&dC*c{tR-w~x z!Ay2jE5GfOhF?nxCcEh}pVoU@l3stGl52xLfrgk(Q+~~5?U8u0gmgP?EklWwiVZq_ z?ZlWCxp?&%QgVeM=U&&Hm#76JhTV0QZ@<^IR+n$nFR@nB#Ny_yzI*B-6xzNK{>#DS zPR2LZXC5l^6gdfuSE?w~4d1+L3rl+PY4SDZd7ORe?z1_v9?=BaAC;$}n)ho^a~G{G z%*iq?KOPX$`pwBP)>3z^Hu{-TdyTkP_^+om?+P%KcsG>xjR@@qT!dluLJ3W?EkkAn z7Ho07UMZV0Z?Bxtgz@-ZIvYK?#g&M=wE9lS@-!_z_6Z01a)j1a)8+bjJfp$>q5Gv` z4>79|&I4EEcbq@Tc{2EQzHt98`|0F;q{5CK!ko$>a7!}9D^os03`gv1yX8UhrNKg1 zq&j6-sB2)>%sJu4n5gUIN%B<#SlUIZxT)U{+5F2lM&` zI4bUo2QJ`lhR+JejuS2^4mc=Sjs^@yct5nH)MQqd(Ub}-CF!cyUQgpSu_0(-HqsEG z(7gLz|K0sJEqI* zaLI>=osQ|AVJ8;W-EfD`UPpNrmprNsNd*^8QacQ)ALn#nY*u=k71~(V^Tob31mO)J#tlLbAkq^bJ3H~kKcAg=0+GIu z$O{M!gwPuZ4294K@QuXB&Q44FdgC_cf*hTJ~<^NIlLNfb0Yt zbWs_hw+;5bB2@BCc0jw#4l;tjDNYtZgn}>|K%*f9V=fVh1b;Isu>9(lm1TpxNsR}1 zcoG*P;dua?5%J#+@&P6@2nzr@D`N13Ny4N`iOgMTtmas*Q0_*4vh2GM*u#7h10J{# zoK8X7cfjcsghk+V3c_M=Izqa;#%Y(@3*(# z-x8c8-odOqeJA9$qFNTd{wZSg%HgnQY27O|v?YgTy!4y4lGDuC$vRsLm7ROMzF zGe-7wCGeINzk0^X(=9OOgH8*zSyY|1UJP--d7#NlZt z{6jolTr-;7(_82U56zKJ`;Mf7L*IrJld8T+kVKJ>EK!KUA2HRI*WcBhyz>j^mr&Bc zrjAq);WF|R{?4^R_&}YAWU6{o_Q{wSN|#Q>hmG96tlIxFmAfkXwPMwKovMNwB7qb> zXJ$EJOdc7Rry*O@liuz&mfy2Sl(>nP(aKasg-DS=!zZ|RGv*U(v#(aQZ>k~d+dIoz zWJ3;FzMUUCTJg>*dA=3y~Sh2SsRFHqZ!g1B3N$ac5I+Z zs48z&io!cp1#}n<4l>7ej*Cf#?$@Vp_H59+sT?L>lig&Rq~7TBV-{5w-oH#0ohBzW zYqzOb+F-+TZ~I{-g{7p^nVeQGiia7^DYU8gwN|pVy^k!|Z{dvI3L1lPmmXNA@CpZhFwibE}UYw@-3 z**XXx09|r%;6krd%$(C&Zw+yCgVM^tL0~^;aA=;qcI5L9mgQw-Jz-m?ha+tdr%rIF zlcJH7#INPS*P|Zj^CXf3r#M7?*cjH((NFYu0BQvKP!Ki&PtXv8MWMxX&3Q7zV>4QOP8MD0K=7la+aJw6CKfeJw)JJ3Ls zs03>O02QK;s0%2OfbbDeC=KCbAXkpa6EsjH%ETIU1G$Qj=n0Ui0^w62O#{LnAX$ef z6g1EyI*;4EK(Zbr>H`vtAbbYIm_Y~wBCUuLkXc!w+2Hysf)IuvY{`Nnkn#S+Kxrc0 zcd*b2gY^ULRybJC*rCon^AhN?gKAQ*fOaPc2Y_Zb2nT^iPZZWOzNmB0yapP5A<-M4 zHW0!g;9e+%!$3tO3hS8|)VXIyfQlGMGzyd?KsW{zCPO$5V+Ew?a4v)>~2M^;Xn*Ml%oATOrXWu-*#cXRzK1;R0B1MV;4MLC1pEun5*$ zA<+_8Z-sCfthYkA0@hnm*py}gb)M3!g7sENv#ZnkPV)_Qp3`iA z^;Sr<3D#R7+yd*Z5N?C@R|y%p!Y-imWx zMc4!Dt&r$DSZ{^!2Uu@~a38F<;+)r8an8#K2VlJw68!}0tq>l9^;QUvz@uiO%QNUxNw*W3}%v*rGtv!5hejB%yFvD>q9TV zB>@D$YXm>{5F80`n*Bxa#b&jFuOPEj=(0so1V}^~3|y$@M3l8;Wg;-i;p8Y-RwxXH z|2(uL&t%AZR*h=@_l24SeTkUYbw$Ds>IP{aH;@`1+fBxUjmMWX9JF)9WWGDD^XVG& zdADs;eX05oXsH<8T;rwrCvlPWV2=JxHdA*UZD$har+~3Xhja9Kte#Cco>%)*SQDum zRwCUllE3F1BQ2)ha^Eo|_+18`H%sgQ4OxM%C!s5t>A-Oc6-f*F4B@U|q62Q+fWdKr z4o^aL@G&6l03S>^UdJQCzZZ!HI#3Ye11)F>34kUdLPPK|BO|QC>JtJ@WRQpmsH1|A z7^tR$kOZh?BD4h!*a%Cp2BbhG8zdqFO1U5;2k!7eNCD&t5_*6JqJ&vk14PNBPyFWfIs}sRIRbNG0`~Uf-ooX(`KTBBR*i)l(1j=Wtwg)@+9AXrz#exSlXX_Ke1CgR|ySZKdqk;S|0+sj{UX+^&#@)&r+)?BbV!!v2D;Yy`vZ?9NVj{@!l2Pu41Q{38DGvFnT4>m%@11+( zM^m${O6WJH4hMbL#$ne+A79dHK;_=sN#ZQI*Jh!ZC$mGVT3T9)bC^WhL1O&*r;0(w zX=eg^P|8qQ@5SfipUsU;g3Z4?!2g)}fR!s@V`(bb_!L*|A$=&(R2IW%%SoOMhIJ)^ zXj0dRwFFOKsQXwxJ~>wFN4fje(h0|!+m#4{v_9rbgNNT~)e7H6$PVynTumIurT)A1j%F~4A!Z9Te-Q_Kr5o|tzF!H7+s--q`Y?ne>~ngxEonkisp@U9*)#*T z|{b7e1`s7sBfcOia3rr{cmt<{9nFhcQhZJ^kjJ zaVttU>MeqF{Xr=Dy_T`DLy_$h9&Kft_0Tb7>w}- zUN|SU_BjpRr?4$TnW*@@-5s6(4UH zV*!s>)b`x+^45rM=hY4GjW*VN-q-xuUp?AvA1@If7g#Cbt#_;p;9QA3^b0m@YVT0z zFl@c~I!Nnfg~@e(9k!N@ArsfBI(3gHbtB7feaiPJvK8BWhZOs#ZTzhv}_I%z8W=n8X7PwU~F^mGhv&R38z`)tVbcc;D z9Av1zdpK%g->!e~!uWHBAUS+Jd(ofH!l7eBWQh8uT^POOF-cTx39UJ$xOOZ6@2$_9 z&~C$%7##`C!>h6iy4tKym8-e>uA1I-a=u7}RrA_Saa8~nsq>)W<1gx68sd17K@y#a@us;Nyux;^ z9Fik$3|+vX(KBm{k28F*A`=#riTfLJ)AhC8c}l5`XN5*JgrWCL%`k`W3z{a{ImcDk zy!O~5S#tUt5}O$W&8tn7P)Cl#)(@#o>MM=IN64prJ~0Q3Ri_OWFp;0p3!c(3qXenG zzIf;*N~Wmahe>jl6{#wlZkpKg9sF$g_zlu>4_>jr&k}#6Xlh(bCr`7N(Y&CZ@aEfI zq54z(qxK0{`V&9NN_kA&HODgF4+7S>OP^tVvs4C;{TTVSZWG-+i2X(>{h*lA>{a}M zYRnH+=`YUWLr6&falCSJTDhHpXV*i=B8)R3bn>Dd*e zDs5$%-R^qp$jT+d)F#YX#_jzaU!dp^m7Id0)P;03g-A8Um5PZFjEN@K;$%FRiIUu1 ztM%-GY&HemvU=kN!{vShv%Cc7w8D=C4x`o|YY`aQl1E!oyq+<5WLw0&DpyEDP_;K$ z?=mE|T)E|C9Zqy4$L^v<=)q&`SKqwd{np|gX_Fu?-IF!vZ-`)lA*Hv^n05Dn_38U3 zQWrjjzr~l@qzqfRc!XiPUc`}IWqEiKR1^7ZPrh`Jdp*&(^rIBpl%ukq!qyY>_Ot}F zG)3*6{@u-&bKj6VDz?h7Dw1+p*Mhgh?3(+D%YL>dlQ~khIF^;8urBWaqz2e*kA$R` z+Q=|OtgGiSY#+57Fh&d@@*HVP7#!}dg*o~}-rpk=%q29^z$iL;m^)vvgCDLs;Ac;! zI%vw?mxH63GiGjl*}VTmMK?YthAuRjakY#J*CS}GL4vq0`tg2EX~KtXoJ0ee^ly`B z-ZYggTGi_hIMdO;lvbCuUK|PtCq9#G{BXP6kgnf{V9my|0Tv607|X^p;YYmQI#eY1 zv_&JX}56dcclKKDe( znnW*Ym7|Q-S5`DRe{4}>o@eR*qI`rK@PRjVc`Ux4J6#khqp{O(N8HPUQgR_ZRZ{d0 zC-^S+;!4EekK|V=5^DCo;;0*>dLe9Z^$2`c5hcOkWzm{xVklS z*>avNp0Q+o#Aq!KqAglmtp^|4_VELQW>=2(WxTFZK37kE-1+TpYy2aIEi;0t7tFyj zW}R2}bZ{QtKHA~+P}=92Njb~RCEXJ=SqWIUX1XHjCGW(ekLH*$s1z!;FBIe}IEyJd z>P4+KO_ouygbOlXWd0g|BeFDo<9wA+u;-degw^Gn0jd}h`Ee-Nz>U0<37;R+F zWZG76+7A8@dvi9pN<)-8#yVA=knynKMD+1j?s<5463r#Nq)JwLzTBnE(~lI3XsM0g zyrr2_yJO7Z48JN0wbQoe;Ow9C>16KpBcnMJr7?#;e`A2PuZ|r-%RieMzRqh`oHEx1 z6i0h6-fl0P8{s3|^r&m|+!-LZkg2~lVYJS!q-1P%Q`#fmY2nVS^rF)3?$#5X6Bns> z%`+~lA9*X5>J=)3;6~<^%ep*PuCi8~HpPywxGY@P(_M+*x624cNr$lWe~>==s2pOz zTjW(=DR2p+do4G2*tk0QmGYOEMi-SZFEd=_1OHzSRL`!`Qxu8~CbEt2PpVF=yB{hH zDg9VxvkH2n)MVB$c`|5wU%$xMV&OU;#nJQWMl)QRjr9Ba8Pd1Ey>67&@~%7nP)fD) zT}$=VoQ|jJ>CirUEX*J@R}J4PU*Mu6L))U1AgB8K6pa1k_OHg;OPtxt+=rO{2*UDs zAJ#Wit(wK;`hm;pnoL=@%Xvg92Lk|F9=;zZS_`)g*P=chmLxdC)%-<&`nPth1zs)e zD+#Tw7}w4oKmM`)^56zpl5|NG`7U){>;#VKbk$VFogXhFWyeO2e|k5+7yKP~_0ie` zzUQ?Qfg@FzS*yLf+YFCc#$P7%>^Y@=HOxz(o}di=AR)l2FDlQ4Vd1)z#2)&k;1a#q zmrHn>xZ!ODy!dIhn>4ES3YV3&eu(Nx+_-TkZnpK$2UXR-UB#FP8h9K^L@*sAFw+l!6#l6nkcpI-}i}fog7(7DPi9!bnV>l1G znW{7`olf&GNq|K(S@`qn>|2A3IZC(N>aTL3FWljy)F|GyFU^aq^&zvb&uA^B%Nw;Y z)+QYm&a1qy6-Hl&$LEw?!>A$8twg z!FV8Aj-|tV>zY{6JaC-0V{X0+Jq`UrPzSUJngU(U7e^~NSU+le2XmXHwz|Ddu zQKq-|gr@c}UbsrZx>0uTS;o?m2b+2X2|hH;T-kSe8AyFWk-6*7t^HB{9MhVXT^UDH zzfTjJJ`3*U7S_VMUHcN*K2iZGF1M4{Xm)3oMw_-ek4{Us>U+EWb~@$p@77;p>}d-; z5*XEeQ0FxjvZ>cBZhF5nn(@Xm&i#>){LU`=$CB(XYA~OMlfDb)G81pgTpx{Jer2Iq zr1gpe^>El~sAR81?gK*rN;PbWmi~f!PInt={)8iOW@%7SyOCjwR>yVSyFCts>!j(_ z^_`t1T_YkFbiO?lk4sx484$g^mf34SvYAtm`7puQd+2*jXWz4x>c!>P+OJnQxy7zr zlF!bxBNbbdHLd&EcOd=WX(8r6b`;8e;rkDJ4nX#;wOP+i|H?Y zA;U=;#oiZ{;u?}%9*H_6=yG+7#FpliRA+nDKm zW#S@LJ`rvo7s*pCKD>+s%%yz?AHz!z7{a)HynHPKYi~FqI^Q_{LU9mps_Ea&ICNHe zFs9y@Fq6fz-1cna;DmqVXUhWzNrYLSM%U1^$e!vT@R=jp5<{MC8!h-|`rQWc$;6{G zcx2%2!}DbwH~>R9!-1Bp1~?{*l?nx`QUI ztD=)?&7tuvs?g8eud8@X-GNq}n5%YP*Q~1g7;8m%QLln86Lk#7sm*&|GdFN^d2Ejlp4^In(UH;PEf z3rE^TnLRT3GcrH+Uh2=U<0~Djj;HIk(Sc{zx84ZM{4@o?T!yO{O^Jeaf*WK-3qwm* zEvy3=r|5gez|$2i4Rz_b<%Q;&iIYx}D3yLqCQjxp=CSk9B&%JyTi5deQ!$yWrl0mk zZl(D6&l=NG^4m^B`P`U4&o@~QPNiKBOQt^NQ`!}7pgcW-Mk79Dte?tV{_#G%Nr2^O zq?uyUwMlcmiu)v7=9|Dlp83}4%Md~zGoQTCkrS6cKRaGVgnS}zAaCsb@n>#?aXP`6 zk4B-e$3$>cWHgl&19bTs!r*>VH%#8>w;YWMX`40ZPj(py%10hy#>1p{P$PLuOA#-F z?un($u9PQc{*<;^G52L)Mx;%>_`rn7DG;$;i=q*JY!H++y;j7X-J6;8HM}}Nc^C|q z)EdcK0&lJvoBs^6Agd3^U``r3oKTCA#7A$0ed#p-Mt;d&4 z?KAaIa#w1)mpdo%F-82OuUV}Z3+;%^nxM~e}ci6xm?)P55cVAf_9I#5s zKYhri7_}HOU*t1;_{WpqW9abmh0dpKZH9A?j6Fjbf4;Ka#td*(tIX~X#0^B;3hMP< zl#oZ=>Uh$DgU|weKIcc#2wAwBXij^N8NBArUNqXu^U%rzn0xCrw4Q~{1h6)lZ|&rN zZ9jSbD(ALiT~VZETjY9+PtK&V@oatYl>ytWaMWH|CeuwyDn@_?ZG>7$fux>>v$GL~sV3U1To z3)kN@S*aogkviPQ9wt{{BLwEAA0HV%*L`T{b?2$g*Vs=sm`-;qWbo;)1KsX-TU7Y( zmFM?vSOd%P?rGMKcICwop`-P+{>B~kvn0ev#=u5apFn=Fz}qot3={DlhQPRj-6%GC z|98Sov+mgE!@1E<*EW=%FkZ7m2Rn%FI##eMWMsJ6nXBG!{;r`qu*ZJQp@~K^RXGx$ z-R{;Ur0RXOhZxZr)3=##?>Mag_@cwAEOw|dfhxZ3EEb*A8zU6TSv1tXAS#>Vu9NOO zO|*V>)jCayg^E{GPx@2(Vdb)@eC8#+LfZ5_AI12AOuu{!(dVy4mhK-(JmYy!wpIcw zi&YbuQmqyguK&Wz!eIzERaDG6_2kKwMhN?&6^-BWeHy@^eO;qoDH4Xt$N$=ocdR(g zo!YvJQyW*!StR>n1%0_=!=meARC(sjvPK!9F&1$)l6@SX?=zPL4=xE25^3C;OV4S) zp7YL(crWi6nS46w%=C+{-eI<^D1krnf8YkOB%?_=^dvGtOkXd=5<3PChJEs;*wd<2 z+CqJ`KOvg+#>j1VoK8j9T$2}sZ(|sCUY4kGInpUt_R}BJs3#UF8}1n=Rnr62+e9l4 z35sszcQhob*dwC|tTUG4^IGShC2n2f&Qyu#Ue2842*!I*kE)imb9xq?aP|X;t5nVg+WA#T3VtHxj4aO6E@T`(3SXk zPc+fhiQ|K$V&rd`<)25aPMmR6ynOkh>*n~j5l^-?FicM)&8;-DyKa}%d5H6ia0Tfk z6i{%msoPPj{-iCrW>#uAN^vT;K;S}L_2Wy&vy;mjGL?n#$Gze_OO!@A#ojNDc*$_d zf}RhB&~R0izN>uVia@^-;MY*oeAV@K-}KbG4J@@h+n7w>q}UR!|)wEY3mXIj9g(Jflr~IC+a>{Ly|T75Ct#NUGkY z*E-8u36F@%U+%sOV|<0;@!8rJ*37z9 zGL?}k7}%}fCB=`C=hjOdWB8uPteJM@y{5rHdXzk?=C1_gJ0b?wwISDG2ExzIDMF3V~)GHErIZ5$XrIzX;X^r>78m}qi7V3|*oIO0iRJt^!CdaKPJ z;^(95+>d!rsbJ8gB0Ctuc^VS-mZ?dR%VmeJAdD-Jy{lhgg@BEKUWd4@6H#NGpHm}8 zUuaOGL;Y3z-lCWQOsa1Cjfv}>&cueccK6Ef@(pgvd2fEx5{Vt0@f*sO>%92d`8<)T13Q4=@TwJ1Fq-xb4D@em(wQ9Cg zau|9~`y+&==R}Hk&2Ul5@Z!OSow@rf5){h&z7FL`#qF-Qg&w0^RX^#I;RQjI?7>xp z)k9a@yD-^HR}Vjj5r3wNGmDrwpdu&BFm=;bFQs2JfA2+^XA6&5p_A zv9$3FFV4hmjlEfA?pCDXNI4*~E7DcME+n=)*coWUw{+i##l^t5Emox_ zjp>*4;mk9tx7VqNNT@qeGk2OV@!R5$N`<6;xQRkX-3fOr;n&|Fs=OngLutcSMryWJ zR`(<$Ay(GH@5SiqgmC|vhNM_s8)c;P5)z;IP63TOQSiu)=H(C`{tvQuN>WOMsIg8oMMe zdcLzBE(th^LLw=^P69${z)BiI8Nf{Ld}qDl`ObQ{EMTSxi7o?1DiF#6dKwU30d#cE zch>8j@2rQ*13G$;NCD6=f>04qF@sPEP_#PVS#Ni~vmUMtDB3}ytALyngeriv8-%KW zgeSPO9^CwZ#x9D()c^@!NTd#k212L-2!=wa3GhXtv5Vp{XzZdmTnpfffkfH>R|14O z09!JI*8rw8G`J{EDcRX(l9LeB9)i~3n?-Tzd=O;oZ@mWoG7(%CV9JEFuLE?s5b6O` zg%IikWF=^DQJkM^C1jiXCr1noB{OJe0FYHc8ioMTJqV2ebnRaRmpxI9XaovH1cMW` zWFf#kvnQg|Kt&6B8-ZOt27hlAZVH$f<6w6k*x_Jz9l*^19lO6v>Tq*F!wEtQK*bG0 zOF$9)4PUIs&bJ-FtpG(|NMsGj1wv>8NQXjb3rIws?>mS&-**7F10-S~kv$-q0HFgQ zm<*vKz?XKu?;!Jh-vQhS;LC(W&Hz^~gf0MEA%v~~Qwet8fqs}R^I84(8?}<`7x90e z>MoOduYL@9Isjgl8^BZnX}be-_aM9hP}M@{0gyFf_Z?K`92jU13obFIe#E-R6Ci7b zG`s+!b_l%zbk|?Ry7&o*=l@9p0=@x5n87z%vgYBa*w13L1!CU_&e!REW8cWp0G)<7 z71;fWaBzxId7$4`Be1bp&A`kbXjd-PW5)kdD1GK|od}Bnk%7b0G`? zQVJmq1rkdLB0z%*f>^9U7?4;2iNb-{dk{tdQMC|80%45=H$j7Df*`Cx6cE-7iK2m^ zb_g+mUl)WifY%d(9MGVTz#VH43wZTGqBy|4AHsORc@V+`zx zByI*-x-Xm-A&l?7^Q@Y<3of^_K#uv7_gmBQ_cNvFo@ST5+sX`W0joMUJmVkgvWY8^ zPA;77SuW){<9L~ov~rULJ!J~-V7PXSlC!&OwxZX zCF+DxQ+4XIT`oM{(TQ$)T%!MyV8yHO51Z!Tjsi@8Y;ECf{}b*}2RU_SG845KVxm)m zo=!YDaIe&5PVtGBD!Tj%U-sG9cOM(yA$*RcM%wO{)vq1 z@Rfj*?`W1ew#x?3q>`*K9R67s)Y%kzQX2D*;9Q<9^+=_AgI_v~nF>vQ(G>cqHRZvdL=@V*q<@USvJpnlqK z_{8z(SIm(JH801vcbvEc_85*6HN1}9=URQI2jgREZs4yE1h+nSNmXlpjCmlc{#&GS zoBx`5Ms{D_2R`LMqheCY-4& zfFo+DA0N2H%d3<`6aB_|(3s`jR~pf5(VaOZK3AT(QH({&Ts|)Je4zcdx9PzHQ$`P) z>MGr}RBi1|bpg@~mtVry$c(+3nL9?*^B2BZ@X5Q}YsV#Q==k+ftI5E!r=de?ScU2I zEZ@EDMZoN6aQ1hmg&n)0@BDPF!xN3a8;4_QR4?LOct`&FMz$cIyCYdY=E?)BUx6av zpmE!Fk|k3aeSACL?H7-%DC{ME`b9d9hCGKeTiGw%(>mj4(>eQ?rB_o_AJ2a6wPTp( zePozLsf_ctfcyP6<>t2*8wW^;=Rb)*-;X|i@trR$dz?gheZVa8=eG!ac-4r_&uBsqo=M!*;R>kjcJ;) zt6BHz8In@Owul-~G{URtU`4$F4U&V(6fKW&YrOc_sGkzg!i@!s zo$}mXYfhd`bDm6d+W9eyy)pYGRhwV?n$hf~v^?=iNi zj}N%lbD-H~Wb_$ta(Ra6g5l(ZaMjgR8Rwi?f}O|Ozga5mCyScVYol6auoeLHyZV?o8iwkA=fjc03W zd!(Z6EbZF^s_x5Q`UMdmeD6k2nk38fjtI>Y6_oYG_QSmA^?Vkt@idvAR4i@SwQn0g z4ZriVySP18{&VBjSNR)jZV#EOi~>}JP-p0Q*ZzT7;d!3PauEsB70iZD6>2Xe(S;fF zdhH5ZuW|oivgNJ^{WZ-dBV`V)8;esH3O@J#NgaCloRhmpS)Ad7+`jtxH}9}1vccgy zkLU@Lw_8`geWzBcIK}ko&3)i6Cxw+#xolwir9nY$V(*lxvZ-i~S z#atJA%xp$Su07^T@H?2tFcx@s#jN=U`Z;7ju!@{UpvpzptRL07jFy&Nxx()y^}r@# zeeKMuO|!ejz~;uImZOpe(J=*^x)V&Fyh{CY*6H?siT%;r-@p8> zo(<-&>IXjE_>}MO;olgMvf&W%Em7xzj^S3-js6qA>+5lx4c0270SwJfmm4NOlni!k%7LtjK&Q*sv{m4ebbWr*Yvrw$H?F4F zO8(^c#TlDHRDWLFHb(Aw$2&6ZCQdvhxb(BP*ejTsRk&E>Ni+8>!H*{0iCHR*tV7GQ z;CVlBnYK$l?S0oouGXlin@^}?<{DGy`+h_^9Q^cOH6EjkoWdM(wTUgi-#fVh?oHu0 zs1MNO&*OQ`;qpu3f~>^~WwDBc*Kt)|(RF5N8L@k+?GAbGa7Zg&y>im7@g$9 zy5Uiroc1aC8#`?%TeQQhO5UV{I@+FaLyZ5!$_Hlg`$Deqw>(zm_QZS5EQKP!%nLcu zpx&8C_HT3 z4sQk%E5$0JER*0-jC$pJea3*)4vH^azWuNeGERlo{JPnf>=9D!+SQb=nr%yJNmrKc z)`ZBv{&L%o$DY7a?u_FN<1nq8bSe6)ScBBN_gCu@S6{qVal;gKkJxY51umug+>v=mfTIt|8S#HF71Zohm*c{ zw3eDp>GyWKjptMh@`*>k-s}B8Or3R9lwGvOVdzFcx*O>ZX^`&j?(Py8x}-r;x>NcE zLAo0RBn6}ql#mv@gWue{?jN((Z}GevhB;^U>^Wzj=l#%d&h5~=BZr0S?|6?aK_zU(L1%~&C8JSlHfo^bxJOVYj)_c%C!_zOC2 zUJR$tW1;V1B1rz){A@gI{_ABGJuhY;L$pLq zh6>5t(te`FGP_wPL*v7eQguS=HM}6%AQ?SwVicg_RY2>-(zIBvPf7>RFjjEnw6X=( zoSqbs)g~%IaHimsCeb+bIZ72V9@X4T@y0e zG344}*Vkq^@eO9iJAy+#Y)HkV97RW@r@`6~d^%k1Jmi{Oy&DjqyNeM;t4qu5C7B9Z zalrp*FBgQf1ccp=QgxTCSqkCzv`m3b4a2($5aM2MQ;4|mhVMXrR}&k78|E&`FFoKa~^9l^2r59y_DQ{CvEqL zKj(qA&zL#vO4Opu2*fy604_>azIF`TC6|92y)4u&#sUhgu2_m6QSjo^iY8ZUii$p&q^jiOO1gG1NJT4X z85>mLF%^4R#Je{d`gV&xU>#hW-?I!vnydFY;=VyXughp z<^F61!NxVq^9Cg9<|hZ%`tP}aB(n>90_SC6PD~_W>sxF_l7%v+; zM+Q{dFnhL{XcFV2j5v!O!1q&83Gd>feW<#N$`=i+)}+ZHi{*TGLG0Vw=2#|5iJG~) zXLU{{ES%u)jggS_cvFXYVuAyw3Wt zTj{o)$@5Q;mW0pJ2)AOQk8pOrIH}|KZA}mGuwOiivnrv2x+{?Mr4UH#xcIT^0omx@(@+0o+U`yKKra}uAK^<~?i z>8_}OgL~#cjA$_?u;V1Nh?kHHWbdfqHf(S|ii?=^ltiIq-Vg6*LrYoX(h}0y`Z@NO zJr2z!bBA@Gud77kv_bf}vW(p_Sms|Jq>L~q4qc1-b4}jq)5#Xk4)?2NyNO$_7*fMlTkLJM({|l0Cc>e%r~^B!oB1*6tJkY0+2CVZofI)>%%N^kw;7P+^7EoyLpF^g?!z6Bnbqon3}A(q*@d(MLYV z=b+)Vtg8J^w?0s#^f2(P(mJP4d#~UIsYK{*Y1<+0J7Y%wI-+j>lT%<5b5nTOm4tZ| zjs8eG8;#)!pL^)1EVDY*}@lgglyqAZay-rtk5>7 zi?T3#oJi|vt|gr2UJF$kmm;9z#kZ%%sFg};1P3;k3i#9qme4BCQQGCMvd#uGHIz%g z%aA)}XZfps;60t+jMbg~33C=Jz^&sox9vA>+v(}Qx6=-9HZG16Jn90dxYNY)!0IO6 zjXJM%Guf?z{V(&@J0_C|R3`s!U0f;hgCD=CE-K*u1pmq;0Q;P#j_;yI-q^CgM9p+H z(dqdVaCso62_wE?w>0r?N^-m6Z?1awdmGPF2w$JB-K{m>83c8>T@pY}I9el8q=7v# z0_aU0GPpt#l3~mjham?nxDRH)1qTOQeqVCmQ_mZi&M;n5^q<9*MdB(hPt8&y)XGy+2XwXaSp5&bK@p*rM(-eBHRKsIOfO-;BbpYCv3+nVJ)2 zFF!V2uiXbcm1sDt?|H!Y=)352MKZT4jMbP#y{Y71JQ95Qhv^K7Bz&sxGq{jK7z;Bj zk=O}7`m6}SbRBKA@A3{L79csLJHCjey-{N{%9G>EY+^ZdnM1S)4~ncGlA$TlIsTTq zu3pK?+9zd_-z^S8>)N`*awzLOtI#kZ%tUR!8VsxoRAkkO!`Sj`Zj(d*V4THX?clzc zrq~Y*2Nt!%9NKK>U!fMwgH?693{9-*!)G|_#6C>)jdc8pN9~po3VYg;m_-wkLkXwa zrJ+QQ{~GLf5PyRoa*snUhW^J4>*@ZuHEGFl3JB}zi#+JtHp>-Lg?WrecvM3D?YiBc zvTtgN@F3yX5Xld}QOM0XtdF+iggPt+`uGz=6j8mX-6wq7%+^BqBiPW-M78gdP7zM$ zYZQBVAD69pw&Kt{X8wMNFD0$o$XKKopDt*vi6c+B@3(+mxCL-_V`gaF?Q^t0*#50y zwkxF^+e)MJj6}Qe^-$dOUWUV!Aurn34lAQyTh6%QVy>{F1x+yw(!ohal1R0s`nN*bI%K_=e&Iop-;h6q6Q&8FpsrwDFFc@YhVDIf zwfj8|S2fC0HzU3ccDn04&%?}ST;BgBp3oMOQPS6T*A*F<8^b(d3UPr<~p(Zs}2vR44|^gCVd*_sREci1G( zn01Mf8<2tHiJBn?_Z6Bn5XVr!N}Az5q=t`we&52uJi)-O!8*e{rKFs}hb3W=WGc%c zJ|C-wO^abBhKETufE>}n^ZU@My{1AV`)ncliUyBvKJhK93CQuSx|wGR-`K13S7Vwy ze#B1JS)BQNnfx3QE65;)^siRnP~Lp&-s>~84RCt(@wqeSyn;G8i>j|~o{)F-r%%7V zz^_A$SK^-C8&e~wiQr*kGSbiS>MR8a{(DUJL7DvAMzE?5RV+1$y^7}&>FV#}bkFx=S#gF-LpkCkV#Y!fs z{GihiP2K7a>cMZ{Ow3)Yuv^=tuM8Vi8Q*wJh;3vAp>|)8#Scp)>k(!iz~E(OX4Vx* z$$*(dWsMA-k%mnps6=|2VANJK#^EI0_f$F?4Skl1)yC917Q@TE3T|s@HXLv&4{bdcDmjK28+gY1SAopO+A~v+dMGp<3--GM-ttC(8Gt3Y&l)4Q%&k zy?&Pkm*8&j+XmRFTw!EM8FepKk*7y^8-qhMW|6^B8R+9GwU{8HuVq@8jI>#o)kBSN zR~hS*tkNwVu_{fyNYZM{5sD-!;1IAx$wfEIEZ*KLN!Bw9ybtn%zfO(Wi+$IB_osl@ zzl~BUgk5`{;}a0%sw?`Fgt8=$*R$^!)XZru`>|M$xt=6)+)h@BkA=^!WwaD^$$+tO z%cIMu>_1arg86SUgJS+TDxGWfAi3suNp+9tbuUL+{C zd|!?s#3pkenG^GT7jZ^&*0-zuJ0+Y5M}>GNQ_eN^3I3ESY~F+2!W-8(H_K2Jw;EeE z?4P4X9J%C;y=l6B(>A`y0nzR_;uqiuAE)4fzsz}a`oqVj2cu;5!$UM%tLt0|Y`LEe z+2XizzkTTX$>82Eh-pixiX7bjC2=85o%a+KftP@fc>!iohAK)a(*W@%SmK6c$%aFA z40I@#;%{RwQExg<+fX|aucVK`nH%w@+Z0>jSB_q>kF3!h?Lks}vN*-pk46z-g;UOV z=5P0N>~e5x7GPdXPYRAHMYm58740OGMA7X~pWUqapGro|OUm-HMXoxrfV-NA0^wG@UJfSV4Tgy1!jsrUMr`;!Pyt4+D8LxmDWQ4~+ja5(aj`79EA_ii|%m z42+HQ{3A{VXfF8EO#hDe_k>?laHgaPfnd{t7CFTKj#0h`8k7)~o;N)Z8lJZ#GJuv| z=sr*;&@c$aETDE2irGNrB!b@arUydlb3hJIISZ9?fzkyiegF!Wp_m7JSVypW-t<7o zdJf13K5Rjy0w8M_iiJS>Ary;%6Xs zSO++fBBnzEC=us2-Eh|R6$DXUW1cQd#QH~m*m@RA2Ci>Mdu(|)?yewY%o^z?nmV7_qrZ6UuEi^10| zMeQH3>ELb8D&9MVo2P1Nx~0dI$-=jUZ=LRRFc}W~b_{R&*ogRsR=}w?+l&F%pd(&n zOOrQZNm~A%a~+#BEvT}nX+0+E2Z?9f%bSSQJv~AV9>YMFI>F6^8~jIfUvnO`9v0M# z89gF{06~Md37Zu(h2Zfvq0$F7k>Yxc4MoH&3JU|}cNp5rX--+S?B7u$ChbnYN@rCj zxbd&-eE602L-J}TV_in?rTmdmdp>>)e`_q%o5RWee3Ly0<>j=rVoVY zVzXUS%R+yXIwrg%ukjjT61j+i*S@}}AGt-wn-%eS#caFL+m{A@>boS39a|``lfcad z_5BDF`w`cA*!LoDwffav!Cd5C=u3b+Q%`;aByLP_q_UE&5%?gb>X{W8Dr8 zS~?BYrWHqB9Tx*|nyRKSUt(4A=uK!ho_MM98(vzG_X=qQe!}vNvZ_bn)Y2&@7V%D% z)Mdxop)T9D3x$gjN7XL~ct@ptGMPLXmv?x7(nM2VSszoQlQA;AS~EV2UY#R$bUhc} ziTy-TaX-IqOrr6zGMfk6#W-;wy#9E-Lrdy!Boe}^*p>1uIKrY7k?h>yYTWVNRW;;$ zpIT;u`X3#Jd6W{KtFIj$w2qQ=3a!f}q2;Qg@!b?nf00^}C`(J^y^HBz!s_O|CQQ`k zCVFW{Sbb9P{Xr?*F{)&20GIa>RGoDfH)Oj(PRx2R+cFTdK!+)s603=bJ9M=eVnHtE zK(_ULmzIs19W3j0>YS*LW;f!x*}FL^SB~VV5bo{8C)?giwt=%2XsbTyY_o_5AN?dS zk>2w{=)$TQ>~HO(Su9^6L{I%gtH17cI$32lDtioBHc_TeUO~^ogsu*QH%Ihh^Se{; z1oA@<4_~as0+U7IfG){#^P?wTHlsu}%C;r8tFE#C9k|=WZ=YW5zM2iuCBV3wk3s_( zvO73#vkio(pm=%%E|gOlya;bDp(JL~wmejnyUA^K}2;6UhlXbvDp;z+Gda-J^c5A@NGQOp@f+aNBZi-i9}u zYthG8H zTq+iGU*ku(^uO@)>RHmj?EBrlKpp<|?Q_j8j}VVJNyK8EWAROb7g#S!pAeTCFuRMQ zWF>NJG|?Y-{GvSqkcx448Z`5$YxP{@xYpeY+2`R6HEjoE6nuQRJTpDS3sI6upKP-J z+U@aUZl~|u=JpS>r7^<25J&XT_1WWm z^4)zQf^fY!LurJTD+o3|BE}W${2s_^G%@X%-{W9tveFc&d@D{0%NmeRKVHvEkvCg& zd5PWB)Flz){W5gjXwhgW+L+0R7~kr}th;&(1{RZf`s&`|`;nsQ8X}e2*_xR*LY_i( zvgh3aSFi3GjJ%cE6|={(GIYI|c`2;+&JHHWHEJVnTEa$&`Z>Y)ECy!@ai=L7aI$YF zMqlh=`0{@FQa`=x&{$7RXx{N_`F(15-MFN@p9|+lZT$Guy`vyC-ilI`0mQeA`+}bl z$-=dgE6yHZ@@Xi|HQV|TGXkj47_FM7LhU2inN%v85^QzJQC3n|@i$RO1d@6q4Yz%l zzabYyPR)f5uPAq@V&uV=zSir9?PEx6@FML#VWrnheR*NKh3x0-i%o5-jd+kX(7mo} z;vAiO0w+b81Zy4!;>xI5iwkaWqtt`60U2B%C-U4wrg1Ce(GE;i`Dp!gZ+bAlCv1h~O|eh%mc`rM#W5AfLwioHOG9~Aq5 z)<9TANI(c|<8wei&>8}j27ty0C=LR3F;E-=s^VdFApyy-WzPY_KvgnS8Uf1Ep*RW@ zWkGQa$ol|m2?;2K&3+CT2l5J`(gcuQ3dKp_eI*p9fRtL;=MJ0(*nb^3(?CiCRGI-2 zTA(-!#J2y3kRm0r3-&FfNC^kS&Ktb)*T$6*G-XO3S0p;!?njEvU9CIOyU)9u*~jnx z1lGl4)dTzo#CgX5NV_Msa zW4CZuIXogyvapY=2gXraQaSSL(sj63jmn&eteG3nx*Y7NXEwQVtZNO04Dw#yS=8(B z*G|T@BA=s?p~%q=Y82UJEq-)l9e$KfO>x_2BNW(n4#02)Pn-@6gaSuGF0bn@_c>Ge6!%=Er#QF`HUeCTuZqp}avETY zr87Q$oqHh$TER$+NDV-;!B36f&KLEC2dK*mIK**>V+m&4dcLcBaK=AO6 zY1#DS{&;uf{kWz*ZQYKi{Pxg0f;xqvz?>Solw;|>$^*x;YJ_7Nu;`b_`D)j&Z}$2r z)3F{dE4@fM^;S!BR+t$&%|9Ihx^+#8qP0ia2+1)lVc&H)*NL@=&n5$>{fM_=YwLV$ zK89zfWoLZ7rKdhyd-XSDdTo(6apdv?CZ6MBj^DbPkdphfJ6>xrP-!OXSx-N6>#<3B~qI{Vp5 zMQnDG<$a^*>zS^dr2dmF%`E1p?7QjR6%}HZlBgNeHm2^LjDfu42RcD<+oM!(s6TQ> z^QFk}?H!@VSqba=d_ix-2T`fllGk`N@0+>3CJP zm9RR(i)6&QuUsYFEaPhMU|w?K=;Ao}hoB-hQmMX$ClB=&fW?MCD~D%pehXs`fKK3H z#?ancXk0h4NRt%*ZYyT2NOq}B#AHH(g(vc*Pp1z9efKyrQ>b)lk8PnL?kj$A)-Pi^ zOX?J_Q3PfgE0$qRd0rY?le3iMOKe{#3t9d`b(~LPtvbAMWzwrVeQ10#`{%{G)T`dk zfytGyV(D&74iKXWmG#D(=nJ)Nw?8H}Bjp$tw`00259cOx*WIYVON2EXPo1gX=OT<5 z_^ew19LmOJXL>2TZ&WFE2uF`(DImcgDx%nVbA%QgR{zvW{1)dsltkotDgZ$L9Pkk{sOC7A<6h4@t z&NvUaQH@io>c+L)ZQeNe6uz4n295I0+F&N3-q0^Ip#{X_JQzHB24wa$t6qh;zbGYy zQOKK&5*cOrG+$X!{FtbW`CZ6ku|{Z*Q4JawzjsQGx*tr{aNpLN#rbNHB#P*@G&eFJ zr`9oIhtAPkI>{e_s=VNx)5vb5s^p+A6K((sxu|r)O)8W|wag@LIHkbC#9TSAtN>@T z?v^CM@so!w2ZqT^S0vB7H^5t##|L)>5eht!u%6?F2HdY~o3oGf!u5ZN=9>##W5Es~ z>+nIx5(U}N^mzE=h5IsCb;RzPU-;E`DY4?$3{z1b;V}%M)++{}@|bQ1t}wPzO1Fb< zKjZTXriYx-ZV;1AQIfR3V-_DT+6H6UZZqzA$~TwRCr^0Nm$fq^`R`&c?3o(g7M8f+ z%b;^#&u`OsP#bu$NBb3?An*!Nqg~Z1OIr*~l~nvbW8vJ=8Q8Lu*^vSy zGO_2?{Jwp}0p2k$np!(!R^kC`y-2i;nx1;`Jc)(NCaI5Jh`dToUY0g`v@) z(AFv;P^~RzB+hgdlq>ygngQo*pnZe9n&n8|Do?K%c5Utx9Vfx6Jxvcuf&)}G7Ocrg|Fkh ztFf;YACCe{v1Kore`eu7z4}tJDTh54OFMP_5kW)uiBzs=G&f=1Im*Ba{XPrxzEf$e zktH)&ih2k>Ae;0}?5dU5D zfBw7Z|621`A^y8iX$|7P3&nN7E(VGlfK@#Db8CJw`m^F!3FI3uu81O=I3u3?v z#chZIFZ#1vT_O6jTOI6ohygED+JPAGLU9*RtAyen#DN$6xo^Ay{a@esKE#0+Djh%^ zc%gU*ao~mG5yXKP{kd|h2j~+fftJB5C>lL=hpl!^nb1S7Z3+tsB{T&;DzFEhyyPauOJS*=#ai~ zri;v^OJ=~|35!j7=0KR{gf0{_^?G^ z3V_QTz2Moi4)zP=@fT>7MtmN5HN@wU2f+YtYX7Z>fnWhAEhvHjJ3T1E0aiwc&m(V! z_&o9;c)-dGDj@)7R!~F)jO?I@1n4;-K99T`;`7LZkO4h6sDuJ&c|j2sQ1gQ#8lV)2 z_&o9(laA;8!Gm52b^ z7AO(}lPa;A_Uc*a&&F9Gkg?%A#84^bcV9!FYpaRerphyiMFGKL3i#6Oj;v>{a z7|sL+&ZIF#3l2W45|J{KL>e&%asx2fr~fvqbzz>DHk859^i=RLiE5C$D5m;-n9??N z{UV1A{#8M!vnXQD{zBO3o#iWo#MdZ4u?gUXslI+2T)+>FU?B`ZcP-8m&sJt@fE{Ik#BjC-*3QwJR`g+M*0MSr4uSe!PPSX%z$ z6uEbBQ?L~PUZ*=4A9nqbSAq3YoN?}{uVn2eSRcv8{pt2z=zt^-!|%fL;7LRr=GJ&W zgRaNjXFu|E1r5 zip{Y1!NrD#XDw@Q7|e6gzK_*(G zd3MdWLjniM6XN24(&2WZZJ!u)*$_O2V?E^qFR+*ezU697mC#qDti=T%zbL=?wfHx< zT?{y(WC{s%3H^zaxt-4T*%p*9h{DzmBfK$wq(O33x}*jpZiD>o?vxSysuDWxovPJbM|4buG ze3lvqOYXQU2lbg#kf8oj_yjpZyB&QR{K_>Lq4N_Ad|oB@=Z}AR_LsBu{05~7QKg*& zY85zG;~M`ehP^wswU4@cG;JoOnMKb;LOce~t_O1)x)^i@aG8>Ozcg!1_8yJwoS^2x zKcHnxC7$;vW;+|gxH1h%XZ%PbRO<2t$*hgQF8o*ew{Nv7dln{?kNg@>F|r5rB`^GY zGtV8u?+G5K8}eRQ1lr?Mt#0?TNJe4+SP?2-3Q~~@+`Q-q_nEpFI40@CFB>;YeluwE zjM>~uT?ul!E5vnjoaIvU=)}lmT#;@I3>>=yZEbA=KdWDi{7`p(db?gWBPw5K1<3;R zz$dH!yeB~nK${)fa|(Au`=o zVg<}1pvVRo#XylA(2GZVPT|RD|57*ypqC7lI03D6C~^U6Sy1E#ls=$6r|?3we<_>? zP%4BOX1=G<1AE?0B9GWC<#z5Ls1GKT}OkY zaQxnop|CeUmvnK5rzrfL4V+Mv%Y_VrG(frqz4{G6xC=!Y0PhfrvH$|gb2>se-? z=k+X*I#6W>l{A1dD=2CLMRris0`i!Ss;BNB?KxN00|LLGz4N}plAd{#)F|z|syycYv`A>3LT6BK@0{9spx6RPqF92chT% zP>w>;8z7xTg3QYFHxjQ-aq&-*(ZI!2!AHKMlsz9`9(vC~{zV^vbQXHGFF?2eMLz&< z8H)Y@_Bs+|Rub<1#isuOa!T2c9E8LL0N7j5E8YU=yHE@SkPrXE=UI6IS(-qA+|C$g zG$o}QKD5q=7C^s4;`lcS?I6Dc3ft=7C}+ARqw6EPzM&-+U4OZ@y#$JmOF( z2jGx~VlKcU2gMHnqtd_mqW0f>$paYGpi(|Ss|7(w1qcEt^pO7DCC*API4Mm%c+(BRDRyLiH}RzDgpiAi08%sPuP6ox|Mw*<0r2dgKP?5Yot~$Qr-H%Z zZCtbapTm(JNL(3!?FPM~962Q=<#55$Nfh3As}kdi_C_K5gHshAEBe zSI`tz>^wDav8a%s`bCp`z>Xdn_1*mSTbR1j)6@Q>lsT2d6LH<1iGt&*Cqwq%3;U68;7&MV$fc-8(f>%JE1 zAK4`2(va>l)hd%icf3LT0bA1!*LZ#!>pyLojo6My$bcmaoy?m7X6ID@n~9 zO(qaanO{}KoqI6ojyouH$u2aSJIDl=CL`A4zNj+HDVy@{%OAqIibKDYo~2B} zEmHL8Vm3#8cYNJK!$PnG#xHC)3#~ute`B7w#nsV*s&sk5*jTn+c^9&UVA-#>Suft7 zkcu4q<>$61?vx4oBf2o9v&+ECL1(?}n~HjkqHQ0ipLGwjwA(~^Af_gEzQ)N^8#}rEfChRvPmV7!{L}OF0h9|H?H3uFuV3K|g9M@0T~~L2WcfpFz+jADa3d z29G=W8~>pNJny;7eq1@NM<0swet(Jn&{Tc5ifMz+-0@%;_t8o3Zu{kJO-_kL=`>@5 z{R9s z=KR&4s7kuy-Y1h-L&`9|8DX$CgUfDqt6rGPi$f4QxObvIFH5VLzue)VfqZ<3*M8jz zH&L-_-K4X#Q+KUqS??;>i?ZxfoBX-Di}j^z>6crAy%xSK$Q!xl_>H>jQb6J!+sy`V zgJ~ABcoppuiSoqH;LRVIANhs6)nBCq0(+}ESC5Gs4Xe7n$nFwd!6wp4#T+@(&5ZHB z)MCUV;I%U%8IwRUA^bU%K#cFFc1E234@ByXhNl$LGfkNoBcH7eRlYPCNwpW2F4X-L zh_bt`yCu)LLm_VmIi6i% z=*Uc@@;3)hlk>a-{^De%*)eEMriQd;sfK?d2K=_lT=2@I<_G8{%DO^{x0HObuZ*^q zL$UE%!&#`I;|iuieV@h^;a-NCTP)q>g91P-5+7!VY!fj@#r(OKI*=$bM|n;yIZyWN zpwCC_TWBjBY*V5%Pvqz3TiB-@=};K|fkSy7czxKeY*aja*P-xRHn~n3@pX6|zcWkK zT5!9_Lo0hu9q&!+%{cWvMHk^fl~CcItC)qHK{#O}##Zs9AXrm|Qa(GPc7lKtNNa?lI!*+#0C&@Bx#7=8qr0y3_%E;JO6w?cc`}GL9u}E`s|x zKhir-y`>hMkPWRwU62TR0zYrMv&;09A)n)_Q`bohVVmNqpK=hx<{R$Tzdhs63dc$z zq54TA#HhV!4(|QV(BPLt-daX(&5z3ZX7-(Wv1DQUP{{pUjG5$14g2#)v_PND{bg_l zv9O9j2q|JU?0qcPco^pjZ|a{V|DB`dTmNH*pNThp1-|>FiGf|2(r>C^Jdp_Ud&g+> zo}vMrTkXfVS9i9CI*j9fAsCU)bB`x&dKborr3hweA3%7 zbyPU|^D7i`CIh9-N8GEt&q~<=(d&2HeO23zOx7(^}-`VK$ z!*503-XpibClGpS`AgR@c*T#b(B|~MlU574V;E>YWKWNk#Yo{jq)nbVo}a1U;tBX5 zBcF&u1G+^areh3O>MilLCa2C1nS^`O$_aYWP|$}gfOI7KrHVjdCSi^dv_{|x-gaE> z4<4|#*3Z!Rgv(&nExOdCt#DU>;;-<#P;5?Jm|G`Cu85p5Smvwd0Bsq9--y&OT||tl zri!4}f=ryfR~Zalsf}l&pzA{cM61e3s?Q%b`Udh@X>O zdf4@E%WPDJ!CuaxE6fp0kE)-NYKzbNJa0tBf0LGKv=k^RebI#C*(tr9 z>v6Z2$+y|S7OV@iOg^oRP872MJNc_yi?R6S*$h8I)8Xqs;t|;Lljy#TU>~SY6jblmrRaRU!J%Px-LN7@&{z5ujQuk}0EQV)=!%uAnc7;WvMR0g4x57`@MmeGoS#=_* zc&f5DG!GpT{i5SZbu*90wFvg6=L|hY4Lmw7 za%jJdXR)Mpcak)RB%(WLfIZIyAwO0Ch>e@F4T+K{6?iQk6$KMn&J884?rbUu-=%u)?Kzz?~!7(a72{ubIxu z@LEihTl!nv?<@is_JabLNACADaBZX?-K5?v`t@2O(tQg;WaS4F$d1f#5)>$^O>EJ1 zw1$YYo8dZ0+fF#pGrvjoa;aI0)>PyYQX`&>2ia3JC?otujxNM?ctdX_9c{l^Y3C!S zSRqh}hme349%({Tiq(P3Q0yKz(?R*RtTCA_);vH#soZD*6RBuZu(;JfX+lA~Xo?%_ z04}gFUR_F~urnY0mU1w`S=0T*-E^dX*n>V~w=Mdb@zAcnbU*i_7rB~8nPYg7j_TnO za>Zv@QTRs+cWop|$-i>)A2k0q^Rvg8Si-*h@QYsm?Sy zzoieo=h=Hbc~Rvnslm@}E*d%C!8}R}l4KKT=N{tK`*2gM0f zu(|7ttJ%W#ZbN_fiC11xGX-6?xuc6c23dBH^%KQ{`C!1<=)kZATSUxO2j%J;2VIAY zoOW~LA0NMLRI5)(yR^O66ciE>99&yB;8hkwDHy$K(k*Ar>S%LY6&LInHlCgesc>Lz z&ZIVw)Ch0JS1)dHr_P;4I?hm0dEYdUa;aTefOG7tcr;Y{js6_H`UjU%6DnDW>05cc zNtqu}T|M1_cNbv~j@`|CdwZ`RbtSJRH+P@fTmBXGpamGvLSxD}2%JjB01s0Nx&IcC zx!;E}eM8T+1^nP&AD3mlI1tvTd*PhPfavr!bRg6#1UAauneMu9xt_t|&q* z#}ZZ#m_}ot6o^}7>}CW@+{@NZe4EcWDK8T)Z7ciy)#Qia=BHB~HfNXR?@^1M26@*_ zjatDQ*gBox>|0iUOn`?M7jG0?NiwT#U;XX4I2u3xTJV`UhpqPS$?wp6UUksyAMi4L)Fw)GDUDZ4zFxfF#XFm75&CPuXXN;WR~=GFRYM;2HMU&J$bsG%VtPN|5`vuLf zqT<2Fq5dnnt(zVg>vr9iLzQEV6PMrTKZLnKh$KhZ+ndN@h5l)^;jThwl%fk|wmxUZ zJUn^lx;fDgrE}~d&Z_6SH;>c8r$oXSv>~*~C(cRyQ;FbS*_*4x!i7d}w<`KC!n+96 zu6zYh%CkZ+xz z2ve-ZRM>kQxSJIP2Tk0g(@1+jpL#S!R0P$qmX7}1gVkMDzxs0>CVuiKZ7ZE*`EWBb z|C9vGv5}BSCI!A8qkwy<2*|L|o3&BJFBXYb1*z z|4x=)-`Nnuhl>qdMG|quJ*{WBwsM2Vx^@f4k|_k%U4LuY+4wh#qz`17!S?Fza(3VZ+o%0P#jd?MK}yZ zKFsWlfGI-X`^p=kZ)(yklsMON>zUoX=K2dG2vZYGS)@manjw<^QKkYO?f}NsP$;*|nhZD9!KKDbh4Kj@6yp2w&JrYKAr>G+19hyzY*j zpUdj<3GNok$XvyaWBnWkAK&*==^?F%pf4PudWmh2_X3?AelNB4>QC6#uV;c#G+SomB1I*4q#jh6#vBK<^y9dHclR4 zNiiTQPctJ-22a+!0-9k8s+XG6-60(^gF6FEXeW;Ns6co zOb1x{Bn0%6FKBTto4*8?O1p%p3PjZIT6vN2xVdY|pjYhlT^8pW&2nW`baAI_Pi;)z zEXeg9UZPu8GG@t6$(INX09Ozk%d|k43&F2^571llhD>6EYu!)e{xQ zEyA!xK;wgx9uAWR96yqq(aGpZj!wB(VZ9(XCZ`MVA+6{3kkv4;8pkJ!Ba={B7wiI0 zO@^E<=d`uL%ur`>Na(t?nhGf--I??EOY=goKn-?&7?Sn4MTxe4eTHpr=72tCy;AqfTUAGu zEdSRPW-|$9J>t!QnOfx5*^)w--m77Z@r0vpR`tKQj!WmPm$7Dd+0}%GZ_FlT+bhpE z?%GEfcbT4KCwM!N!dM2y2Or-Jv&Wp`rWM?86Tk@F_Lw~`7JFf1i*%NWW*D#R`1PfwEf2QBh132h5$IY~UY zuDh*UX4cO|e$dQAeV?(=U_`zFISl4{&T&`xzEqedfgiqHk@H3W13a9I?vt8RItaf~ z*f|wBIU$P`bFe&CLbZ)OLKj^gd`&tiJK*hX@=Fxy2zk@FFsV42(**ts4!kQ)cr!G;am*v(BEeg~q{sp@v~kNpNR_c$-bRy+%Jr z!wb7nwH9^M{D~WUyNTIjrve_UL;Moc*!S?mBy%Ul1HYFn`Qd(4YHhE72YcD*PAsJ> zL>EvI$(y}*%jOv{V%nNW%Dl9tyPlTY`6!ShO~uDN$01v-q$+z%zZMRY<}Dy;&wlXA zzn z&@Zx3EaM(O_-y($`MoFo+Qho8qEbJt$Owz&0VJS15ulIQB zm3cV}3E$Exp?~=~A1^{sMignG^e6w*w%Al~sXmDYypQ)5XRJ(9(5^*?bS7~hPv*N; zlEv=|gaf@APYD+?5;JyNWUq^+z35+!@+9RseR3<_F6d>?%8!)4B$v^%G9yz4HBx^v zE{=JVL1%gp+fE*K8FFa~X5MyBazx!#7u4XD$(*Xl^dVLxlGD>6N(-TCnZ3caAJAua z&RRY8>Mh-N3Yh0;M38FW#qmtslSYpx8;AGc{tDyI2Paxi2_IY^aNYvg7RSrB1_^hf zKi$GjRnLn4P#tL~=*>sBP@8Cr+>b5B`r&g4bT(4e;h$9`%Vzvv1x-5& zd?-V5$N~L~&ND~EC0hH&l*r;8M`ZKDt~h)iedUZT^6f%IcrimScCg!)OSR{UUnE;& zdAh(U4x{QqM=ll5iwcYuCIN#0oABe5Em7iw;PGzfcUpG2klW#&11O;-rmN%YMTsA0 z%0p%k)RM!|DzNh-5yKWlhl0q?MRB6O%CkCCB>vK;`Z8mN)Fk&n^lJz>BD7I>MAls{ zNe`he2^n*d_|{lX|8l}GQ+P#2U|h_T&gxa8_+f#?yY+i-?gPQT*!;A=ziNCpAKmJ@ zEDVf3|JsU1ev+yIGoCJ-jc&FrME_XS*|X`;Vu~7r`zXd}x(vI$ae3*ha<{BbUo$JZ zwq*BFhq9a3gQOfsfpZ{uOl9(uJ5!z2{NVydlW!kRd1|eSgDLxXA<3dh&yLh-Tholb zEoq*D!0=_hrPsqzQXi|uM)a-(v0R$T1#(^AL35sdIrT3^@IA(`S7OYX+3w-8Va2lH zh)Y_c8=P`GO|3rOoxv-^f})#p=kdt!uIt)h4_5W-^>&te6Q(?wYp->AR&%5AA-lPw zrlD9(gUdlRL!pG3S-Rb~LU!r>I2N_^LiBKnR9Ih`62T?;Y5AuHr8@lB4cdW+TYhYh zwOLYic-U3b;3LZP{J*49y~aMG=s(cqQ;>WF3z5isQt4=jvI6*p(wWgKd}ZVLKe)GF zE*S@8pbJ(DQ)~ZJO)fVz^}if{fHfZGI}SMVJZg^*?DlR)e3ie#HMuiXFxF1Hh5Sn` z8l5C*aF6DH+WYcws=ny&d(Lsq^N=xa=6ML2LuN?`nP(z$O^MJ=sT2(|gh)t9sVGi} z5|VjNNr?=h3`t7T@0{y2sPFrGp7-DPd7sB!K4R zLJ8lpr0z%`k#@XfH$7gsugj>_UqIq>a8j++`Ly&cBRfsLT)Ze~-2C)>em}6`=pCA& zyRSDjeKC4^fHG2K^{l{f-j_48a+C+{==W@#vR)Cmbj9@Tu?c%s3AJqBxFk}0&D>#% z4#n%X3mf}x^6#D2k>kp08(7x&iWNE5aWqcOpx5|`dbvPhTfSwgp5BAZCchrqtqK+H zlNrS+zSR7$w!jTdx-5tvD7n^FvUC5lcgA9@o0m^@E$J5ReA+=7rRq9JO!1Dm_gg|d+aCcT}r!^uC-ro<9&=1 z>!2Qgn|Itu^-O zslQuaqxqGT`g7;|`v%7!Uyj>nb&^gZ=iXdg@-x;q6cxusTj7No1wH)PcsT0jXr^WopLQ5)^uM@bZz-j0%f~Nu?Gk&%{_->BwY&qM*b-HUt+cj5dMV5E z`<~rwzGAx;?jomY zbaIDX$8N1@wXfozOSsHv3+hAp{e8aeEe~#;+4Vuu>FoB&VE9^3>$&d4bA6T#1tgbq zk8k=&N`E?}NBgQgJ4Y{+@5PjJ>`kM~r|9?H-?3A6So+)vkyl%e1}o-!r=I?Fg%!L9 zZ@ibv)SyZ~m|~u@X}@*AJ0R$c(oH&sA*eYpV3CF$Z{M3{nmJSMr3{o*iOqFSATOKn zJNC)L>dk`4hCz$fkC!a_Yhl@{b6xrGNJ;Ts&T5p0Kis{>6?s*M-Z~H8Y^^uubLwPJ z^EaZb+=Yv6&5L`#W@{LkZQmc#y@_rD+G5zW%`S2KzH#%o6v*%7j9bn-ds_E1b`*=Z z9+-U7Z1!8dCnP6uhpuYg??+%&=Hl+WF(S(n^yEC!6;~{?d>W zv5&Z6-ZuV+Ox}WJL-)#$^P%!h-2U`VOKJJlt8+!m-%LZR?QC{CP8XQQ7`_NL*&n~0 z!y@D?2Iao!kuidL60hkgsjOVSu1d8f)t|%})u|jy5vMVE<+xI8M!G5Ar7!P=w)d}C8W@_|9k7?xD3B>V0>p4;s;7Ah_Caz{rZh>JgHP|rK2W%wk-D! zHo8`qU3$+b`YnCcq7eY5$n705rkROicA3q0c?dqwNcQ(6^Y z8XE4AY;YtyT-@|>-FW&Hx!Bbg#-tamrT4~L>^on)5sz{+fc=cVvD;=yT~Hs$pUaJ! z?3#d*x5g|7f!+KdRq4^W&6#eiKO#*S&TP*xOgQ;bQgA-8d$|f6dUyx_VMnq?!i68_4+XbB*+^4;uDmcFpgmf}z&$P>WGuNHe*b8d#MM!f9D6C{?(m9EEASXEi+cU{+Me5xF<Z0>S6;b3fd zewg(B_@%&B-vwLE6weM(?)>`N%`{QeF)s$nDQ{2ra@~h^6}@5~iEQ&}@(=Uj5Z^gw zwjIgIE!E>ZUh-O$m(_4t>0x2^F0nrUpxI$lot`lb{|1N21B+$0&9U4x?jJZblPZR5 z!+Im(=#7DGtGNR9u*#gB>xmJUT^UZTA=M5fnOn*&el1NG_s@-KXX6gHRRy2EOLw-w zEid7P@aoB@Y99jSNRFZ$jmFhg2X~(xQt=+zuWVk;*eaw|Jka<(*GJcV>FtIkxWI*H zRK}(y-Hl4H{rqfb+6SlmX?H%1G~LM+WN(NIVCOx({J}!J+cA3deJ@NesQ$$M*nv91 zE-lg$Uu5B#g)q@p-<_nq&-&$cZp_^V4v(Ik)H}K9l4kJf=gBL%VOOmmI&UA_p+1?M zk)>v5)h>LcY_wyKz>T}Xl2f9&+j{*z+Ue&C!O8<3#8Th3i)EfXoiT91*>e@ougBqv^!0@34A&>LPs@(Ww7*UvU2G`}P6z2G8W0 zet)w7e>zeN6h5J#a`eaZt3T|v>=~i8+Hr{RVAp{}6$xLNhRwyH zawkGb1+Hg%c1jd>#+mmhdv?rx1(=#Xq;Ct^8hkk?aAE$cl1g|`ui(=DbaSTLn{sAc z%Nf2-p6t3(Rp_LU8uk6%)I&SiYU(0I^^Gm!``=PKst9kLm%_E5MgQ0mm|8#iaKt30 zi6y0~eX;)r+Yi#e;>NL+^aMa=zOID1SPzymd2k>9ZmSQ-^|vZT>bj-<}w}?Xn+H zIc5v}5F?pWP}bPg8w#wj5&YG(wpUv}rZL?+=`-KX;Wl(Iexgnb+qO7^5h2tYN!-mGAm#0}>+&G1s=uet2NaeoC(u~a zQ1Zp0H)8fYIdw!0nTw-zn`f2lZrHXK2ujFZqqrma!i=P~c&9|zcQyBI;&f5#xWoOJ za}RFHWFlWE&x{K`6P@rVlEbOftP-zvm?CxnzdZP(_qF@{E{Q`64&OI|-+fq_Vl3vQ z7>f4l$yaO6)TQKVH*08k%$o3cZItWUKuFRx$MIG10bOmpw@fc~Crn=7a)n`EuogjE zK=inA zMBOC3GG$bsfBbxnd(X?Nh1%3>D~D$!&h8qhv=<2AkAL*(`Myk^g`v0SB%w^-gzG_{ z#Nk_eqFg$-_}@iji=C;Y6Z!Blm*(_z2=5}_jMsBT0sJ6xG&yu(VDjc&mM+^o3*lGG zR`|MzT%x~oux+Gn9(DZ}*R~J>E5{JG3~xaa=Vq=~^b= z!q(Gm%U3eq;(cjTSawuiGW$_*@=}w{2ZIaT6_SUvv>bPob9y<;J#0HHFl~DYcKi{` z7bx;3iftfpe`rWDE;J^&yhY-pALabe(>iUBr54xK?(ah3D<`IDKTd3#-03Wv{Y5H> zx~gaG8&t?+0?{O0J`$`UPJx>_h{J^e$SdcZ9YY;$(vTMvJQos|ynen|RfV8Ba~#KD z)0v$Smz!}xw!tdEM(TXhsPLy`4zW11ZQb&mh1UbSTQyrBSmZyoiVoQR(N%TXs5gq2E8Y(xYY%98M_WEB4p<5tb3oUYTymdjcEOmRu z*;~~bOAa%f+r>8g82>QjRP(th^+4}lx=Rl~b~y?>AlZ+N(;hq9;Udfay5@8F@`tGY ztt&dUxT(E2EbRk1XlGZ{uZ7$wem2lRe(Br-+|l08D|O7DwEO>0D#V-;iH*4Fi<*z|^j%d$4=p@y=+lp_=Be@)lgg(;`OGTEqT$+^~b8K4L`a&vFcgYYe#T^5;gzhb~ ztl6}aeM%+p(e|;(Wza-=?mXx1{_Q!n+I`L4@53I|iEY@P>bSSUApq=mT=e!Bc~Q`i zSHwX~8xtCK4lS{8A|0XWc&s>WlWF$QUS>#gH)qHf{$1a?kEwlGe7thx)Wg#!-c|*Z z9w^jsF1^hTzIY$nC}t5!$bLwNF*uxh3}YguJ z+H?Har3rdmIwMfe!g!Z=7T8`Hth6e4#)tnsA7i+A1Bs9LM2pKeoV2<9?ZpY36|K3^ znJ@FLv(Ar}+=w}~kC%dmpY}y?E^%+21P_F}T^MepeqN@raOd{Oo!doUa)#StxYhG= zm!6zusvqhPy3*er$7ILwjY%(1iunj*bmfU?fmp9W==HwSDwfiXIdvT~jO@nEw1iyo zR60X5%a{>W2U6yItNxcojmfz=jg02nXrXA95Z|F}u+|ObGp9qt5D{+S2Ukgd3 z{V=tqMayJ+)QWX&)l1s6XH+vEkDyF@%=3S|lQHAvj3CEOAczUU&pG3C)#mJ}3pxn*I|5%7$y>Y!9 zSF5CVOT{+7!20{zTKuFcFDH|1lS9ch8tUJtN4Z);xwIpHEY}xX`qZ0+`uO%L_4N3C zZfTo*$wp6cN5VzMtHSThD~0r=i3ghlG7}OK<{NS&D%AIw4=LtcPN6X0b)tl)?c_v6 z`{6!c7K@wKylT2SBOk|FLN3J~J)XebTc%EwpQZM;%W#^a_iQrSK+mm)jLmgc)GM;&+GKWRnscoBWo;qI5GnmPDy87Fb|9s#l!;8UqXMGNzd z6(MO29>O`C5nZOQ#5qH4B^V6vxTkS>jL3Ddp73ydK4Ki8Cimv0Po4y0eOe*i%g9uv zv3f;md+8MZ(jpr^g}u?F>%M&-(;66_=xP<%l-nxW)$DC6V)2O#-ymuqTzPmZqkC}l zXh*AH<7?CH4FcHyg@ z|Md+<5uR!{(uy}o@^Kk)iH07-@1}58w35znFK88_BfZJkR&rcWQJ!?~Jgb1Q0`ID$ zs@Y>J(cq9+A}Nu9TcQN2EPr%ZCiu$7-q_8@M|j))(-*R8 zO%i(dc1Lv1NYLQo&ld2JGQ-6gv&$m7Zyp}gT)6C8A>U>%LdQoL+3q)y{9wu@s?}4U z^>E^ZeNm`T_Kr6$F3vGxJRSmlM*jMGE((zx+U(bKK5e^dmwxoiqZW=j=WAIl!>np) zmA0c39d%!_G&z18xk*Xz(vTY__1Rw_ypQEMED`FGThOkk9|yEkwUb0cZE@keTQAP> zMh`#hdut`SH?(NOvm-X$y^pcL4lsec4I5d0OgD7*D#p!0Z^XCZg#g-@^f42inh zx~#=kap&j*1XQmMI<5nH_D0_S#~+O1)I^uF*mfI1p?lP|~*|4>?kcS1e&n8l{g$p6@To$xJn zr(XnUQgiAIKxiZ^?WTGmetW}MiTNdxwHdK{rZzUj)B>L$$=2(Tf0;C5nSUk&Dr|@k ziYV`R)DK(NJU=#T=u7A^eR%Q^i-yjq`aq0f-)(tf%3ZE3Yf(Dr zmM)lmjWGIr|CV&WWIO!M5utGvifsxJGU@+gu=B>t6#*kfj%fhIK)VVbG9w*O6Ok>;Z_J5I63 zrW>kLqrpuoxEn6q8`Xc)hI4c!y#?_sEHtA4q;3DC6&gDWi zQ25zRNc^eAK(DDHwPekRnQI!~5uoUVb;H9rd#;091i21XX}aF^xjamgx^zTIRHd*b zL!v*_J(#rBrg5&*sV7(0L1LqLU7v(kaTVZ?2lQxFymlRv;PDsfg|DydVA}UBP$$W_ z`ke#=WeHCod;L{P&*jp*D(mi^Oj9tda!&rrPH{)`IbBm#yY?nC(&*a#6FiznZ3>`LOM#T zdK2R<_l)lKHI37ig;U5cr;2U8U-4o`=ppT+j}&k(_r2Z6jJ!nbW9hf8r1<$z=IpZU zn5>CFgXtSA*?S0cIH%aOQ@Bq%1lp}V@=1hJ(Sf`R&wNdx-JT;t79JT>t4GhJ@)aMH z8Yt48nvIj`@VYV^IgcCi?wl2=plGdr>+fStGq^2}LXRbyapVKlX_3aTukl$X2GJY| z;;mm_<_4CTjviE?9(jd)+mR$8kB_VTm*Ymn?Ac>m_DefgcL?dtHjoUwZr)3mT%EgSVj$dBv2DYgU$vtE^F#PXcj)ti zSt}0joJx`5fT{a3uaqBs8mkF>IZ)zI-qE5btdZ7mu`-Id{nEh>Yxk`;n`^utW%V?kc-cR%f4RGMV%u#SnVxwrRWA{h)tIxz;VqFf`xC@cI6h>ib+gnRFx1?Z zsdgpf>w*4fidm_g+7eaY&9vXQ`@Yj%I-p;5=1%8Z9p`kDon!Na-F6nYHJqvs+K^u9 z){M9naVoyUC--Lj02np}t0W~!otLMeg>biV(0NE0cRML5m*VIRZYfx<2-*iyA)A28 zbOXr?RmoK7`)NV=oRS0u?s5PQCv+eptJ>j}Ij<3WO~)=XxPrj&`H4s|>)tE@dK2OE zojUqaHfo=b6swkdGBM8_UZJC~VlA^N5G`5;-Gc1s(|4!G9NTKrp{7`M$yx9HD^-@q zuNT|1)Fv*@u6zjm*qm&Hv~~~q+~>WEQ$(I6wf4eNDO3v(n%q+X^QZqz`+#|}s3xH# zeGU+;g0pTyZb$}ACzyq@J%BHFVkuYEa8@q{YvAq)41xj34R646=naqHls8ya zEqrbigOB0FcNnaLVvJ7F!&6%P=&rD**#!C zY^DjJSxGt&IV(@ z+F@`AR&s*SEH*cYoW=GAR&v9thGBUx435Ckz8HK9iw8hx7F!TR&SD#d#e=Y_F<3YZ zgX1tE0)rDUUo?cICE0E_of>*AZJBdYXm{P#*SlR~d|Jv*kgO0xzJvJ=W89N4R~!bX zVD@+nPQ%QJ5R#UZFCYH)1YWRx506eAa^HKH`5eaa0j5vE;0#Qiz6Q}Owk)i44z`P5 z`!{dkJZzmvOHK}>C0pSmk{pIrEg;EZ82p4JhhcCLNe-hWCx_9J&F~pX4#TRJkmN87 zenFDMF!&Wo4x>fQAWus+!!nW_hE;t-lEW~#f+UAw@H>(mMvIz3hn8%HRU|nKtNMW? zhpj;fha`t#5I~Z{Xi+m*(4uC5KqNT~tAdc^Fbq<_1Un4kk?b&9#0<6Rr|_I{3AY+^ z{os<*#n1RM7(F;j4iXR}N}% z=-TT9(6t9K!$F;EFG7P@;DBBXvckU4F~|mc4Fc%edjp_r4`PSC-e6T6u-hmGH^5Hs zFvtnpy$4XM&jF~_AuiZ%4y)pZtv_Lq2e$ZvL0;Hw1-OTJ4-hpv#8+mv=2oDMurUP& z`C)x(3<|(H^dM?;W)QVGM1Xaev8qk5COZZNVO1^+3c*TzAZl|0h}s+yhLs3dl?W^^ zj6qRYS{#F7u(&jc+FTwa+guzLm&d9kU|}T;O2PzH3`)U#njm8H9|opf7Y-dvOE^~c zxF~wGbb0omo_>`^GSa9t%%_8K%fMXv7?g$CjWH+(Gn;{k&3$-^dR03Hog42SLSE?y z$-~SR7>5E(Z;iptFtyzpL~ZVbK-#tERt-2@LsC)|#gSqG8Teu?^7cO^LM7~tg{sPE?)Mo=dtUv?1`a$}o8)Fk+BwP~aZcU&w-m5)cDoA;2><)WjbTlB5(5IF)wjMm(U1^a11dLOK_!;Hr%B zGX8lX&VUD$0Wq&%jKl+h?ja$>11Kkh*PmDX^na_k1!bZ~R3HNjI!a_@V`%^{Z;$sMNj7SXd za1TKRQU8Gjsqlatq8Bz0_6Ph9x`%k7TvWdyKjq(DQ$RT=k*<+}3LXzg0G5D{dpI$~ zFAOsyetqw9ojA5gQ{VwL#E@8P``rBkT@UyLBIAh4qxkDu6j~dLi-V2_u(2XTKGc`(8C&2_kPsZarUfB|5@AwM`A8%`GoJ%esRXCPxp6nq7if%c#R zFab0IIlxY25U6mIxLRBaPB%%HO~O(PZ959^*&h%P<{c3h>g^ul=}T@%Y<)wIoFqw7 zqUfs81(2?IN06CB*D>jJKI}T&d8f0qv$FG!sK`1KWBpP?M?mDy3qE0VRC#|6mJhPd z5EfzVx2Vu>DXz%s!tUIR@(BHT!7uo?@yOF$5HTJZm~SF4W&rTq=M~@==uK9C(>nE& z6&z*uiV}V|_`5w-v^@gW9{GY_;P3WSP#yuKJu)!nM{Rci_&EttAH%=Cxf*Bj9ikim zt2y#?+lVzszHs29L`Er=1Mu~B_c}lf@mljCeCs9hJF9FL<^3;-WSw|1iR23-9z5cd zLJ=1j66Wp^ur?q(>*dY3h;AcruUmq@+yeJ6q|b#;i%@_pojk5w>%|1Qh?4j@{~j+z zbi6o`@gf7!4gaM!*`;j2)FxkubC6xt&*}1eI1phR>#oq%KnZr^pmHb(qSA->z!k8& zB&h}@iOZ~$@pGKzQH5mIUGYo*tu=Y(Nh4a5fvD7fX-)2s6efs#At{LmR1gD_J%Vni zoOeW!d!W}(zb(1`QeOg{Iz+&i80POCxn^jI^&^_-C@g3!zBa=UUHpiFYi#1{+2)+Z zK^!g_jNSG2sJ#UjnLzVY!EtlXg5NYNZS#5 zn1q(lM)4-kli2v^ahf=&0a61;z+`YIsEkC|QeZc31y_dCMEZds-@-voiqTl95G$erN!Gdm3_C@{F^U z3Lq{?O@$K@0stY45N{vv5br=w@6bOWARhF)+=hw@XK#;6LuMZO5dpZkD5-FqoB+US zNDK)lk_o_t1om*^HarzhQ4s(Xlf@lG`2enc?tw@kC(i@2nttA)J1D4dmX<*BB^N^) zfZYZni%)*2S%&j6pwifP^;-70%BOEkm{($?qIx=>Qgg zW-1(!h?XJI8U4@!bc#$=I29GN42fyzhX%kqGg9H)-GSs9CtEr|OpSpGCnEy@GRbxh z1bsjZjUqB=7?D|vBeY1bIRIpj_7=JXg+gZF5AZRV3hDqWzzA>?hy*MEet;Fgfzgm8 zCau->vOKzjhRb9gp!$Ob^WglF9h`2lEW@GQy@5kS?) zGjl^K0ID>eNftsBM#2{lBReDm82;3eu%;t}287I1#BuV|b3w|0{;$bN_%%7{q#S~5ab6$cFyBn131|EMJ)djOqkVpKE`CqSNGl$?+vu!B6C$f4usY{H8|$Xr5p zn0N~EU5J;Zg!Czp8HCOsJje$j^9Bj*?f|lQaRBrdp^z3bh+-fobOk(!8-}KU2HZms z1fKxKfFkZR)Qv1fb>KM=1W<#^xB`FxT0t1SCd8+U%zKub7|u}h1T`zk?q3y zZxd^Q6P?kRyx&TpffALuwuL5<4?k%C5NG)Nl=Fuszm74isK)D$Fzc0BJFM_R8b2HT z`#i$*ucD;2)5ss1t~+iptZ#wbEqd~Z{61d%A@t9)1MMGu_;p;M*#Ig0)Q)UW5_VYN zfaHFb|2`2=t#6%dVoKD+e;omMAhn-2|FyZN_(Qq1S%$1-%|CjJo(ldrYoRWa6BNUN zVxTmrg#=d@a36RWOaiZim0%nA8eD*wATdY>vO_jC@z7=HKGX@l`~NF`ofG?iZN*bS z3;^(t1N(P1{p$xrov#1krNvOjb;r>EaC9iox;^V33-Gr)<0buH z`G+;P`p1I7e6_;bZvCI-<+>IE{w-gNU}!mjp0r8OzbtF6=-=`+XZmmXnjinSd@YXr zTfP>^$h#s?+6o6+fdL>1Ob73RPr*Ut`4|Pn1xX`o+ZytNVxe^85MK?oL$9FOk|Y91 z`acI>)E1bV{}~$p7_jx8|9^2+f0*mH&;R8CNywuu>_G_SuR?O!+L35|*;-s$U$zz= z)|ag<)%9g-PJVrviYy6ItP;Q z5V8fAL8-JfN~NSwiX1r+Dj|VVadDK2iJ??f6r~~}C>0h)sgMv#1qD&MX%k8b1e6L0 zpp>5&at^a2D? ziikqS9S?5Cft$fX2t;|*2&$Z0m_j#M3fK05>MFwE@AzT;ITs@QZ`6)12^|OB^kiuw$X*6cYo9 zWLbvD!`@%qKQGoqYWx;SLS+7|B#T4k{wyGKuZgy0rQ{U)Q?!W}nSC8AwDq@OOfJUu MuT=C#6EBJX0XmB~4FCWD From 92e06428f764daa7f038959610a12a58b2ff3da2 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Wed, 31 Aug 2022 21:53:56 +0800 Subject: [PATCH 10/75] fix: trayicon scan popup icon display not correct --- mainwindow.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mainwindow.cc b/mainwindow.cc index f084d9a1..91acc5ba 100644 --- a/mainwindow.cc +++ b/mainwindow.cc @@ -237,8 +237,12 @@ MainWindow::MainWindow( Config::Class & cfg_ ): enableScanPopup->setCheckable( true ); enableScanPopup->setVisible( cfg.preferences.enableScanPopup ); navToolbar->widgetForAction( enableScanPopup )->setObjectName( "scanPopupButton" ); - if ( cfg.preferences.enableScanPopup && cfg.preferences.startWithScanPopupOn ) + if( cfg.preferences.enableScanPopup && cfg.preferences.startWithScanPopupOn ) + { + enableScanPopup->setIcon( QIcon( ":/icons/wizard-selected.svg" ) ); enableScanPopup->setChecked( true ); + } + connect( enableScanPopup, SIGNAL( toggled( bool ) ), this, SLOT( scanEnableToggled( bool ) ) ); From 306c435ae061b8899e937b2aaf8d4169c88efd8f Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Wed, 31 Aug 2022 21:54:53 +0800 Subject: [PATCH 11/75] fix: clipboard tracking in windows should not be functioned when not enabled. --- scanpopup.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scanpopup.cc b/scanpopup.cc index c3073b5a..1815dd18 100644 --- a/scanpopup.cc +++ b/scanpopup.cc @@ -514,6 +514,8 @@ void ScanPopup::delayShow() void ScanPopup::clipboardChanged( QClipboard::Mode m ) { + if( !cfg.preferences.trackClipboardChanges ) + return; if( !isScanningEnabled ) return; From 57d5f845c520da0e313a3e8a52189eb3f886b3bb Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Wed, 31 Aug 2022 22:11:19 +0800 Subject: [PATCH 12/75] style: optimize the custom style sheet when enabled system dark mode --- qt-style-st-babylon.css | 2 +- qt-style-st-modern.css | 2 +- qt-style.css | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/qt-style-st-babylon.css b/qt-style-st-babylon.css index f438c21b..6368f32a 100644 --- a/qt-style-st-babylon.css +++ b/qt-style-st-babylon.css @@ -1,7 +1,7 @@ MainWindow #translateLine, ScanPopup #translateLine, MainWindow #searchPane #wordList, MainWindow #dictsPane #dictsList, MainWindow #historyPane #historyList, MainWindow #favoritesPane #favoritesTree { - background: white; + } MainWindow #searchPane #translateLine diff --git a/qt-style-st-modern.css b/qt-style-st-modern.css index f079f086..1d31721c 100644 --- a/qt-style-st-modern.css +++ b/qt-style-st-modern.css @@ -1,7 +1,7 @@ MainWindow #translateLine, ScanPopup #translateLine, MainWindow #wordList, MainWindow #dictsPane #dictsList, MainWindow #historyPane #historyList, MainWindow #favoritesPane #favoritesTree { - background: white; + } /* WARNING: hides all separators! */ diff --git a/qt-style.css b/qt-style.css index dd35310f..7bf3b9f6 100644 --- a/qt-style.css +++ b/qt-style.css @@ -3,9 +3,8 @@ MainWindow #translateLine, ScanPopup #translateLine, MainWindow #wordList, MainW } MainWindow #translateLine[noResults="true"], -ScanPopup #translateLine[noResults="true"] -{ - background: #febb7d; +ScanPopup #translateLine[noResults="true"] { + background: #febb7d; } #navToolbar #menuButton::menu-indicator { From e6f001c1e5be6c4dc96b69d0764148a4c023f099 Mon Sep 17 00:00:00 2001 From: xiaoyifang <105986+xiaoyifang@users.noreply.github.com> Date: Wed, 31 Aug 2022 22:30:41 +0800 Subject: [PATCH 13/75] Update CHANGES.md --- CHANGES.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 49f1ea9a..d657f76b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,14 @@ # Changes -## Until to now +## Until Now + +- change the original default style to classic style +- add clipboard tracking menu in trayicon +- concurrent fulltext index creation +- add CJK fulltext search ability +- many minor fixes . + +## Until 2022-8-31 - **CLEANING OLD/USELESS CODE** - remove Runnable Class in dsl, zim , epwing etc files. From 097cd44f3d01984746f634912f04f1aa4a6c095a Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Wed, 31 Aug 2022 22:51:57 +0800 Subject: [PATCH 14/75] github: modify release note --- .github/workflows/macos-6.2.yml | 3 ++- .github/workflows/macos.yml | 3 ++- .github/workflows/ubuntu-6.2.yml | 3 ++- .github/workflows/ubuntu.yml | 3 ++- .github/workflows/windows-6.2.yml | 1 + .github/workflows/windows.yml | 1 + 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/macos-6.2.yml b/.github/workflows/macos-6.2.yml index 3907b684..a0f70c5f 100644 --- a/.github/workflows/macos-6.2.yml +++ b/.github/workflows/macos-6.2.yml @@ -128,7 +128,8 @@ jobs: macos built with: macos-10.15,macos-11.0,clang_64 x86_64 Qt6.X(Universal Build) Qt5.15.2(Intel Kind) - auto built by github action. use on your on risk:-) + auto built by github action. use on your on risk:-) + **recommend version**:Qt6.X (with the latest bug fixes and performance enhancements) Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** CHANGES: diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index a96806e8..9aab5942 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -129,7 +129,8 @@ jobs: macos built with: macos-10.15,macos-11.0,clang_64 x86_64 Qt6.X(Universal Build) Qt5.15.2(Intel Kind) - auto built by github action. use on your on risk:-) + auto built by github action. use on your on risk:-) + **recommend version**:Qt6.X (with the latest bug fixes and performance enhancements) Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** CHANGES: diff --git a/.github/workflows/ubuntu-6.2.yml b/.github/workflows/ubuntu-6.2.yml index 435e8bc5..19cc5fd3 100644 --- a/.github/workflows/ubuntu-6.2.yml +++ b/.github/workflows/ubuntu-6.2.yml @@ -132,7 +132,8 @@ jobs: macos built with: macos-10.15,macos-11.0,clang_64 x86_64 Qt6.X(Universal Build) Qt5.15.2(Intel Kind) - auto built by github action. use on your on risk:-) + auto built by github action. use on your on risk:-) + **recommend version**:Qt6.X (with the latest bug fixes and performance enhancements) Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** CHANGES: diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 71917d0c..e2d8f155 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -132,7 +132,8 @@ jobs: macos built with: macos-10.15,macos-11.0,clang_64 x86_64 Qt6.X(Universal Build) Qt5.15.2(Intel Kind) - auto built by github action. use on your on risk:-) + auto built by github action. use on your on risk:-) + **recommend version**:Qt6.X (with the latest bug fixes and performance enhancements) Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** CHANGES: diff --git a/.github/workflows/windows-6.2.yml b/.github/workflows/windows-6.2.yml index 52f89799..0b1a7f80 100644 --- a/.github/workflows/windows-6.2.yml +++ b/.github/workflows/windows-6.2.yml @@ -140,6 +140,7 @@ jobs: Qt6.X(Universal Build) Qt5.15.2(Intel Kind) auto built by github action. use on your on risk:-) + **recommend version**:Qt6.X (with the latest bug fixes and performance enhancements) Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** CHANGES: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 039115d7..eec4d38c 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -138,6 +138,7 @@ jobs: Qt6.X(Universal Build) Qt5.15.2(Intel Kind) auto built by github action. use on your on risk:-) + **recommend version**:Qt6.X (with the latest bug fixes and performance enhancements) Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** CHANGES: From 68a3b2a1ffb41efa3ebbfd8335e9e4033e1792a7 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Thu, 1 Sep 2022 21:12:48 +0800 Subject: [PATCH 15/75] fix: audio url block check --- utils.hh | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/utils.hh b/utils.hh index 21cf2818..ff27321e 100644 --- a/utils.hh +++ b/utils.hh @@ -94,21 +94,23 @@ inline bool isExternalLink(QUrl const &url) { inline bool isHtmlResources(QUrl const &url) { auto fileName = url.fileName(); - auto ext=fileName.mid(fileName.lastIndexOf(".")); + qsizetype index = fileName.lastIndexOf( "." ); QStringList extensions{ ".css", ".woff", ".woff2", ".ttf", ".otf", ".bmp", ".jpg", ".png", ".gif", ".tif", ".wav", ".ogg", ".oga", ".mp3", ".mp4", ".aac", ".flac", ".mid", ".wv", ".ape" }; - //some url has the form like https://xxxx/audio?file=***.mp3&a=1 etc links. - if( ext.isEmpty() ) + if( index > -1 ) { - for( QString extension : extensions ) - { - if( url.url().contains( extension ) ) - return true; - } - return false; + auto ext = fileName.mid( index ); + if( extensions.contains( ext, Qt::CaseInsensitive ) ) + return true; } - return extensions.contains( ext, Qt::CaseInsensitive ); + // some url has the form like https://xxxx/audio?file=***.mp3&a=1 etc links. + for( QString extension : extensions ) + { + if( url.url().contains( extension, Qt::CaseInsensitive ) ) + return true; + } + return false; } inline QString escape( QString const & plain ) From b9dcb71f23aa2c742a839bda9715fb8a21b7eade Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Fri, 2 Sep 2022 20:09:02 +0800 Subject: [PATCH 16/75] style: remove font-family from the new-default-style & modern style --- article-style-st-modern.css | 1 - article-style.css | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/article-style-st-modern.css b/article-style-st-modern.css index 22da6b9d..0380b086 100644 --- a/article-style-st-modern.css +++ b/article-style-st-modern.css @@ -10,7 +10,6 @@ body margin-left: 2px; margin-bottom: 3px; background: white; - font-family: Tahoma, Verdana, "Lucida Sans Unicode", "Segoe UI", "Palatino Linotype", "Arial Unicode MS", sans-serif; } a diff --git a/article-style.css b/article-style.css index 34c3add7..38ed9146 100644 --- a/article-style.css +++ b/article-style.css @@ -6,8 +6,7 @@ html { body { - font-family: Tahoma, Verdana, "Lucida Sans Unicode", sans-serif; - height: 100%; + } /* This stylesheet is used to highligh current selection when doing a search. From 5c9b6b0171a503a01634c2cf3320605ddf955aec Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Fri, 2 Sep 2022 21:27:25 +0800 Subject: [PATCH 17/75] forbid iframe focus operation --- iframeschemehandler.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/iframeschemehandler.cpp b/iframeschemehandler.cpp index 63d6d081..a4bf4bd3 100644 --- a/iframeschemehandler.cpp +++ b/iframeschemehandler.cpp @@ -45,6 +45,9 @@ void IframeSchemeHandler::requestStarted(QWebEngineUrlRequestJob *requestJob) QRegularExpression::CaseInsensitiveOption | QRegularExpression::DotMatchesEverythingOption ); QString baseTagHtml = ""; + + QString depressionFocus = + ""; // remove existed base tag articleString.remove( baseTag ) ; @@ -56,12 +59,14 @@ void IframeSchemeHandler::requestStarted(QWebEngineUrlRequestJob *requestJob) if( match.hasMatch() ) { articleString.insert( match.capturedEnd(), baseTagHtml ); + articleString.insert( match.capturedEnd(), depressionFocus ); } else { // the html contain no head element // just insert at the beginning of the html ,and leave it at the mercy of browser(chrome webengine) articleString.insert( 0, baseTagHtml ); + articleString.insert( 0, depressionFocus ); } buffer->setData(codec->fromUnicode(articleString)); From 6584954a40b00b5b0ce75e1fb6737064d5e09f17 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Sat, 3 Sep 2022 14:17:21 +0800 Subject: [PATCH 18/75] opt:iframe style refractor --- website.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/website.cc b/website.cc index 9f38b664..f4809c40 100644 --- a/website.cc +++ b/website.cc @@ -399,9 +399,8 @@ sptr< DataRequest > WebSiteDictionary::getArticle( wstring const & str, "\" src=\""+encodeUrl.toStdString() + "\" onmouseover=\"processIframeMouseOver('gdexpandframe-" + getId() + "');\" " "onmouseout=\"processIframeMouseOut();\" " - "scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" " - "frameborder=\"0\" vspace=\"0\" hspace=\"0\"" - "style=\"overflow:visible; width:100%; display:block;\" sandbox=\"allow-same-origin allow-scripts allow-popups\">" + "scrolling=\"no\" " + "style=\"overflow:visible; width:100%; display:block; border:none;\" sandbox=\"allow-same-origin allow-scripts allow-popups\">" ""; dr->getData().resize( result.size() ); From 349ac86d47e1e1d6174a138b837705d0da39f9f5 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Sun, 4 Sep 2022 09:55:39 +0800 Subject: [PATCH 19/75] opt: use iframe resizer plugin to resize the iframe height. --- article_maker.cc | 5 ++++- goldendict.pro | 1 + iframeschemehandler.cpp | 3 ++- resources/gd-custom.js | 18 +----------------- scripts.qrc | 9 +++++++++ scripts/iframeResizer.contentWindow.min.js | 10 ++++++++++ scripts/iframeResizer.min.js | 9 +++++++++ 7 files changed, 36 insertions(+), 19 deletions(-) create mode 100644 scripts.qrc create mode 100644 scripts/iframeResizer.contentWindow.min.js create mode 100644 scripts/iframeResizer.min.js diff --git a/article_maker.cc b/article_maker.cc index d73ec036..44266cfa 100644 --- a/article_maker.cc +++ b/article_maker.cc @@ -59,7 +59,10 @@ std::string ArticleMaker::makeHtmlHeader( QString const & word, result += ""; //custom javascript - result += ""; + result += ""; + + //iframe resizer javascript + result += ""; } // add qwebchannel diff --git a/goldendict.pro b/goldendict.pro index 1c3cc641..14e30455 100644 --- a/goldendict.pro +++ b/goldendict.pro @@ -564,6 +564,7 @@ CONFIG( chinese_conversion_support ) { } RESOURCES += resources.qrc \ + scripts.qrc \ flags.qrc #EXTRA_TRANSLATIONS += thirdparty/qwebengine_ts/qtwebengine_zh_CN.ts TRANSLATIONS += locale/ru_RU.ts \ diff --git a/iframeschemehandler.cpp b/iframeschemehandler.cpp index a4bf4bd3..8a6a79fd 100644 --- a/iframeschemehandler.cpp +++ b/iframeschemehandler.cpp @@ -47,7 +47,8 @@ void IframeSchemeHandler::requestStarted(QWebEngineUrlRequestJob *requestJob) QString baseTagHtml = ""; QString depressionFocus = - ""; + QStringLiteral( "" + ""); // remove existed base tag articleString.remove( baseTag ) ; diff --git a/resources/gd-custom.js b/resources/gd-custom.js index 59ca36ad..2498b147 100644 --- a/resources/gd-custom.js +++ b/resources/gd-custom.js @@ -49,23 +49,7 @@ }); //monitor iframe height. - - $("iframe").on("load", function () { - var iframe = $(this); - resizeIframe(iframe[0]); - }); - - function resizeIframe(obj) { - setInterval(function () { - //in some cases ,the website in iframe will load result after document has been loaded. the height will continue to change. - var height = $(obj).contents().height(); - $(obj).height(Math.min(2000, height)); - if (height >= 2000) { - obj.scrolling = "yes"; - } - }, 500); - } - + $('iframe').iFrameResize({ checkOrigin:false,maxHeight :1500,scrolling:true,warningTimeout:0,minHeight :250}); }); })($_$); diff --git a/scripts.qrc b/scripts.qrc new file mode 100644 index 00000000..66bec116 --- /dev/null +++ b/scripts.qrc @@ -0,0 +1,9 @@ + + + scripts/iframeResizer.contentWindow.min.js + scripts/iframeResizer.min.js + scripts/gd-builtin.js + scripts/gd-custom.js + scripts/jquery-3.6.0.slim.min.js + + diff --git a/scripts/iframeResizer.contentWindow.min.js b/scripts/iframeResizer.contentWindow.min.js new file mode 100644 index 00000000..e33b95f7 --- /dev/null +++ b/scripts/iframeResizer.contentWindow.min.js @@ -0,0 +1,10 @@ +/*! iFrame Resizer (iframeSizer.contentWindow.min.js) - v4.3.2 - 2021-10-18 + * Desc: Include this file in any page being loaded into an iframe + * to force the iframe to resize to the content size. + * Requires: iframeResizer.min.js on host page. + * Copyright: (c) 2021 David J. Bradshaw - dave@bradshaw.net + * License: MIT + */ + +!function(c){if("undefined"!=typeof window){var i=!0,o=10,r="",a=0,u="",s=null,d="",l=!1,f={resize:1,click:1},m=128,h=!0,g=1,n="bodyOffset",p=n,v=!0,y="",w={},b=32,T=null,E=!1,O=!1,S="[iFrameSizer]",M=S.length,I="",N={max:1,min:1,bodyScroll:1,documentElementScroll:1},A="child",C=!0,z=window.parent,k="*",R=0,x=!1,e=null,L=16,F=1,t="scroll",P=t,D=window,j=function(){re("onMessage function not defined")},q=function(){},H=function(){},W={height:function(){return re("Custom height calculation function not defined"),document.documentElement.offsetHeight},width:function(){return re("Custom width calculation function not defined"),document.body.scrollWidth}},B={},J=!1;try{var U=Object.create({},{passive:{get:function(){J=!0}}});window.addEventListener("test",ee,U),window.removeEventListener("test",ee,U)}catch(e){}var V,X,Y,K,Q,G,Z={bodyOffset:function(){return document.body.offsetHeight+pe("marginTop")+pe("marginBottom")},offset:function(){return Z.bodyOffset()},bodyScroll:function(){return document.body.scrollHeight},custom:function(){return W.height()},documentElementOffset:function(){return document.documentElement.offsetHeight},documentElementScroll:function(){return document.documentElement.scrollHeight},max:function(){return Math.max.apply(null,ye(Z))},min:function(){return Math.min.apply(null,ye(Z))},grow:function(){return Z.max()},lowestElement:function(){return Math.max(Z.bodyOffset()||Z.documentElementOffset(),ve("bottom",be()))},taggedElement:function(){return we("bottom","data-iframe-height")}},$={bodyScroll:function(){return document.body.scrollWidth},bodyOffset:function(){return document.body.offsetWidth},custom:function(){return W.width()},documentElementScroll:function(){return document.documentElement.scrollWidth},documentElementOffset:function(){return document.documentElement.offsetWidth},scroll:function(){return Math.max($.bodyScroll(),$.documentElementScroll())},max:function(){return Math.max.apply(null,ye($))},min:function(){return Math.min.apply(null,ye($))},rightMostElement:function(){return ve("right",be())},taggedElement:function(){return we("right","data-iframe-width")}},_=(V=Te,Q=null,G=0,function(){var e=Date.now(),t=L-(e-(G=G||e));return X=this,Y=arguments,t<=0||LF[s]["max"+e])throw new Error("Value for min"+e+" can not be greater than max"+e)}s in F&&"iFrameResizer"in t?N(s,"Ignored iFrame, already setup."):(o(e),function(){switch(T(s,"IFrame scrolling "+(F[s]&&F[s].scrolling?"enabled":"disabled")+" for "+s),t.style.overflow=!1===(F[s]&&F[s].scrolling)?"hidden":"auto",F[s]&&F[s].scrolling){case"omit":break;case!0:t.scrolling="yes";break;case!1:t.scrolling="no";break;default:t.scrolling=F[s]?F[s].scrolling:"no"}}(),c("Height"),c("Width"),d("maxHeight"),d("minHeight"),d("maxWidth"),d("minWidth"),"number"!=typeof(F[s]&&F[s].bodyMargin)&&"0"!==(F[s]&&F[s].bodyMargin)||(F[s].bodyMarginV1=F[s].bodyMargin,F[s].bodyMargin=F[s].bodyMargin+"px"),n(q(s)),F[s]&&(F[s].iframe.iFrameResizer={close:C.bind(null,F[s].iframe),removeListeners:p.bind(null,F[s].iframe),resize:B.bind(null,"Window resize","resize",F[s].iframe),moveToAnchor:function(e){B("Move to anchor","moveToAnchor:"+e,F[s].iframe,s)},sendMessage:function(e){B("Send Message","message:"+(e=JSON.stringify(e)),F[s].iframe,s)}}))}function c(e,n){null===i&&(i=setTimeout(function(){i=null,e()},n))}function n(){"hidden"!==document.visibilityState&&(T("document","Trigger event: Visibility change"),c(function(){w("Tab Visible","resize")},16))}function w(i,t){Object.keys(F).forEach(function(e){var n;F[n=e]&&"parent"===F[n].resizeFrom&&F[n].autoResize&&!F[n].firstRun&&B(i,t,F[e].iframe,e)})}function b(){O(window,"message",e),O(window,"resize",function(){var e;T("window","Trigger event: "+(e="resize")),c(function(){w("Window "+e,"resize")},16)}),O(document,"visibilitychange",n),O(document,"-webkit-visibilitychange",n)}function y(){function t(e,n){n&&(function(){if(!n.tagName)throw new TypeError("Object is not a valid DOM element");if("IFRAME"!==n.tagName.toUpperCase())throw new TypeError("Expected "; From c5035d87fcc93a2fc86ce878c3565e951d8b6b0d Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Sat, 17 Sep 2022 23:00:13 +0800 Subject: [PATCH 62/75] opt:remove scan popup options --- preferences.cc | 120 +------------------------ preferences.hh | 9 -- preferences.ui | 233 ------------------------------------------------- 3 files changed, 1 insertion(+), 361 deletions(-) diff --git a/preferences.cc b/preferences.cc index 273bdfc3..7068341a 100644 --- a/preferences.cc +++ b/preferences.cc @@ -19,32 +19,9 @@ Preferences::Preferences( QWidget * parent, Config::Class & cfg_ ): connect( ui.enableScanPopup, SIGNAL( toggled( bool ) ), this, SLOT( enableScanPopupToggled( bool ) ) ); - connect( ui.enableScanPopupModifiers, SIGNAL( toggled( bool ) ), - this, SLOT( enableScanPopupModifiersToggled( bool ) ) ); - connect( ui.showScanFlag, SIGNAL( toggled( bool ) ), this, SLOT( showScanFlagToggled( bool ) ) ); - connect( ui.altKey, SIGNAL( clicked( bool ) ), - this, SLOT( wholeAltClicked( bool ) ) ); - connect( ui.ctrlKey, SIGNAL( clicked( bool ) ), - this, SLOT( wholeCtrlClicked( bool ) ) ); - connect( ui.shiftKey, SIGNAL( clicked( bool ) ), - this, SLOT( wholeShiftClicked( bool ) ) ); - - connect( ui.leftAlt, SIGNAL( clicked( bool ) ), - this, SLOT( sideAltClicked( bool ) ) ); - connect( ui.rightAlt, SIGNAL( clicked( bool ) ), - this, SLOT( sideAltClicked( bool ) ) ); - connect( ui.leftCtrl, SIGNAL( clicked( bool ) ), - this, SLOT( sideCtrlClicked( bool ) ) ); - connect( ui.rightCtrl, SIGNAL( clicked( bool ) ), - this, SLOT( sideCtrlClicked( bool ) ) ); - connect( ui.leftShift, SIGNAL( clicked( bool ) ), - this, SLOT( sideShiftClicked( bool ) ) ); - connect( ui.rightShift, SIGNAL( clicked( bool ) ), - this, SLOT( sideShiftClicked( bool ) ) ); - connect( ui.buttonBox, SIGNAL( helpRequested() ), this, SLOT( helpRequested() ) ); @@ -192,21 +169,7 @@ Preferences::Preferences( QWidget * parent, Config::Class & cfg_ ): ui.enableScanPopup->setChecked( p.enableScanPopup ); ui.startWithScanPopupOn->setChecked( p.startWithScanPopupOn ); - ui.enableScanPopupModifiers->setChecked( p.enableScanPopupModifiers ); - ui.altKey->setChecked( p.scanPopupModifiers & KeyboardState::Alt ); - ui.ctrlKey->setChecked( p.scanPopupModifiers & KeyboardState::Ctrl ); - ui.shiftKey->setChecked( p.scanPopupModifiers & KeyboardState::Shift ); - ui.winKey->setChecked( p.scanPopupModifiers & KeyboardState::Win ); - ui.leftAlt->setChecked( p.scanPopupModifiers & KeyboardState::LeftAlt ); - ui.rightAlt->setChecked( p.scanPopupModifiers & KeyboardState::RightAlt ); - ui.leftCtrl->setChecked( p.scanPopupModifiers & KeyboardState::LeftCtrl ); - ui.rightCtrl->setChecked( p.scanPopupModifiers & KeyboardState::RightCtrl ); - ui.leftShift->setChecked( p.scanPopupModifiers & KeyboardState::LeftShift ); - ui.rightShift->setChecked( p.scanPopupModifiers & KeyboardState::RightShift ); - - ui.scanPopupAltMode->setChecked( p.scanPopupAltMode ); - ui.scanPopupAltModeSecs->setValue( p.scanPopupAltModeSecs ); ui.ignoreOwnClipboardChanges->setChecked( p.ignoreOwnClipboardChanges ); ui.scanToMainWindow->setChecked( p.scanToMainWindow ); ui.scanPopupUnpinnedWindowFlags->setCurrentIndex( p.scanPopupUnpinnedWindowFlags ); @@ -238,22 +201,6 @@ Preferences::Preferences( QWidget * parent, Config::Class & cfg_ ): // Different platforms have different keys available -#ifdef Q_OS_WIN32 - ui.winKey->hide(); -#else - ui.leftAlt->hide(); - ui.rightAlt->hide(); - ui.leftCtrl->hide(); - ui.rightCtrl->hide(); - ui.leftShift->hide(); - ui.rightShift->hide(); -#ifdef Q_OS_MAC - ui.altKey->setText( "Opt" ); - ui.winKey->setText( "Ctrl" ); - ui.ctrlKey->setText( "Cmd" ); -#endif -#endif - //Platform-specific options #ifndef ENABLE_SPWF_CUSTOMIZATION @@ -415,21 +362,7 @@ Config::Preferences Preferences::getPreferences() p.enableScanPopup = ui.enableScanPopup->isChecked(); p.startWithScanPopupOn = ui.startWithScanPopupOn->isChecked(); - p.enableScanPopupModifiers = ui.enableScanPopupModifiers->isChecked(); - p.scanPopupModifiers += ui.altKey->isChecked() ? KeyboardState::Alt : 0; - p.scanPopupModifiers += ui.ctrlKey->isChecked() ? KeyboardState::Ctrl: 0; - p.scanPopupModifiers += ui.shiftKey->isChecked() ? KeyboardState::Shift: 0; - p.scanPopupModifiers += ui.winKey->isChecked() ? KeyboardState::Win: 0; - p.scanPopupModifiers += ui.leftAlt->isChecked() ? KeyboardState::LeftAlt: 0; - p.scanPopupModifiers += ui.rightAlt->isChecked() ? KeyboardState::RightAlt: 0; - p.scanPopupModifiers += ui.leftCtrl->isChecked() ? KeyboardState::LeftCtrl: 0; - p.scanPopupModifiers += ui.rightCtrl->isChecked() ? KeyboardState::RightCtrl: 0; - p.scanPopupModifiers += ui.leftShift->isChecked() ? KeyboardState::LeftShift: 0; - p.scanPopupModifiers += ui.rightShift->isChecked() ? KeyboardState::RightShift: 0; - - p.scanPopupAltMode = ui.scanPopupAltMode->isChecked(); - p.scanPopupAltModeSecs = ui.scanPopupAltModeSecs->value(); p.ignoreOwnClipboardChanges = ui.ignoreOwnClipboardChanges->isChecked(); p.scanToMainWindow = ui.scanToMainWindow->isChecked(); #ifdef HAVE_X11 @@ -582,7 +515,7 @@ Config::Preferences Preferences::getPreferences() void Preferences::enableScanPopupToggled( bool b ) { - ui.scanPopupModifiers->setEnabled( b && ui.enableScanPopupModifiers->isChecked() ); + ui.scanPopupModifiers->setEnabled( b ); } void Preferences::enableScanPopupModifiersToggled( bool b ) @@ -592,62 +525,11 @@ void Preferences::enableScanPopupModifiersToggled( bool b ) ui.showScanFlag->setChecked( false ); } -void Preferences::showScanFlagToggled( bool b ) -{ - if( b ) - ui.enableScanPopupModifiers->setChecked( false ); -} - void Preferences::on_scanPopupUnpinnedWindowFlags_currentIndexChanged( int index ) { ui.scanPopupUnpinnedBypassWMHint->setEnabled( Config::spwfFromInt( index ) != Config::SPWF_default ); } -void Preferences::wholeAltClicked( bool b ) -{ - if ( b ) - { - ui.leftAlt->setChecked( false ); - ui.rightAlt->setChecked( false ); - } -} - -void Preferences::wholeCtrlClicked( bool b ) -{ - if ( b ) - { - ui.leftCtrl->setChecked( false ); - ui.rightCtrl->setChecked( false ); - } -} - -void Preferences::wholeShiftClicked( bool b ) -{ - if ( b ) - { - ui.leftShift->setChecked( false ); - ui.rightShift->setChecked( false ); - } -} - -void Preferences::sideAltClicked( bool ) -{ - if ( ui.leftAlt->isChecked() || ui.rightAlt->isChecked() ) - ui.altKey->setChecked( false ); -} - -void Preferences::sideCtrlClicked( bool ) -{ - if ( ui.leftCtrl->isChecked() || ui.rightCtrl->isChecked() ) - ui.ctrlKey->setChecked( false ); -} - -void Preferences::sideShiftClicked( bool ) -{ - if ( ui.leftShift->isChecked() || ui.rightShift->isChecked() ) - ui.shiftKey->setChecked( false ); -} - void Preferences::on_enableMainWindowHotkey_toggled( bool checked ) { ui.mainWindowHotkey->setEnabled( checked ); diff --git a/preferences.hh b/preferences.hh index dcde4cc7..b5f5255d 100644 --- a/preferences.hh +++ b/preferences.hh @@ -35,17 +35,8 @@ private slots: void enableScanPopupToggled( bool ); void enableScanPopupModifiersToggled( bool ); - void showScanFlagToggled( bool b ); void on_scanPopupUnpinnedWindowFlags_currentIndexChanged( int index ); - void wholeAltClicked( bool ); - void wholeCtrlClicked( bool ); - void wholeShiftClicked( bool ); - - void sideAltClicked( bool ); - void sideCtrlClicked( bool ); - void sideShiftClicked( bool ); - void on_enableMainWindowHotkey_toggled( bool checked ); void on_enableClipboardHotkey_toggled( bool checked ); diff --git a/preferences.ui b/preferences.ui index f4df1e9f..ac4eb794 100644 --- a/preferences.ui +++ b/preferences.ui @@ -452,17 +452,6 @@ the program would always start with the scan popup active. - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - - - Only show popup when all selected keys are kept pressed: - - - @@ -487,218 +476,9 @@ in the pressed state when the word selection changes. 0 - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Left Ctrl only - - - Left Ctrl - - - - - - - Right Shift only - - - Right Shift - - - - - - - Alt key - - - Alt - - - - - - - Ctrl key - - - Ctrl - - - - - - - Left Alt only - - - Left Alt - - - - - - - Shift key - - - Shift - - - - - - - Right Alt only - - - Right Alt - - - - - - - Right Ctrl only - - - Right Ctrl - - - - - - - Left Shift only - - - Left Shift - - - - - - - Windows key or Meta key - - - Win/Meta - - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - 0 - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - - - Keys may also be pressed afterwards, within - - - - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - - - false - - - true - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - 1 - - - 99 - - - - - - - secs - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - @@ -1911,19 +1691,6 @@ from Stardict, Babylon and GLS dictionaries cbAutostart interfaceLanguage startWithScanPopupOn - enableScanPopupModifiers - leftCtrl - rightShift - altKey - ctrlKey - leftAlt - shiftKey - rightAlt - rightCtrl - leftShift - winKey - scanPopupAltMode - scanPopupAltModeSecs useProxyServer proxyType proxyHost From 44b282fb512c45fc27c6d684300a66f4568df1b4 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Sun, 18 Sep 2022 08:57:17 +0800 Subject: [PATCH 63/75] opt: gd useragent minor changes. --- mainwindow.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mainwindow.cc b/mainwindow.cc index 1e971aa2..4c5e7982 100644 --- a/mainwindow.cc +++ b/mainwindow.cc @@ -181,7 +181,7 @@ MainWindow::MainWindow( Config::Class & cfg_ ): QWebEngineProfile::defaultProfile()->setUrlRequestInterceptor( wuri ); if(!cfg.preferences.hideGoldenDictHeader){ - QWebEngineProfile::defaultProfile()->setHttpUserAgent(QWebEngineProfile::defaultProfile()->httpUserAgent()+" GoldenDict/webengine"); + QWebEngineProfile::defaultProfile()->setHttpUserAgent(QWebEngineProfile::defaultProfile()->httpUserAgent()+" GoldenDict/WebEngine"); } qRegisterMetaType< Config::InputPhrase >(); From 5b9414609000ee20f752ec1f0c8ddeefbc075c79 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Sun, 18 Sep 2022 09:00:27 +0800 Subject: [PATCH 64/75] opt:mdx class destruction order --- dictionary.hh | 9 ++++++--- mdx.cc | 8 +++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/dictionary.hh b/dictionary.hh index d009727f..6f266b6a 100644 --- a/dictionary.hh +++ b/dictionary.hh @@ -56,7 +56,9 @@ class Request: public QObject Q_OBJECT public: - + Request( QObject * parent = nullptr ) : QObject( parent ) + { + } /// Returns whether the request has been processed in full and finished. /// This means that the data accumulated is final and won't change anymore. bool isFinished(); @@ -177,7 +179,6 @@ class DataRequest: public Request Q_OBJECT public: - /// Returns the number of bytes read, with a -1 meaning that so far it's /// uncertain whether resource even exists or not, and any non-negative value /// meaning that that amount of bytes is not available. @@ -194,7 +195,9 @@ public: /// done, this can only be called after the request has finished. vector< char > & getFullData() ; - DataRequest(): hasAnyData( false ) {} + DataRequest( QObject * parent = 0 ) : Request( parent ), hasAnyData( false ) + { + } protected: diff --git a/mdx.cc b/mdx.cc index 21346ea4..68b3fd33 100644 --- a/mdx.cc +++ b/mdx.cc @@ -200,7 +200,7 @@ public: }; -class MdxDictionary: public BtreeIndexing::BtreeDictionary +class MdxDictionary: public QObject, public BtreeIndexing::BtreeDictionary { Mutex idxMutex; File::Class idx; @@ -695,10 +695,8 @@ class MddResourceRequest: public Dictionary::DataRequest public: - MddResourceRequest( MdxDictionary & dict_, - string const & resourceName_ ): - dict( dict_ ), - resourceName( Utf8::decode( resourceName_ ) ) + MddResourceRequest( MdxDictionary & dict_, string const & resourceName_ ) : + Dictionary::DataRequest( &dict_ ), dict( dict_ ), resourceName( Utf8::decode( resourceName_ ) ) { f = QtConcurrent::run( [ this ]() { this->run(); } ); // QThreadPool::globalInstance()->start( [ this ]() { this->run(); } ); From dc44f8992b99690e43a3cf33524ac519465c6430 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Mon, 19 Sep 2022 20:13:00 +0800 Subject: [PATCH 65/75] fix: mdx dictionary source content can not display correctly source+srcset html can not parse and modified correctly --- base/globalregex.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base/globalregex.cc b/base/globalregex.cc index a9a6f8fc..6f72276e 100644 --- a/base/globalregex.cc +++ b/base/globalregex.cc @@ -47,10 +47,10 @@ QRegularExpression Mdx::stylesRe2( "([\\s\"']href\\s*=)\\s*(?![\\s\"']|\\b(?:(?: QRegularExpression Mdx::inlineScriptRe( "<\\s*script(?:(?=\\s)(?:(?![\\s\"']src\\s*=)[^>])+|\\s*)>", QRegularExpression::CaseInsensitiveOption ); QRegularExpression Mdx::closeScriptTagRe( "<\\s*/script\\s*>", QRegularExpression::CaseInsensitiveOption ); -QRegularExpression Mdx::srcRe( "([\\s\"']src\\s*=)\\s*([\"'])(?!\\s*\\b(?:(?:bres|https?|ftp)://" +QRegularExpression Mdx::srcRe( "([\\s\"'](?:src|srcset)\\s*=)\\s*([\"'])(?!\\s*\\b(?:(?:bres|https?|ftp)://" "|(?:data|javascript):))(?:file://)?[\\x00-\\x1f\\x7f]*\\.*/?([^\">]+)\\2", QRegularExpression::CaseInsensitiveOption ); -QRegularExpression Mdx::srcRe2( "([\\s\"']src\\s*=)\\s*(?![\\s\"']|\\b(?:(?:bres|https?|ftp)://" +QRegularExpression Mdx::srcRe2( "([\\s\"'](?:src|srcset)\\s*=)\\s*(?![\\s\"']|\\b(?:(?:bres|https?|ftp)://" "|(?:data|javascript):))(?:file://)?[\\x00-\\x1f\\x7f]*\\.*/?([^\\s\">]+)", QRegularExpression::CaseInsensitiveOption ); From 1eceb1d388424cf6966e8b7323a41a39a3d6f029 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Mon, 19 Sep 2022 20:31:40 +0800 Subject: [PATCH 66/75] =?UTF-8?q?opt=EF=BC=9A=20mutex=20reentry=20lock?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mdx.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/mdx.cc b/mdx.cc index 68b3fd33..aedfff41 100644 --- a/mdx.cc +++ b/mdx.cc @@ -852,7 +852,6 @@ void MddResourceRequest::run() if( Filetype::isNameOfTiff( u8ResourceName ) ) { // Convert it - Mutex::Lock _( dataMutex ); GdTiff::tiff2img( data ); } } From 81de016599db272b9ea5b3088951b526ca748581 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Mon, 19 Sep 2022 20:37:39 +0800 Subject: [PATCH 67/75] action: rename github actions --- .../{macos-6.2.yml => macos-6.x.yml} | 274 ++++++------- ...-check.yml => macos-homebrew-PR-check.yml} | 2 +- .../{windows-6.2.yml => windows-6.x.yml} | 368 +++++++++--------- 3 files changed, 322 insertions(+), 322 deletions(-) rename .github/workflows/{macos-6.2.yml => macos-6.x.yml} (97%) rename .github/workflows/{macos-m1-PR-check.yml => macos-homebrew-PR-check.yml} (98%) rename .github/workflows/{windows-6.2.yml => windows-6.x.yml} (97%) diff --git a/.github/workflows/macos-6.2.yml b/.github/workflows/macos-6.x.yml similarity index 97% rename from .github/workflows/macos-6.2.yml rename to .github/workflows/macos-6.x.yml index 8fab4833..1a4cf49c 100644 --- a/.github/workflows/macos-6.2.yml +++ b/.github/workflows/macos-6.x.yml @@ -1,137 +1,137 @@ -name: macos-6.2 -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true -on: - # workflow_run: - # workflows: [AutoTag] - # types: [completed] - workflow_dispatch: - push: - branches: - - dev - - master - # - staged - paths-ignore: - - 'docs/**' - - ".github/**" - - "howto/**" - - "*.md" - - ".clang-format" -jobs: - build: - name: Build - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [macos-11] - qt_ver: [6.3.1] - qt_arch: [clang_64] - env: - targetName: GoldenDict - version: 22.8.24 - version-suffix: alpha - prerelease: true - - steps: - # macos 11.0 默认环境变了,要指定 - - name: prepare env - if: ${{ matrix.os == 'macos-11' }} - run: | - softwareupdate --all --install --force - sudo xcode-select --print-path - sudo xcode-select --switch /Library/Developer/CommandLineTools - - uses: actions/setup-python@v3 - with: - python-version: '3.9' - - name: Install Qt - uses: xiaoyifang/install-qt-action@v3 - with: - version: ${{ matrix.qt_ver }} - arch: ${{ matrix.qt_arch }} - cached: 'false' - modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats - setup-python: 'false' - py7zrversion: '==0.18.1' - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: build macos - run: | - brew uninstall opencc hunspell ffmpeg@5 ffmpeg@4 libtiff xz lzo libogg libvorbis zstd || true - brew install create-dmg - qmake CONFIG+=release CONFIG+=no_extra_tiff_handler CONFIG+=zim_support CONFIG+=chinese_conversion_support QMAKE_APPLE_DEVICE_ARCHS="x86_64 arm64" - make -j$(nproc) - # 打包 - - name: package - run: | - macdeployqt ${targetName}.app -qmldir=. -verbose=1 - codesign --force --deep -s - GoldenDict.app - otool -L GoldenDict.app/Contents/MacOS/GoldenDict - otool -L GoldenDict.app/Contents/Frameworks/lib* - mkdir tmp - mv ${targetName}.app ./tmp - # --background "installer_background.png" - create-dmg --volname "${targetName} Installer" --volicon "icons/macicon.icns" --window-pos 200 120 --window-size 800 400 --icon-size 100 --icon "${targetName}.app" 200 190 --hide-extension "${targetName}.app" --app-drop-link 600 185 --skip-jenkins "${targetName}.dmg" tmp/ - - name: Generate changelog - if: ${{!env.prerelease}} - id: changelog1 - uses: metcalfc/changelog-generator@v3.0.0 - with: - myToken: ${{ secrets.GITHUB_TOKEN }} - - - name: Set outputs - id: vars - run: | - echo "::set-output name=sha_short::$(git rev-parse --short=8 HEAD)" - echo "::set-output name=release_date::$(date +'%Y%m%d')" - echo "::set-output name=release_time::$(date +'%H%M%S')" - echo "::set-output name=release_time_clock::$(date +'%H:%M:%S')" - echo "::set-output name=release_hm::$(date +'%y%m%d')" - - - name: changelog - if: $${{env.prerelease}} - id: changelog2 - run: | - previousTag=$(git tag --sort=-creatordate | sed -n 2p) - echo "previousTag : $previousTag" - - CHANGELOG="$(git log --oneline --no-decorate $previousTag..HEAD)" - CHANGELOG="${CHANGELOG//'%'/'%25'}" - CHANGELOG="${CHANGELOG//$'\n'/'%0A'}" - CHANGELOG="${CHANGELOG//$'\r'/'%0D'}" - CHANGELOG="${CHANGELOG//'\"'/'%22'}" - CHANGELOG="${CHANGELOG//"'"/ }" - echo "::set-output name=COMMIT_SUMMARY::$(echo "$CHANGELOG")" - # tag 上传Release - - name: uploadRelease - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ${{ env.targetName }}.dmg - asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_universal_${{steps.vars.outputs.release_date}}.dmg - tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} - overwrite: true - release_name: GoldenDict-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} - prerelease: ${{env.prerelease}} - body: | - release on date: ${{steps.vars.outputs.release_date}} time: ${{steps.vars.outputs.release_time_clock}} - branch: ${{ github.ref_name }} - commit: ${{ steps.vars.outputs.sha_short }} - Qt version: Qt5.15.2, Qt6.X - Windows built with: msvc64, Visual studio 2019 - ## goldendict.exe can not be used alone - if you have a previous version. replace this maybe ok. if not ,download the whole bundle. - - AppImage built with: Ubuntu-20.04 ,latest gcc - macos built with: macos-10.15,macos-11.0,clang_64 x86_64 - Qt6.X(Universal Build) - Qt5.15.2(Intel Kind) - auto built by github action. use on your on risk:-) - **recommend version**:Qt6.X (with the latest bug fixes and performance enhancements) - - Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** - CHANGES: - ${{ steps.changelog1.outputs.changelog }} - ${{ steps.changelog2.outputs.COMMIT_SUMMARY }} +name: macos-6.x +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +on: + # workflow_run: + # workflows: [AutoTag] + # types: [completed] + workflow_dispatch: + push: + branches: + - dev + - master + # - staged + paths-ignore: + - 'docs/**' + - ".github/**" + - "howto/**" + - "*.md" + - ".clang-format" +jobs: + build: + name: Build + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-11] + qt_ver: [6.3.1] + qt_arch: [clang_64] + env: + targetName: GoldenDict + version: 22.8.24 + version-suffix: alpha + prerelease: true + + steps: + # macos 11.0 默认环境变了,要指定 + - name: prepare env + if: ${{ matrix.os == 'macos-11' }} + run: | + softwareupdate --all --install --force + sudo xcode-select --print-path + sudo xcode-select --switch /Library/Developer/CommandLineTools + - uses: actions/setup-python@v3 + with: + python-version: '3.9' + - name: Install Qt + uses: xiaoyifang/install-qt-action@v3 + with: + version: ${{ matrix.qt_ver }} + arch: ${{ matrix.qt_arch }} + cached: 'false' + modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats + setup-python: 'false' + py7zrversion: '==0.18.1' + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: build macos + run: | + brew uninstall opencc hunspell ffmpeg@5 ffmpeg@4 libtiff xz lzo libogg libvorbis zstd || true + brew install create-dmg + qmake CONFIG+=release CONFIG+=no_extra_tiff_handler CONFIG+=zim_support CONFIG+=chinese_conversion_support QMAKE_APPLE_DEVICE_ARCHS="x86_64 arm64" + make -j$(nproc) + # 打包 + - name: package + run: | + macdeployqt ${targetName}.app -qmldir=. -verbose=1 + codesign --force --deep -s - GoldenDict.app + otool -L GoldenDict.app/Contents/MacOS/GoldenDict + otool -L GoldenDict.app/Contents/Frameworks/lib* + mkdir tmp + mv ${targetName}.app ./tmp + # --background "installer_background.png" + create-dmg --volname "${targetName} Installer" --volicon "icons/macicon.icns" --window-pos 200 120 --window-size 800 400 --icon-size 100 --icon "${targetName}.app" 200 190 --hide-extension "${targetName}.app" --app-drop-link 600 185 --skip-jenkins "${targetName}.dmg" tmp/ + - name: Generate changelog + if: ${{!env.prerelease}} + id: changelog1 + uses: metcalfc/changelog-generator@v3.0.0 + with: + myToken: ${{ secrets.GITHUB_TOKEN }} + + - name: Set outputs + id: vars + run: | + echo "::set-output name=sha_short::$(git rev-parse --short=8 HEAD)" + echo "::set-output name=release_date::$(date +'%Y%m%d')" + echo "::set-output name=release_time::$(date +'%H%M%S')" + echo "::set-output name=release_time_clock::$(date +'%H:%M:%S')" + echo "::set-output name=release_hm::$(date +'%y%m%d')" + + - name: changelog + if: $${{env.prerelease}} + id: changelog2 + run: | + previousTag=$(git tag --sort=-creatordate | sed -n 2p) + echo "previousTag : $previousTag" + + CHANGELOG="$(git log --oneline --no-decorate $previousTag..HEAD)" + CHANGELOG="${CHANGELOG//'%'/'%25'}" + CHANGELOG="${CHANGELOG//$'\n'/'%0A'}" + CHANGELOG="${CHANGELOG//$'\r'/'%0D'}" + CHANGELOG="${CHANGELOG//'\"'/'%22'}" + CHANGELOG="${CHANGELOG//"'"/ }" + echo "::set-output name=COMMIT_SUMMARY::$(echo "$CHANGELOG")" + # tag 上传Release + - name: uploadRelease + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ env.targetName }}.dmg + asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_universal_${{steps.vars.outputs.release_date}}.dmg + tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} + overwrite: true + release_name: GoldenDict-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} + prerelease: ${{env.prerelease}} + body: | + release on date: ${{steps.vars.outputs.release_date}} time: ${{steps.vars.outputs.release_time_clock}} + branch: ${{ github.ref_name }} + commit: ${{ steps.vars.outputs.sha_short }} + Qt version: Qt5.15.2, Qt6.X + Windows built with: msvc64, Visual studio 2019 + ## goldendict.exe can not be used alone + if you have a previous version. replace this maybe ok. if not ,download the whole bundle. + + AppImage built with: Ubuntu-20.04 ,latest gcc + macos built with: macos-10.15,macos-11.0,clang_64 x86_64 + Qt6.X(Universal Build) + Qt5.15.2(Intel Kind) + auto built by github action. use on your on risk:-) + **recommend version**:Qt6.X (with the latest bug fixes and performance enhancements) + + Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** + CHANGES: + ${{ steps.changelog1.outputs.changelog }} + ${{ steps.changelog2.outputs.COMMIT_SUMMARY }} diff --git a/.github/workflows/macos-m1-PR-check.yml b/.github/workflows/macos-homebrew-PR-check.yml similarity index 98% rename from .github/workflows/macos-m1-PR-check.yml rename to .github/workflows/macos-homebrew-PR-check.yml index ebbc16b7..84aefaab 100644 --- a/.github/workflows/macos-m1-PR-check.yml +++ b/.github/workflows/macos-homebrew-PR-check.yml @@ -1,4 +1,4 @@ -name: macos-m1-PR-check +name: macos-homebrew-PR-check concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true diff --git a/.github/workflows/windows-6.2.yml b/.github/workflows/windows-6.x.yml similarity index 97% rename from .github/workflows/windows-6.2.yml rename to .github/workflows/windows-6.x.yml index 31109c9b..73edc131 100644 --- a/.github/workflows/windows-6.2.yml +++ b/.github/workflows/windows-6.x.yml @@ -1,184 +1,184 @@ -name: Windows-6.2 -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true -on: - # workflow_run: - # workflows: [AutoTag] - # types: [completed] - workflow_dispatch: - push: - branches: - - dev - - master - # - staged - paths-ignore: - - 'docs/**' - - ".github/**" - - "howto/**" - - "*.md" - - ".clang-format" - -jobs: - build: - name: Build - # see https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [windows-2019] - qt_ver: [6.3.1] - qt_arch: [win64_msvc2019_64] - env: - targetName: GoldenDict.exe - version: 22.8.24 - version-suffix: alpha - prerelease: true - steps: - - uses: actions/setup-python@v3 - with: - python-version: '3.9' - - name: Install Qt - uses: xiaoyifang/install-qt-action@v3 - with: - version: ${{ matrix.qt_ver }} - # target: ${{ matrix.qt_target }} - arch: ${{ matrix.qt_arch }} - modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats - setup-python: 'false' - py7zrversion: '==0.18.1' - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Generate changelog - if: ${{!env.prerelease}} - id: changelog1 - uses: metcalfc/changelog-generator@v3.0.0 - with: - myToken: ${{ secrets.GITHUB_TOKEN }} - - - name: Set outputs - id: vars - shell: bash - run: | - echo "::set-output name=sha_short::$(git rev-parse --short=8 HEAD)" - echo "::set-output name=release_date::$(date +'%Y%m%d')" - echo "::set-output name=release_time::$(date +'%H%M%S')" - echo "::set-output name=release_time_clock::$(date +'%H:%M:%S')" - echo "::set-output name=release_hm::$(date +'%y%m%d')" - - - name: changelog - if: $${{env.prerelease}} - id: changelog2 - shell: bash - run: | - previousTag=$(git tag --sort=-creatordate | sed -n 2p) - echo "previousTag : $previousTag" - - CHANGELOG="$(git log --oneline --no-decorate $previousTag..HEAD)" - CHANGELOG="${CHANGELOG//'%'/'%25'}" - CHANGELOG="${CHANGELOG//$'\n'/'%0A'}" - CHANGELOG="${CHANGELOG//$'\r'/'%0D'}" - CHANGELOG="${CHANGELOG//'\"'/'%22'}" - CHANGELOG="${CHANGELOG//"'"/ }" - echo "::set-output name=COMMIT_SUMMARY::$(echo "$CHANGELOG")" - - # # msvc编译 - - uses: ilammy/msvc-dev-cmd@v1 - # with: - # arch: ${{ matrix.msvc_arch }} - - name: msvc-build goldendict - id: build - shell: cmd - run: | - qmake "CONFIG+=zim_support" CONFIG+=release - nmake - - echo winSdkDir=%WindowsSdkDir% >> %GITHUB_ENV% - echo winSdkVer=%WindowsSdkVersion% >> %GITHUB_ENV% - echo vcToolsInstallDir=%VCToolsInstallDir% >> %GITHUB_ENV% - echo vcToolsRedistDir=%VCToolsRedistDir% >> %GITHUB_ENV% - echo QTDIR=%Qt6_DIR% >> %GITHUB_ENV% - - # 打包 - - name: package - id: package - env: - archiveName: GoldenDict-Windows.${{ steps.vars.outputs.sha_short }}-${{ steps.vars.outputs.release_time }} - msvcArch: ${{ matrix.msvc_arch }} - shell: pwsh - run: | - & .github\scripts\windows-publish.ps1 ${env:archiveName} ${env:targetName} - $name = ${env:archiveName} - echo "::set-output name=packageName::$name" - -# - uses: actions/upload-artifact@v2 -# with: -# name: ${{ steps.package.outputs.packageName }} -# path: ${{ steps.package.outputs.packageName }}.zip - - name: uploadRelease - # if: startsWith(github.event.ref, 'refs/tags/') - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ${{ steps.package.outputs.packageName }}.zip - asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_${{steps.vars.outputs.release_date}}.zip - tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} - overwrite: true - release_name: GoldenDict-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} - prerelease: ${{env.prerelease}} - body: | - release on date: ${{steps.vars.outputs.release_date}} time: ${{steps.vars.outputs.release_time_clock}} - branch: ${{ github.ref_name }} - commit: ${{ steps.vars.outputs.sha_short }} - Qt version: Qt5.15.2, Qt6.X - Windows built with: msvc64, Visual studio 2019 - AppImage built with: Ubuntu-20.04 ,latest gcc - macos built with: macos-10.15,macos-11.0,clang_64 x86_64 - Qt6.X(Universal Build) - Qt5.15.2(Intel Kind) - auto built by github action. use on your on risk:-) - **recommend version**:Qt6.X (with the latest bug fixes and performance enhancements) - - Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** - CHANGES: - ${{ steps.changelog1.outputs.changelog }} - ${{ steps.changelog2.outputs.COMMIT_SUMMARY }} - - - name: upload goldendict.exe only - # if: startsWith(github.event.ref, 'refs/tags/') - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: release/${{ env.targetName }} - asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }} - tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} - overwrite: true - release_name: GoldenDict-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} - prerelease: ${{env.prerelease}} - - - name: copy nsis - shell: bash - run: | - cp tools/nsis/GoldenDict.nsi ${{ steps.package.outputs.packageName }}/ - - name: Create installer - uses: joncloud/makensis-action@v3.6 - with: - arguments: "/V3" - script-file: ${{ steps.package.outputs.packageName }}/GoldenDict.nsi - - name: make installer - run: | - cd ${{ steps.package.outputs.packageName }} - ls *.exe - - name: upload goldendict installer - # if: startsWith(github.event.ref, 'refs/tags/') - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ${{ steps.package.outputs.packageName }}/GoldenDict-v22-Install.exe - asset_name: ${{ matrix.qt_ver }}-GoldenDict-v22-Install.exe - tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} - overwrite: true - release_name: GoldenDict-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} - prerelease: ${{env.prerelease}} +name: Windows-6.x +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +on: + # workflow_run: + # workflows: [AutoTag] + # types: [completed] + workflow_dispatch: + push: + branches: + - dev + - master + # - staged + paths-ignore: + - 'docs/**' + - ".github/**" + - "howto/**" + - "*.md" + - ".clang-format" + +jobs: + build: + name: Build + # see https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [windows-2019] + qt_ver: [6.3.1] + qt_arch: [win64_msvc2019_64] + env: + targetName: GoldenDict.exe + version: 22.8.24 + version-suffix: alpha + prerelease: true + steps: + - uses: actions/setup-python@v3 + with: + python-version: '3.9' + - name: Install Qt + uses: xiaoyifang/install-qt-action@v3 + with: + version: ${{ matrix.qt_ver }} + # target: ${{ matrix.qt_target }} + arch: ${{ matrix.qt_arch }} + modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats + setup-python: 'false' + py7zrversion: '==0.18.1' + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Generate changelog + if: ${{!env.prerelease}} + id: changelog1 + uses: metcalfc/changelog-generator@v3.0.0 + with: + myToken: ${{ secrets.GITHUB_TOKEN }} + + - name: Set outputs + id: vars + shell: bash + run: | + echo "::set-output name=sha_short::$(git rev-parse --short=8 HEAD)" + echo "::set-output name=release_date::$(date +'%Y%m%d')" + echo "::set-output name=release_time::$(date +'%H%M%S')" + echo "::set-output name=release_time_clock::$(date +'%H:%M:%S')" + echo "::set-output name=release_hm::$(date +'%y%m%d')" + + - name: changelog + if: $${{env.prerelease}} + id: changelog2 + shell: bash + run: | + previousTag=$(git tag --sort=-creatordate | sed -n 2p) + echo "previousTag : $previousTag" + + CHANGELOG="$(git log --oneline --no-decorate $previousTag..HEAD)" + CHANGELOG="${CHANGELOG//'%'/'%25'}" + CHANGELOG="${CHANGELOG//$'\n'/'%0A'}" + CHANGELOG="${CHANGELOG//$'\r'/'%0D'}" + CHANGELOG="${CHANGELOG//'\"'/'%22'}" + CHANGELOG="${CHANGELOG//"'"/ }" + echo "::set-output name=COMMIT_SUMMARY::$(echo "$CHANGELOG")" + + # # msvc编译 + - uses: ilammy/msvc-dev-cmd@v1 + # with: + # arch: ${{ matrix.msvc_arch }} + - name: msvc-build goldendict + id: build + shell: cmd + run: | + qmake "CONFIG+=zim_support" CONFIG+=release + nmake + + echo winSdkDir=%WindowsSdkDir% >> %GITHUB_ENV% + echo winSdkVer=%WindowsSdkVersion% >> %GITHUB_ENV% + echo vcToolsInstallDir=%VCToolsInstallDir% >> %GITHUB_ENV% + echo vcToolsRedistDir=%VCToolsRedistDir% >> %GITHUB_ENV% + echo QTDIR=%Qt6_DIR% >> %GITHUB_ENV% + + # 打包 + - name: package + id: package + env: + archiveName: GoldenDict-Windows.${{ steps.vars.outputs.sha_short }}-${{ steps.vars.outputs.release_time }} + msvcArch: ${{ matrix.msvc_arch }} + shell: pwsh + run: | + & .github\scripts\windows-publish.ps1 ${env:archiveName} ${env:targetName} + $name = ${env:archiveName} + echo "::set-output name=packageName::$name" + +# - uses: actions/upload-artifact@v2 +# with: +# name: ${{ steps.package.outputs.packageName }} +# path: ${{ steps.package.outputs.packageName }}.zip + - name: uploadRelease + # if: startsWith(github.event.ref, 'refs/tags/') + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ steps.package.outputs.packageName }}.zip + asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_${{steps.vars.outputs.release_date}}.zip + tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} + overwrite: true + release_name: GoldenDict-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} + prerelease: ${{env.prerelease}} + body: | + release on date: ${{steps.vars.outputs.release_date}} time: ${{steps.vars.outputs.release_time_clock}} + branch: ${{ github.ref_name }} + commit: ${{ steps.vars.outputs.sha_short }} + Qt version: Qt5.15.2, Qt6.X + Windows built with: msvc64, Visual studio 2019 + AppImage built with: Ubuntu-20.04 ,latest gcc + macos built with: macos-10.15,macos-11.0,clang_64 x86_64 + Qt6.X(Universal Build) + Qt5.15.2(Intel Kind) + auto built by github action. use on your on risk:-) + **recommend version**:Qt6.X (with the latest bug fixes and performance enhancements) + + Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** + CHANGES: + ${{ steps.changelog1.outputs.changelog }} + ${{ steps.changelog2.outputs.COMMIT_SUMMARY }} + + - name: upload goldendict.exe only + # if: startsWith(github.event.ref, 'refs/tags/') + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: release/${{ env.targetName }} + asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }} + tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} + overwrite: true + release_name: GoldenDict-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} + prerelease: ${{env.prerelease}} + + - name: copy nsis + shell: bash + run: | + cp tools/nsis/GoldenDict.nsi ${{ steps.package.outputs.packageName }}/ + - name: Create installer + uses: joncloud/makensis-action@v3.6 + with: + arguments: "/V3" + script-file: ${{ steps.package.outputs.packageName }}/GoldenDict.nsi + - name: make installer + run: | + cd ${{ steps.package.outputs.packageName }} + ls *.exe + - name: upload goldendict installer + # if: startsWith(github.event.ref, 'refs/tags/') + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ steps.package.outputs.packageName }}/GoldenDict-v22-Install.exe + asset_name: ${{ matrix.qt_ver }}-GoldenDict-v22-Install.exe + tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} + overwrite: true + release_name: GoldenDict-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} + prerelease: ${{env.prerelease}} From 048919be16933566561e637508f6f9bdf1cf640e Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Mon, 19 Sep 2022 21:03:14 +0800 Subject: [PATCH 68/75] action: modify windows installer --- .github/workflows/windows-6.x.yml | 2 +- .github/workflows/windows.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/windows-6.x.yml b/.github/workflows/windows-6.x.yml index 73edc131..7a64e6c8 100644 --- a/.github/workflows/windows-6.x.yml +++ b/.github/workflows/windows-6.x.yml @@ -177,7 +177,7 @@ jobs: with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: ${{ steps.package.outputs.packageName }}/GoldenDict-v22-Install.exe - asset_name: ${{ matrix.qt_ver }}-GoldenDict-v22-Install.exe + asset_name: ${{ matrix.qt_ver }}-GoldenDict-v${{env.version}}-${{env.version-suffix}}-Installer.exe tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} overwrite: true release_name: GoldenDict-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index eec4d38c..4cdae3a0 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -178,7 +178,7 @@ jobs: with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: ${{ steps.package.outputs.packageName }}/GoldenDict-v22-Install.exe - asset_name: ${{ matrix.qt_ver }}-GoldenDict-v22-Install.exe + asset_name: ${{ matrix.qt_ver }}-GoldenDict-v${{env.version}}-${{env.version-suffix}}-Installer.exe tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} overwrite: true release_name: GoldenDict-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} From 8ebe71e440465738630bf5239226e06e0a6a788f Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Tue, 20 Sep 2022 20:06:27 +0800 Subject: [PATCH 69/75] fix: help file can not be opened in Qt6 there is an error saying "can not register namespace goldendict_en etc." --- helpwindow.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/helpwindow.cc b/helpwindow.cc index fb81d04d..040e766d 100644 --- a/helpwindow.cc +++ b/helpwindow.cc @@ -113,6 +113,10 @@ HelpWindow::HelpWindow( QWidget * parent, Config::Class & cfg_ ) : helpEngine = new QHelpEngine( helpCollectionFile ); +#if (QT_VERSION > QT_VERSION_CHECK(6,0,0)) + helpEngine->setReadOnly( false ); +#endif + if( !helpEngine->setupData() ) { gdWarning( "Help engine initialization error: %s", helpEngine->error().toUtf8().data() ); From b6fd5e287071d66a88b1521d4ba8c70081858f8f Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Tue, 20 Sep 2022 20:15:26 +0800 Subject: [PATCH 70/75] opt: optimize WordList items update logic. --- wordlist.cc | 47 +++++++++-------------------------------------- 1 file changed, 9 insertions(+), 38 deletions(-) diff --git a/wordlist.cc b/wordlist.cc index d560a0c2..7b01bb58 100644 --- a/wordlist.cc +++ b/wordlist.cc @@ -51,52 +51,23 @@ void WordList::updateMatchResults( bool finished ) WordFinder::SearchResults const & results = wordFinder->getResults(); setUpdatesEnabled( false ); + //clear all existed items + clear(); for( unsigned x = 0; x < results.size(); ++x ) { - QListWidgetItem * i = item( x ); + QListWidgetItem * i = new QListWidgetItem( results[ x ].first, this ); + i->setToolTip( results[ x ].first ); - if ( !i ) + if( results[ x ].second ) { - i = new QListWidgetItem( results[ x ].first, this ); - i->setToolTip( results[ x ].first ); - - if ( results[ x ].second ) - { - QFont f = i->font(); - f.setItalic( true ); - i->setFont( f ); - } - addItem( i ); - } - else - { - if ( i->text() != results[ x ].first ) - { - i->setText( results[ x ].first ); - i->setToolTip( results[ x ].first ); - } - QFont f = i->font(); - if ( f.italic() != results[ x ].second ) - { - f.setItalic( results[ x ].second ); - i->setFont( f ); - } + f.setItalic( true ); + i->setFont( f ); } + //addItem( i ); - i->setTextAlignment(Qt::AlignLeft); - } - - while ( count() > (int) results.size() ) - { - // Chop off any extra items that were there - QListWidgetItem * i = takeItem( count() - 1 ); - - if ( i ) - delete i; - else - break; + i->setTextAlignment( Qt::AlignLeft ); } if ( count() ) From 86e1369da5f8de62528526b74ce3f5ac22cc0a47 Mon Sep 17 00:00:00 2001 From: xiaoyifang <105986+xiaoyifang@users.noreply.github.com> Date: Tue, 20 Sep 2022 21:43:22 +0800 Subject: [PATCH 71/75] Update CHANGES.md --- CHANGES.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index d657f76b..00560071 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -7,6 +7,10 @@ - concurrent fulltext index creation - add CJK fulltext search ability - many minor fixes . +- add mdx source+srcset support +- qt6.x help file can not open +- many minor optimizations. +- iframe website almost full support.(except some websites) ## Until 2022-8-31 From d68a8c7ff05b3423bac8a9da6a0c67d4846ec252 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Wed, 21 Sep 2022 23:50:14 +0800 Subject: [PATCH 72/75] clean code:remove seemingly useless code --- wordlist.cc | 20 +------------------- wordlist.hh | 1 - 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/wordlist.cc b/wordlist.cc index 7b01bb58..f02988b0 100644 --- a/wordlist.cc +++ b/wordlist.cc @@ -65,7 +65,6 @@ void WordList::updateMatchResults( bool finished ) f.setItalic( true ); i->setFont( f ); } - //addItem( i ); i->setTextAlignment( Qt::AlignLeft ); } @@ -111,21 +110,4 @@ void WordList::refreshTranslateLine() translateLine->setStyleSheet( translateLine->styleSheet() ); } -} - -void WordList::resizeEvent( QResizeEvent * ev ) -{ - // In some rare cases Qt start send QResizeEvent recursively - // up to full stack depletion (tested on Qt 4.8.5, 4.8.6). - // We use this trick to break such suicidal process. - - for( int x = 0; x < resizedSizes.size(); x++ ) - if( resizedSizes.at( x ) == ev->size() ) - return; - - resizedSizes.push_back( ev->size() ); - - QListWidget::resizeEvent( ev ); - - resizedSizes.pop_back(); -} +} \ No newline at end of file diff --git a/wordlist.hh b/wordlist.hh index 71b0131f..26a04bae 100644 --- a/wordlist.hh +++ b/wordlist.hh @@ -20,7 +20,6 @@ public: { translateLine = line; } protected: - virtual void resizeEvent( QResizeEvent * ev ); signals: void statusBarMessage(QString const & message, int timeout = 0, QPixmap const & pixmap = QPixmap()); From 927566244fd4592bf45e88e3a154528627fde957 Mon Sep 17 00:00:00 2001 From: Igor Kushnir Date: Wed, 21 Sep 2022 15:30:36 +0300 Subject: [PATCH 73/75] Don't percent-encode local file names while saving an article This commit fixes broken links in complete saved articles to files whose names contain reserved characters. An HTML parser decodes a percent-encoded URL before looking for the referenced file on disk. So a file with a percent-encoded name cannot be found. Percent-encode only the URL to fix the bug. --- mainwindow.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mainwindow.cc b/mainwindow.cc index 22487a69..fdea2925 100644 --- a/mainwindow.cc +++ b/mainwindow.cc @@ -3528,7 +3528,7 @@ static void filterAndCollectResources( QString & html, QRegExp & rx, const QStri { QUrl url( rx.cap( 1 ) ); QString host = url.host(); - QString resourcePath = QString::fromLatin1( QUrl::toPercentEncoding( Qt4x5::Url::path( url ), "/" ) ); + QString resourcePath = Qt4x5::Url::path( url ); if ( !host.startsWith( '/' ) ) host.insert( 0, '/' ); @@ -3545,6 +3545,7 @@ static void filterAndCollectResources( QString & html, QRegExp & rx, const QStri } // Modify original url, set to the native one + resourcePath = QString::fromLatin1( QUrl::toPercentEncoding( resourcePath, "/" ) ); QString newUrl = sep + QDir( folder ).dirName() + host + resourcePath + sep; html.replace( pos, rx.cap().length(), newUrl ); pos += newUrl.length(); From b9c74c8714eb647016ddb055243d29cbdb978174 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Thu, 22 Sep 2022 20:04:01 +0800 Subject: [PATCH 74/75] Revert "opt:website dictionary iframe remove mouseover event" This reverts commit c88d85ba7c0e2b9cab047210594df9205561c681. --- website.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website.cc b/website.cc index 4ec3f897..1b95e4c3 100644 --- a/website.cc +++ b/website.cc @@ -396,7 +396,9 @@ sptr< DataRequest > WebSiteDictionary::getArticle( wstring const & str, result += string( ""; From db251ac44f5876bdb7696be449d70128f52588e9 Mon Sep 17 00:00:00 2001 From: Xiao YiFang Date: Wed, 21 Sep 2022 23:40:06 +0800 Subject: [PATCH 75/75] revert embed translation --- config.cc | 13 ++++--------- config.hh | 1 - goldendict.pro | 36 ++++++++++++++++++++++++++++++------ main.cc | 2 +- preferences.cc | 2 +- 5 files changed, 36 insertions(+), 18 deletions(-) diff --git a/config.cc b/config.cc index a86e8c7c..b4c4a186 100644 --- a/config.cc +++ b/config.cc @@ -2264,17 +2264,12 @@ QString getProgramDataDir() noexcept #endif } -QString getEmbedLocDir() noexcept -{ - return ":/locale"; -} - QString getLocDir() noexcept { - if ( QDir( getProgramDataDir() ).cd( "locale" ) ) - return getProgramDataDir() + "/locale"; - else - return QCoreApplication::applicationDirPath() + "/locale"; + if ( QDir( getProgramDataDir() ).cd( "locale" ) ) + return getProgramDataDir() + "/locale"; + else + return QCoreApplication::applicationDirPath() + "/locale"; } QString getHelpDir() noexcept diff --git a/config.hh b/config.hh index 06d21ccf..012382cf 100644 --- a/config.hh +++ b/config.hh @@ -811,7 +811,6 @@ QString getUserQtCssFileName() ; QString getProgramDataDir() noexcept; /// Returns the directory storing program localizized files (.qm). -QString getEmbedLocDir() noexcept; QString getLocDir() noexcept; /// Returns the directory storing program help files (.qch). diff --git a/goldendict.pro b/goldendict.pro index fcd3e68a..b23f6a35 100644 --- a/goldendict.pro +++ b/goldendict.pro @@ -69,19 +69,18 @@ CONFIG += exceptions \ stl \ c++17 \ lrelease \ - embed_translations \ utf8_source \ force_debug_info mac { - DEBUG:CONFIG += app_bundle + CONFIG += app_bundle } - -QM_FILES_RESOURCE_PREFIX = /locale/ + +QM_FILES_INSTALL_PATH = /locale/ OBJECTS_DIR = build UI_DIR = build MOC_DIR = build -#RCC_DIR = build +RCC_DIR = build LIBS += -lz \ -lbz2 \ -llzo2 @@ -628,13 +627,38 @@ TRANSLATIONS += locale/ru_RU.ts \ locale/jb_JB.ts \ locale/hi_IN.ts \ locale/ie_001.ts - # Build version file !isEmpty( hasGit ) { PRE_TARGETDEPS += $$PWD/version.txt } +# This makes qmake generate translations +isEmpty(QMAKE_LRELEASE):QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease + + +# The *.qm files might not exist when qmake is run for the first time, +# causing the standard install rule to be ignored, and no translations +# will be installed. With this, we create the qm files during qmake run. +!win32 { + system($${QMAKE_LRELEASE} -silent $${_PRO_FILE_} 2> /dev/null) +} +else{ + system($${QMAKE_LRELEASE} -silent $${_PRO_FILE_}) +} + +updateqm.input = TRANSLATIONS +updateqm.output = locale/${QMAKE_FILE_BASE}.qm +updateqm.commands = $$QMAKE_LRELEASE \ + ${QMAKE_FILE_IN} \ + -qm \ + ${QMAKE_FILE_OUT} +updateqm.CONFIG += no_link +QMAKE_EXTRA_COMPILERS += updateqm +TS_OUT = $$TRANSLATIONS +TS_OUT ~= s/.ts/.qm/g +PRE_TARGETDEPS += $$TS_OUT + include( thirdparty/qtsingleapplication/src/qtsingleapplication.pri ) diff --git a/main.cc b/main.cc index 65a05758..28afaba6 100644 --- a/main.cc +++ b/main.cc @@ -399,7 +399,7 @@ int main( int argc, char ** argv ) app.installTranslator( &qtTranslator ); } - translator.load( Config::getEmbedLocDir() + "/" + localeName ); + translator.load( Config::getLocDir() + "/" + localeName ); app.installTranslator( &translator ); QTranslator webengineTs; diff --git a/preferences.cc b/preferences.cc index 7068341a..535f5039 100644 --- a/preferences.cc +++ b/preferences.cc @@ -41,7 +41,7 @@ Preferences::Preferences( QWidget * parent, Config::Class & cfg_ ): // See which other translations do we have - QStringList availLocs = QDir( Config::getEmbedLocDir() ).entryList( QStringList( "*.qm" ), + QStringList availLocs = QDir( Config::getLocDir() ).entryList( QStringList( "*.qm" ), QDir::Files ); // We need to sort by language name -- otherwise list looks really weird