Hello community,

here is the log from the commit of package anki for openSUSE:Factory checked in 
at 2019-06-01 09:47:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/anki (Old)
 and      /work/SRC/openSUSE:Factory/.anki.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "anki"

Sat Jun  1 09:47:51 2019 rev:10 rq:705905 version:2.1.13

Changes:
--------
--- /work/SRC/openSUSE:Factory/anki/anki.changes        2019-05-22 
11:18:27.410447206 +0200
+++ /work/SRC/openSUSE:Factory/.anki.new.5148/anki.changes      2019-06-01 
09:47:54.723356809 +0200
@@ -1,0 +2,22 @@
+Tue May 28 10:49:24 UTC 2019 - [email protected]
+
+- Update to 2.1.13:
+  * Fix formatting getting lost when copying&pasting between fields on macOS.
+  * Fix some issues that cause the main window to get stuck.
+  * Fix an empty deck list sometimes appearing when restoring from a backup.
+  * Fix Anki hanging after an error occurs during startup.
+  * Fix error caused by profile with trailing space on Windows.
+  * Fix error message when syncing with an unconfirmed email address.
+  * Use jsonschema for add-on manifests (thanks to Erez).
+  * Warn in DB check when high due numbers are encountered.
+  * Improve error messages on full disk and failed add-on deletion.
+  * Fix relearning cards being given learning step count in V2 scheduler.
+  * Fix preview window failing to appear when show both sides enabled.
+  * Removing trailing BR tag when pasting into an empty field.
+  * Don’t throw an error when non-Latin text in the Javascript console can’t 
be shown.
+  * Double click on add-ons to edit their configuration (thanks to lovac42).
+  * Fix the window icon in a few screens (thanks to John).
+  * Don’t highlight the deck selection button in the add screen on Windows.
+  * Improve the default type in the answer note type.
+
+-------------------------------------------------------------------

Old:
----
  anki-2.1.12-source.tgz

New:
----
  anki-2.1.13-source.tgz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ anki.spec ++++++
--- /var/tmp/diff_new_pack.dz6OmW/_old  2019-06-01 09:47:55.451356560 +0200
+++ /var/tmp/diff_new_pack.dz6OmW/_new  2019-06-01 09:47:55.451356560 +0200
@@ -12,13 +12,13 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via https://bugs.opensuse.org/
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 
 
 %bcond_without tests
 Name:           anki
-Version:        2.1.12
+Version:        2.1.13
 Release:        0
 Summary:        Spaced-Repetition Memory Training Program
 License:        AGPL-3.0-only
@@ -35,14 +35,19 @@
 BuildRequires:  python3-Send2Trash
 BuildRequires:  python3-beautifulsoup4
 BuildRequires:  python3-decorator
+BuildRequires:  python3-jsonschema
+BuildRequires:  python3-mock
 BuildRequires:  python3-qt5-devel
+BuildRequires:  python3-qtwebengine-qt5
 BuildRequires:  python3-requests
 Requires:       python3-Markdown
 Requires:       python3-PyAudio
 Requires:       python3-Send2Trash
 Requires:       python3-beautifulsoup4
 Requires:       python3-decorator
+Requires:       python3-jsonschema
 Requires:       python3-qt5
+Requires:       python3-qtwebengine-qt5
 Requires:       python3-requests
 Suggests:       lame
 Suggests:       mpv

++++++ anki-2.1.12-source.tgz -> anki-2.1.13-source.tgz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/README.development 
new/anki-2.1.13/README.development
--- old/anki-2.1.12/README.development  2019-02-26 00:45:07.000000000 +0100
+++ new/anki-2.1.13/README.development  2019-04-29 04:40:16.000000000 +0200
@@ -58,10 +58,10 @@
 If you get any errors, please make sure you don't have an older version of
 Anki installed in a system location.
 
-To run the unit tests, you will need to install nose from your distro, or
-with pip:
+To run the unit tests, you will need to install nose and mock from your
+distro, or with pip:
 
-$ pip3 install nose
+$ pip3 install nose mock
 
 Before contributing code, please read README.contributing.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/anki/__init__.py 
new/anki-2.1.13/anki/__init__.py
--- old/anki-2.1.12/anki/__init__.py    2019-04-15 04:17:36.000000000 +0200
+++ new/anki-2.1.13/anki/__init__.py    2019-04-29 06:51:16.000000000 +0200
@@ -10,6 +10,6 @@
 if sys.getfilesystemencoding().lower() in ("ascii", "ansi_x3.4-1968"):
     raise Exception("Anki requires a UTF-8 locale.")
 
-version="2.1.12" # build scripts grep this line, so preserve formatting
+version="2.1.13" # build scripts grep this line, so preserve formatting
 from anki.storage import Collection
 __all__ = ["Collection"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/anki/buildhash.py 
new/anki-2.1.13/anki/buildhash.py
--- old/anki-2.1.12/anki/buildhash.py   2019-04-21 12:03:30.000000000 +0200
+++ new/anki-2.1.13/anki/buildhash.py   2019-05-17 07:32:19.000000000 +0200
@@ -1 +1 @@
-build='eef86bf3'
+build='3ba55990'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/anki/collection.py 
new/anki-2.1.13/anki/collection.py
--- old/anki-2.1.12/anki/collection.py  2019-04-21 09:58:45.000000000 +0200
+++ new/anki-2.1.13/anki/collection.py  2019-04-29 10:14:24.000000000 +0200
@@ -754,6 +754,7 @@
     def fixIntegrity(self):
         "Fix possible problems and rebuild caches."
         problems = []
+        curs = self.db.cursor()
         self.save()
         oldSize = os.stat(self.path)[stat.ST_SIZE]
         if self.db.scalar("pragma integrity_check") != "ok":
@@ -847,10 +848,13 @@
         # field cache
         for m in self.models.all():
             self.updateFieldCache(self.models.nids(m))
-        # new cards can't have a due position > 32 bits
-        self.db.execute("""
-update cards set due = 1000000, mod = ?, usn = ? where due > 1000000
-and type = 0""", intTime(), self.usn())
+        # new cards can't have a due position > 32 bits, so wrap items over
+        # 2 million back to 1 million
+        curs.execute("""
+update cards set due=1000000+due%1000000,mod=?,usn=? where due>=1000000
+and type=0""", [intTime(), self.usn()])
+        if curs.rowcount:
+            problems.append("Found %d new cards with a due number >= 1,000,000 
- consider repositioning them in the Browse screen." % curs.rowcount)
         # new card position
         self.conf['nextPos'] = self.db.scalar(
             "select max(due)+1 from cards where type = 0") or 0
@@ -863,8 +867,6 @@
                 "update cards set due = ?, ivl = 1, mod = ?, usn = ? where id 
in %s"
                 % ids2str(ids), self.sched.today, intTime(), self.usn())
         # v2 sched had a bug that could create decimal intervals
-        curs = self.db.cursor()
-
         curs.execute("update cards set ivl=round(ivl),due=round(due) where 
ivl!=round(ivl) or due!=round(due)")
         if curs.rowcount:
             problems.append("Fixed %d cards with v2 scheduler bug." % 
curs.rowcount)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/anki/mpv.py new/anki-2.1.13/anki/mpv.py
--- old/anki-2.1.12/anki/mpv.py 2019-04-21 10:07:23.000000000 +0200
+++ new/anki-2.1.13/anki/mpv.py 2019-04-29 06:39:10.000000000 +0200
@@ -197,6 +197,7 @@
         """Start up the communication threads.
         """
         self._thread = threading.Thread(target=self._reader)
+        self._thread.daemon = True
         self._thread.start()
 
     def _stop_thread(self):
@@ -450,6 +451,7 @@
         """
         super()._start_thread()
         self._event_thread = threading.Thread(target=self._event_reader)
+        self._event_thread.daemon = True
         self._event_thread.start()
 
     def _stop_thread(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/anki/schedv2.py 
new/anki-2.1.13/anki/schedv2.py
--- old/anki-2.1.12/anki/schedv2.py     2019-03-09 23:22:42.000000000 +0100
+++ new/anki-2.1.13/anki/schedv2.py     2019-04-30 01:26:42.000000000 +0200
@@ -658,7 +658,7 @@
         card.type = 2
 
     def _startingLeft(self, card):
-        if card.type == 2:
+        if card.type == 3:
             conf = self._lapseConf(card)
         else:
             conf = self._lrnConf(card)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/anki/sound.py 
new/anki-2.1.13/anki/sound.py
--- old/anki-2.1.12/anki/sound.py       2019-04-15 04:17:36.000000000 +0200
+++ new/anki-2.1.13/anki/sound.py       2019-04-29 06:39:10.000000000 +0200
@@ -135,6 +135,7 @@
     mpvManager = MpvManager()
     _player = mpvManager.queueFile
     _queueEraser = mpvManager.clearQueue
+    atexit.register(cleanupMPV)
 
 def cleanupMPV():
     global mpvManager, _player, _queueEraser
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/anki/stdmodels.py 
new/anki-2.1.13/anki/stdmodels.py
--- old/anki-2.1.12/anki/stdmodels.py   2019-02-26 00:45:07.000000000 +0100
+++ new/anki-2.1.13/anki/stdmodels.py   2019-05-14 09:05:15.000000000 +0200
@@ -37,8 +37,8 @@
     fm = mm.newField(_("Back"))
     mm.addField(m, fm)
     t = mm.newTemplate(_("Card 1"))
-    t['qfmt'] = "{{"+_("Front")+"}}\n{{type:"+_("Back")+"}}"
-    t['afmt'] = "{{FrontSide}}\n\n<hr id=answer>\n\n"+"{{"+_("Back")+"}}"
+    t['qfmt'] = "{{"+_("Front")+"}}\n\n{{type:"+_("Back")+"}}"
+    t['afmt'] = "{{"+_("Front")+"}}\n\n<hr 
id=answer>\n\n{{type:"+_("Back")+"}}"
     mm.addTemplate(m, t)
     mm.add(m)
     return m
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/addons.py 
new/anki-2.1.13/aqt/addons.py
--- old/anki-2.1.12/aqt/addons.py       2019-04-16 09:37:00.000000000 +0200
+++ new/anki-2.1.13/aqt/addons.py       2019-05-15 08:09:11.000000000 +0200
@@ -8,6 +8,8 @@
 from collections import defaultdict
 import markdown
 from send2trash import send2trash
+import jsonschema
+from jsonschema.exceptions import ValidationError
 
 from aqt.qt import *
 from aqt.utils import showInfo, openFolder, isWin, openLink, \
@@ -24,12 +26,19 @@
 class AddonManager:
 
     ext = ".ankiaddon"
-    # todo?: use jsonschema package
     _manifest_schema = {
-        "package": {"type": str, "req": True, "meta": False},
-        "name": {"type": str, "req": True, "meta": True},
-        "mod": {"type": int, "req": False, "meta": True},
-        "conflicts": {"type": list, "req": False, "meta": True}
+        "type": "object",
+        "properties": {
+            "package": {"type": "string", "meta": False},
+            "name": {"type": "string", "meta": True},
+            "mod": {"type": "number", "meta": True},
+            "conflicts": {
+                "type": "array",
+                "items": {"type": "string"},
+                "meta": True
+            }
+        },
+        "required": ["package", "name"]
     }
 
     def __init__(self, mw):
@@ -161,18 +170,15 @@
     # Installing and deleting add-ons
     ######################################################################
 
-    def _readManifestFile(self, zfile):
+    def readManifestFile(self, zfile):
         try:
             with zfile.open("manifest.json") as f:
                 data = json.loads(f.read())
-            manifest = {}  # build new manifest from recognized keys
-            for key, attrs in self._manifest_schema.items():
-                if not attrs["req"] and key not in data:
-                    continue
-                val = data[key]
-                assert isinstance(val, attrs["type"])
-                manifest[key] = val
-        except (KeyError, json.decoder.JSONDecodeError, AssertionError):
+            jsonschema.validate(data, self._manifest_schema)
+            # build new manifest from recognized keys
+            schema = self._manifest_schema["properties"]
+            manifest = {key: data[key] for key in data.keys() & schema.keys()}
+        except (KeyError, json.decoder.JSONDecodeError, ValidationError):
             # raised for missing manifest, invalid json, missing/invalid keys
             return {}
         return manifest
@@ -187,7 +193,7 @@
             return False, "zip"
         
         with zfile:
-            file_manifest = self._readManifestFile(zfile)
+            file_manifest = self.readManifestFile(zfile)
             if manifest:
                 file_manifest.update(manifest)
             manifest = file_manifest
@@ -200,7 +206,7 @@
             meta = self.addonMeta(package)
             self._install(package, zfile)
         
-        schema = self._manifest_schema
+        schema = self._manifest_schema["properties"]
         manifest_meta = {k: v for k, v in manifest.items()
                          if k in schema and schema[k]["meta"]}
         meta.update(manifest_meta)
@@ -213,7 +219,9 @@
         base = self.addonsFolder(dir)
         if os.path.exists(base):
             self.backupUserFiles(dir)
-            self.deleteAddon(dir)
+            if not self.deleteAddon(dir):
+                self.restoreUserFiles(dir)
+                return
 
         os.mkdir(base)
         self.restoreUserFiles(dir)
@@ -230,8 +238,15 @@
                 continue
             zfile.extract(n, base)
 
+    # true on success
     def deleteAddon(self, dir):
-        send2trash(self.addonsFolder(dir))
+        try:
+            send2trash(self.addonsFolder(dir))
+            return True
+        except OSError as e:
+            showWarning(_("Unable to update or delete add-on. Please start 
Anki while holding down the shift key to temporarily disable add-ons, then try 
again.\n\nDebug info: %s") % e,
+                        textFormat="plain")
+            return False
 
     # Processing local add-on files
     ######################################################################
@@ -453,6 +468,7 @@
         f.viewFiles.clicked.connect(self.onViewFiles)
         f.delete_2.clicked.connect(self.onDelete)
         f.config.clicked.connect(self.onConfig)
+        self.form.addonList.itemDoubleClicked.connect(self.onConfig)
         
self.form.addonList.currentRowChanged.connect(self._onAddonItemSelected)
         self.setAcceptDrops(True)
         self.redrawAddons()
@@ -557,7 +573,8 @@
                                dict(num=len(selected))):
             return
         for dir in selected:
-            self.mgr.deleteAddon(dir)
+            if not self.mgr.deleteAddon(dir):
+                break
         self.form.addonList.clearSelection()
         self.redrawAddons()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/browser.py 
new/anki-2.1.13/aqt/browser.py
--- old/anki-2.1.12/aqt/browser.py      2019-04-15 04:19:10.000000000 +0200
+++ new/anki-2.1.13/aqt/browser.py      2019-05-17 07:15:41.000000000 +0200
@@ -1300,9 +1300,9 @@
         self.previewShowBothSides.setShortcut(QKeySequence("B"))
         self.previewShowBothSides.setToolTip(_("Shortcut key: %s" % "B"))
         bbox.addButton(self.previewShowBothSides, QDialogButtonBox.ActionRole)
-        self.previewShowBothSides.toggled.connect(self._onPreviewShowBothSides)
         self._previewBothSides = self.col.conf.get("previewBothSides", False)
         self.previewShowBothSides.setChecked(self._previewBothSides)
+        self.previewShowBothSides.toggled.connect(self._onPreviewShowBothSides)
 
         self._setupPreviewWebview()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/deckbrowser.py 
new/anki-2.1.13/aqt/deckbrowser.py
--- old/anki-2.1.12/aqt/deckbrowser.py  2019-03-09 23:22:42.000000000 +0100
+++ new/anki-2.1.13/aqt/deckbrowser.py  2019-04-29 08:53:59.000000000 +0200
@@ -85,6 +85,7 @@
     def _renderPage(self, reuse=False):
         if not reuse:
             self._dueTree = self.mw.col.sched.deckDueTree()
+            self.__renderPage(None)
         self.web.evalWithCallback("window.pageYOffset", self.__renderPage)
 
     def __renderPage(self, offset):
@@ -96,7 +97,8 @@
                          js=["jquery.js", "jquery-ui.js", "deckbrowser.js"])
         self.web.key = "deckBrowser"
         self._drawButtons()
-        self._scrollToOffset(offset)
+        if offset is not None:
+            self._scrollToOffset(offset)
 
     def _scrollToOffset(self, offset):
         self.web.eval("$(function() { window.scrollTo(0, %d, 'instant'); });" 
% offset)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/deckchooser.py 
new/anki-2.1.13/aqt/deckchooser.py
--- old/anki-2.1.12/aqt/deckchooser.py  2019-03-09 23:22:42.000000000 +0100
+++ new/anki-2.1.13/aqt/deckchooser.py  2019-05-15 06:48:40.000000000 +0200
@@ -27,6 +27,7 @@
             self.addWidget(self.deckLabel)
         # decks box
         self.deck = QPushButton(clicked=self.onDeckChange)
+        self.deck.setAutoDefault(False)
         self.deck.setToolTip(shortcut(_("Target Deck (Ctrl+D)")))
         s = QShortcut(QKeySequence(_("Ctrl+D")), self.widget, 
activated=self.onDeckChange)
         self.addWidget(self.deck)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/editor.py 
new/anki-2.1.13/aqt/editor.py
--- old/anki-2.1.12/aqt/editor.py       2019-04-16 10:53:44.000000000 +0200
+++ new/anki-2.1.13/aqt/editor.py       2019-05-14 09:00:13.000000000 +0200
@@ -991,7 +991,7 @@
         # add a comment in the clipboard html so we can tell text is copied
         # from us and doesn't need to be stripped
         clip = self.editor.mw.app.clipboard()
-        if not clip.ownsClipboard():
+        if not isMac and not clip.ownsClipboard():
             return
         mime = clip.mimeData()
         if not mime.hasHtml():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/errors.py 
new/anki-2.1.13/aqt/errors.py
--- old/anki-2.1.12/aqt/errors.py       2019-04-15 04:17:36.000000000 +0200
+++ new/anki-2.1.13/aqt/errors.py       2019-04-29 10:35:59.000000000 +0200
@@ -80,7 +80,7 @@
             return showWarning(self.tempFolderMsg())
         if "Beautiful Soup is not an HTTP client" in error:
             return
-        if "database or disk is full" in error:
+        if "database or disk is full" in error or "Errno 28" in error:
             return showWarning(_("Your computer's storage may be full. Please 
delete some unneeded files, then try again."))
         if "disk I/O error" in error:
             return showWarning(_("""\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/forms/addcards.py 
new/anki-2.1.13/aqt/forms/addcards.py
--- old/anki-2.1.12/aqt/forms/addcards.py       2019-03-04 08:53:14.000000000 
+0100
+++ new/anki-2.1.13/aqt/forms/addcards.py       2019-05-17 07:26:24.000000000 
+0200
@@ -13,6 +13,9 @@
     def setupUi(self, Dialog):
         Dialog.setObjectName("Dialog")
         Dialog.resize(453, 366)
+        icon = QtGui.QIcon()
+        icon.addPixmap(QtGui.QPixmap(":/icons/anki.png"), QtGui.QIcon.Normal, 
QtGui.QIcon.Off)
+        Dialog.setWindowIcon(icon)
         self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
         self.verticalLayout.setContentsMargins(12, 6, 12, 12)
         self.verticalLayout.setSpacing(3)
@@ -57,3 +60,4 @@
         _translate = QtCore.QCoreApplication.translate
         Dialog.setWindowTitle(_("Add"))
 
+from . import icons_rc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/forms/browser.py 
new/anki-2.1.13/aqt/forms/browser.py
--- old/anki-2.1.12/aqt/forms/browser.py        2019-03-11 04:34:30.000000000 
+0100
+++ new/anki-2.1.13/aqt/forms/browser.py        2019-05-17 07:26:24.000000000 
+0200
@@ -14,6 +14,9 @@
         Dialog.setObjectName("Dialog")
         Dialog.resize(750, 493)
         Dialog.setMinimumSize(QtCore.QSize(400, 400))
+        icon = QtGui.QIcon()
+        icon.addPixmap(QtGui.QPixmap(":/icons/anki.png"), QtGui.QIcon.Normal, 
QtGui.QIcon.Off)
+        Dialog.setWindowIcon(icon)
         self.centralwidget = QtWidgets.QWidget(Dialog)
         self.centralwidget.setObjectName("centralwidget")
         self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/forms/editcurrent.py 
new/anki-2.1.13/aqt/forms/editcurrent.py
--- old/anki-2.1.12/aqt/forms/editcurrent.py    2019-03-04 08:53:15.000000000 
+0100
+++ new/anki-2.1.13/aqt/forms/editcurrent.py    2019-05-17 07:26:24.000000000 
+0200
@@ -13,6 +13,9 @@
     def setupUi(self, Dialog):
         Dialog.setObjectName("Dialog")
         Dialog.resize(400, 300)
+        icon = QtGui.QIcon()
+        icon.addPixmap(QtGui.QPixmap(":/icons/anki.png"), QtGui.QIcon.Normal, 
QtGui.QIcon.Off)
+        Dialog.setWindowIcon(icon)
         self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
         self.verticalLayout.setContentsMargins(12, 12, 12, 12)
         self.verticalLayout.setSpacing(3)
@@ -35,3 +38,4 @@
         _translate = QtCore.QCoreApplication.translate
         Dialog.setWindowTitle(_("Dialog"))
 
+from . import icons_rc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/forms/icons_rc.py 
new/anki-2.1.13/aqt/forms/icons_rc.py
--- old/anki-2.1.12/aqt/forms/icons_rc.py       2019-04-21 12:02:41.000000000 
+0200
+++ new/anki-2.1.13/aqt/forms/icons_rc.py       2019-05-17 07:31:20.000000000 
+0200
@@ -2,217 +2,13 @@
 
 # Resource object code
 #
-# Created by: The Resource Compiler for PyQt5 (Qt v5.12.1)
+# Created by: The Resource Compiler for PyQt5 (Qt v5.12.3)
 #
 # WARNING! All changes made in this file will be lost!
 
 from PyQt5 import QtCore
 
 qt_resource_data = b"\
-\x00\x00\x02\xd7\
-\x89\
-\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
-\x00\x00\x3c\x00\x00\x00\x3c\x08\x06\x00\x00\x00\x3a\xfc\xd9\x72\
-\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\
-\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\
-\x79\x71\xc9\x65\x3c\x00\x00\x02\x79\x49\x44\x41\x54\x78\xda\xec\
-\x9a\xd1\x6d\xc2\x30\x10\x40\x0d\x62\x80\x6c\x40\x3a\x01\xde\xa0\
-\x19\x21\x23\xa4\x13\xc0\x06\xf5\x06\xa8\x13\xa4\x1b\xa4\x1b\x44\
-\x4c\x10\x98\x20\x6c\x10\x36\x68\x8d\xe4\x48\xc8\x75\x82\xef\xb0\
-\x0f\x87\xf8\xa4\xfb\x31\x89\xc3\xf3\x9d\xed\xbb\xb3\x17\x8c\x56\
-\xb8\xd4\x5c\xea\x46\x6a\xa2\xda\x2e\x52\x4f\x52\x7f\xa4\x1e\xd9\
-\x8b\xc8\x15\xb2\x91\xfa\x7b\x47\x5b\xf5\xec\x64\xe5\x6a\xc5\xca\
-\x02\x54\xd7\xea\xc6\x03\x26\x05\xdb\x20\x60\x7b\x6d\xd4\x14\x98\
-\x05\x6c\xaf\xdd\x54\x2c\xed\x02\xf6\xd6\xd2\x41\x8b\x70\x08\xdb\
-\xab\x08\x15\x36\xf5\x00\xdb\x6b\x1a\x22\x70\xe9\x11\xb8\x9e\x93\
-\x75\x9d\x59\x79\xe9\x10\x78\x4b\x30\xa8\xdb\x90\x2c\xdc\x12\x58\
-\xb8\x0b\x05\x96\x13\xc0\xf6\xca\x43\x70\xe9\x8c\x38\x2e\x47\xcb\
-\xea\x0e\x04\x57\x19\xcc\x59\xe9\x90\x6c\x08\x81\x37\x3e\x81\x3f\
-\xb5\xb6\x2b\xfc\x97\xd4\x6f\xc3\x0a\x4d\xb9\x1b\xe8\x61\x6c\xae\
-\xda\xfb\xb4\x93\xab\xb4\xf3\x0d\x02\x3c\x34\x57\xd3\x27\xbb\x34\
-\x1f\xd8\xff\x4d\xf1\x3c\x68\x0e\xbf\x0f\xb4\x87\x96\xa4\x5f\x7c\
-\x2f\x5a\x17\x36\x61\x59\xb2\x99\xc9\x12\x61\xc9\xf4\x55\x81\x4f\
-\x13\x01\x4e\x7c\xbb\xf4\xfa\xc9\x0b\xd9\xd1\x62\xd5\x1e\xfc\x4f\
-\x4b\x40\xc7\x63\x1f\x38\x3f\x71\x55\xe6\x90\x29\x89\x05\x4e\x2c\
-\xdd\xdf\x87\x1c\x2c\x23\xaf\x03\xa6\xf3\x6e\x20\x80\xcf\x0d\x81\
-\x07\x55\xf2\x90\x21\xff\xa3\x95\x0c\xd5\x94\x4b\xc0\xe0\xf8\x4c\
-\x0f\xf3\x91\x67\x51\xd5\xce\x02\xd0\x61\x49\x00\x5c\x5a\x7e\x13\
-\x5d\xe9\x4c\x98\x7d\x25\x91\x13\xbb\xf3\x58\x49\x69\xf7\xc8\x22\
-\x51\x31\xfb\x22\x79\x4d\x58\xc4\x2b\x7d\xd5\xbe\x32\x80\x95\xb3\
-\x00\xac\x5b\xfa\xae\x57\x71\x82\xb9\x5c\x01\x3c\xc9\x49\xaa\x3a\
-\xb6\x1a\x36\x9a\x6b\x27\x8e\x0b\x7a\xad\xd6\xbf\x60\x44\xb5\xeb\
-\x1a\xe0\x46\xdc\xd1\x36\xd5\x69\x1e\x94\xfb\x2c\xf0\x41\x2b\x93\
-\xae\xa1\x75\xd8\x7b\xfd\xed\x7d\x84\x75\x02\x01\x8d\x39\x49\x6c\
-\x80\xb0\x2d\xf3\x78\xac\x5a\x33\xd8\xe9\x7d\xa2\x06\xaa\xb3\xb4\
-\xaa\xd0\xde\x2f\x98\xe7\x5a\xb5\x4d\x30\xd2\x58\x2c\x34\x99\xe1\
-\xbd\x42\x0d\x48\xab\x3d\x5b\xa9\xdf\xf4\x81\xb2\xb9\x2e\x51\x50\
-\x55\x0e\x3b\xcb\xed\x04\x13\x04\xec\x2c\xfb\x17\x94\x95\x06\xc8\
-\xa2\x54\x1b\x2c\x68\xea\x6f\x0f\xe8\x13\x15\x60\x2c\x1e\x84\x4e\
-\x95\x15\x21\x73\xe8\x6c\x28\x18\x40\x83\x85\x0f\xf6\xff\x30\x80\
-\xb4\xa6\x84\xb9\x9a\x84\xdd\xaa\x82\xb9\xc7\xb5\x63\x7e\x73\xe2\
-\x9a\x05\x78\xa3\x27\xf1\x10\x4b\x4f\xe2\x76\x5e\xaa\xc0\x1f\xb1\
-\x78\x43\xb5\xe5\xb8\xb6\x78\xa1\xe0\x5b\x4b\x6b\x0a\x36\xa1\x1b\
-\x78\xd8\xbc\x9a\x6c\x5f\x8d\x67\x4b\x11\x38\x02\x47\xe0\x08\x1c\
-\x81\x03\x92\x15\xf2\x3d\x8e\x88\x6b\x6d\x82\x89\x35\x22\x73\x32\
-\x65\x5f\xe4\x65\x1e\x4a\x15\xd1\xa5\x23\x70\x04\x9e\x8f\xfc\x09\
-\x30\x00\xa0\x1c\x74\x67\x26\xea\x15\x76\x00\x00\x00\x00\x49\x45\
-\x4e\x44\xae\x42\x60\x82\
-\x00\x00\x05\x69\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
-\x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\
-\x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\
-\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\
-\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\
-\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\
-\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\
-\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\
-\x31\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x77\x69\
-\x64\x74\x68\x3d\x22\x31\x30\x30\x25\x22\x20\x68\x65\x69\x67\x68\
-\x74\x3d\x22\x31\x30\x30\x25\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x36\x30\x20\x36\x30\x22\x20\x76\x65\x72\
-\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\
-\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x20\x73\x74\
-\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\
-\x76\x65\x6e\x6f\x64\x64\x3b\x63\x6c\x69\x70\x2d\x72\x75\x6c\x65\
-\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\
-\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\
-\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\
-\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\
-\x6c\x69\x6d\x69\x74\x3a\x31\x2e\x35\x3b\x22\x3e\x0a\x20\x20\x20\
-\x20\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\
-\x61\x74\x72\x69\x78\x28\x31\x2c\x30\x2c\x30\x2c\x31\x2c\x2d\x32\
-\x31\x30\x2c\x30\x29\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\
-\x3c\x67\x20\x69\x64\x3d\x22\x64\x65\x63\x6b\x22\x20\x74\x72\x61\
-\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x31\
-\x2c\x30\x2c\x30\x2c\x31\x2c\x2d\x31\x34\x38\x31\x2c\x30\x29\x22\
-\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x72\
-\x65\x63\x74\x20\x78\x3d\x22\x31\x36\x39\x31\x22\x20\x79\x3d\x22\
-\x30\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x30\x22\x20\x68\x65\
-\x69\x67\x68\x74\x3d\x22\x36\x30\x22\x20\x73\x74\x79\x6c\x65\x3d\
-\x22\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x22\x2f\x3e\x0a\x20\
-\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x67\x20\x74\x72\
-\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\
-\x31\x2e\x33\x34\x36\x35\x34\x2c\x30\x2e\x30\x30\x33\x33\x35\x39\
-\x30\x34\x2c\x2d\x30\x2e\x30\x30\x33\x39\x36\x31\x30\x32\x2c\x31\
-\x2e\x35\x38\x37\x38\x36\x2c\x38\x32\x39\x2e\x30\x31\x39\x2c\x2d\
-\x33\x2e\x39\x30\x35\x38\x29\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\
-\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x70\x61\x74\x68\x20\
-\x64\x3d\x22\x4d\x36\x37\x33\x2c\x37\x4c\x36\x35\x32\x2c\x37\x4c\
-\x36\x35\x32\x2c\x31\x30\x2e\x39\x31\x4c\x36\x36\x38\x2e\x32\x30\
-\x31\x2c\x31\x31\x2e\x30\x31\x33\x4c\x36\x36\x38\x2e\x32\x34\x33\
-\x2c\x33\x32\x2e\x39\x30\x33\x4c\x36\x37\x33\x2c\x33\x32\x2e\x39\
-\x30\x33\x4c\x36\x37\x33\x2c\x37\x5a\x22\x20\x73\x74\x79\x6c\x65\
-\x3d\x22\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x73\x74\x72\x6f\
-\x6b\x65\x3a\x62\x6c\x61\x63\x6b\x3b\x73\x74\x72\x6f\x6b\x65\x2d\
-\x77\x69\x64\x74\x68\x3a\x31\x2e\x38\x34\x70\x78\x3b\x22\x2f\x3e\
-\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x2f\x67\
-\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x67\
-\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\
-\x69\x78\x28\x31\x2e\x33\x34\x36\x35\x34\x2c\x30\x2e\x30\x30\x33\
-\x33\x35\x39\x30\x34\x2c\x2d\x30\x2e\x30\x30\x33\x39\x36\x31\x30\
-\x32\x2c\x31\x2e\x35\x38\x37\x38\x36\x2c\x38\x33\x36\x2e\x30\x39\
-\x36\x2c\x2d\x31\x30\x2e\x33\x34\x32\x29\x22\x3e\x0a\x20\x20\x20\
-\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x70\x61\
-\x74\x68\x20\x64\x3d\x22\x4d\x36\x37\x33\x2c\x37\x4c\x36\x35\x32\
-\x2c\x37\x4c\x36\x35\x32\x2c\x31\x30\x2e\x39\x31\x4c\x36\x36\x38\
-\x2e\x32\x30\x31\x2c\x31\x31\x2e\x30\x31\x33\x4c\x36\x36\x38\x2e\
-\x32\x34\x33\x2c\x33\x32\x2e\x39\x30\x33\x4c\x36\x37\x33\x2c\x33\
-\x32\x2e\x39\x30\x33\x4c\x36\x37\x33\x2c\x37\x5a\x22\x20\x73\x74\
-\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x73\
-\x74\x72\x6f\x6b\x65\x3a\x62\x6c\x61\x63\x6b\x3b\x73\x74\x72\x6f\
-\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x2e\x38\x34\x70\x78\x3b\
-\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\
-\x3c\x2f\x67\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\
-\x20\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\
-\x61\x74\x72\x69\x78\x28\x31\x2e\x33\x34\x36\x35\x34\x2c\x30\x2e\
-\x30\x30\x33\x33\x35\x39\x30\x34\x2c\x2d\x30\x2e\x30\x30\x33\x39\
-\x36\x31\x30\x32\x2c\x31\x2e\x35\x38\x37\x38\x36\x2c\x38\x32\x32\
-\x2e\x35\x34\x31\x2c\x32\x2e\x35\x32\x30\x39\x31\x29\x22\x3e\x0a\
-\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\
-\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x36\x37\x33\x2c\x37\x4c\
-\x36\x35\x32\x2c\x37\x4c\x36\x35\x32\x2c\x33\x32\x2e\x39\x30\x33\
-\x4c\x36\x37\x33\x2c\x33\x32\x2e\x39\x30\x33\x4c\x36\x37\x33\x2c\
-\x37\x5a\x22\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\
-\x6e\x6f\x6e\x65\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x62\x6c\x61\x63\
-\x6b\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\
-\x2e\x38\x34\x70\x78\x3b\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\
-\x20\x20\x20\x20\x20\x20\x3c\x2f\x67\x3e\x0a\x20\x20\x20\x20\x20\
-\x20\x20\x20\x3c\x2f\x67\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x67\x3e\
-\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
-\x00\x00\x04\x06\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
-\x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\
-\x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\
-\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\
-\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\
-\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\
-\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\
-\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\
-\x31\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x77\x69\
-\x64\x74\x68\x3d\x22\x31\x30\x30\x25\x22\x20\x68\x65\x69\x67\x68\
-\x74\x3d\x22\x31\x30\x30\x25\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x36\x30\x20\x36\x30\x22\x20\x76\x65\x72\
-\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\
-\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x20\x73\x74\
-\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\
-\x76\x65\x6e\x6f\x64\x64\x3b\x63\x6c\x69\x70\x2d\x72\x75\x6c\x65\
-\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\
-\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\
-\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\
-\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\
-\x6c\x69\x6d\x69\x74\x3a\x31\x2e\x35\x3b\x22\x3e\x0a\x20\x20\x20\
-\x20\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\
-\x61\x74\x72\x69\x78\x28\x31\x2c\x30\x2c\x30\x2c\x31\x2c\x2d\x32\
-\x38\x30\x2c\x30\x29\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\
-\x3c\x67\x20\x69\x64\x3d\x22\x68\x65\x61\x72\x74\x22\x20\x74\x72\
-\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\
-\x31\x2c\x30\x2c\x30\x2c\x31\x2c\x2d\x31\x34\x31\x31\x2c\x30\x29\
-\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\
-\x72\x65\x63\x74\x20\x78\x3d\x22\x31\x36\x39\x31\x22\x20\x79\x3d\
-\x22\x30\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x30\x22\x20\x68\
-\x65\x69\x67\x68\x74\x3d\x22\x36\x30\x22\x20\x73\x74\x79\x6c\x65\
-\x3d\x22\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x22\x2f\x3e\x0a\
-\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x67\x20\x74\
-\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\
-\x28\x30\x2e\x39\x36\x30\x32\x34\x31\x2c\x30\x2c\x30\x2c\x30\x2e\
-\x39\x36\x30\x32\x34\x31\x2c\x31\x34\x33\x31\x2e\x30\x31\x2c\x33\
-\x2e\x31\x34\x37\x30\x31\x29\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\
-\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x70\x61\x74\x68\x20\
-\x64\x3d\x22\x4d\x33\x30\x32\x2c\x31\x30\x2e\x38\x43\x33\x30\x37\
-\x2e\x36\x38\x34\x2c\x30\x20\x33\x31\x39\x2e\x30\x35\x33\x2c\x30\
-\x20\x33\x32\x34\x2e\x37\x33\x37\x2c\x35\x2e\x34\x43\x33\x33\x30\
-\x2e\x34\x32\x31\x2c\x31\x30\x2e\x38\x20\x33\x33\x30\x2e\x34\x32\
-\x31\x2c\x32\x31\x2e\x36\x20\x33\x32\x34\x2e\x37\x33\x37\x2c\x33\
-\x32\x2e\x34\x43\x33\x32\x30\x2e\x37\x35\x38\x2c\x34\x30\x2e\x35\
-\x20\x33\x31\x30\x2e\x35\x32\x36\x2c\x34\x38\x2e\x36\x20\x33\x30\
-\x32\x2c\x35\x34\x43\x32\x39\x33\x2e\x34\x37\x34\x2c\x34\x38\x2e\
-\x36\x20\x32\x38\x33\x2e\x32\x34\x32\x2c\x34\x30\x2e\x35\x20\x32\
-\x37\x39\x2e\x32\x36\x33\x2c\x33\x32\x2e\x34\x43\x32\x37\x33\x2e\
-\x35\x37\x39\x2c\x32\x31\x2e\x36\x20\x32\x37\x33\x2e\x35\x37\x39\
-\x2c\x31\x30\x2e\x38\x20\x32\x37\x39\x2e\x32\x36\x33\x2c\x35\x2e\
-\x34\x43\x32\x38\x34\x2e\x39\x34\x37\x2c\x30\x20\x32\x39\x36\x2e\
-\x33\x31\x36\x2c\x30\x20\x33\x30\x32\x2c\x31\x30\x2e\x38\x5a\x22\
-\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\
-\x65\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x62\x6c\x61\x63\x6b\x3b\x73\
-\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x32\x2e\x38\x32\
-\x70\x78\x3b\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\
-\x20\x20\x20\x3c\x2f\x67\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\
-\x3c\x2f\x67\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x67\x3e\x0a\x3c\x2f\
-\x73\x76\x67\x3e\x0a\
 \x00\x00\x06\xb8\
 \x89\
 \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
@@ -323,6 +119,136 @@
 \xf0\x09\xd0\xde\xc7\xe9\xb6\x11\x7f\x4b\x80\x25\xa0\xdc\xca\x39\
 \xc0\xff\x00\x27\xf2\xcd\xbe\x4f\x7b\xc5\xe3\x00\x00\x00\x00\x49\
 \x45\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x05\x69\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
+\x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\
+\x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\
+\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\
+\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\
+\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\
+\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\
+\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\
+\x31\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x77\x69\
+\x64\x74\x68\x3d\x22\x31\x30\x30\x25\x22\x20\x68\x65\x69\x67\x68\
+\x74\x3d\x22\x31\x30\x30\x25\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x36\x30\x20\x36\x30\x22\x20\x76\x65\x72\
+\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\
+\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x20\x73\x74\
+\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\
+\x76\x65\x6e\x6f\x64\x64\x3b\x63\x6c\x69\x70\x2d\x72\x75\x6c\x65\
+\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\
+\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\
+\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\
+\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\
+\x6c\x69\x6d\x69\x74\x3a\x31\x2e\x35\x3b\x22\x3e\x0a\x20\x20\x20\
+\x20\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\
+\x61\x74\x72\x69\x78\x28\x31\x2c\x30\x2c\x30\x2c\x31\x2c\x2d\x32\
+\x31\x30\x2c\x30\x29\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\
+\x3c\x67\x20\x69\x64\x3d\x22\x64\x65\x63\x6b\x22\x20\x74\x72\x61\
+\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x31\
+\x2c\x30\x2c\x30\x2c\x31\x2c\x2d\x31\x34\x38\x31\x2c\x30\x29\x22\
+\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x72\
+\x65\x63\x74\x20\x78\x3d\x22\x31\x36\x39\x31\x22\x20\x79\x3d\x22\
+\x30\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x30\x22\x20\x68\x65\
+\x69\x67\x68\x74\x3d\x22\x36\x30\x22\x20\x73\x74\x79\x6c\x65\x3d\
+\x22\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x22\x2f\x3e\x0a\x20\
+\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x67\x20\x74\x72\
+\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\
+\x31\x2e\x33\x34\x36\x35\x34\x2c\x30\x2e\x30\x30\x33\x33\x35\x39\
+\x30\x34\x2c\x2d\x30\x2e\x30\x30\x33\x39\x36\x31\x30\x32\x2c\x31\
+\x2e\x35\x38\x37\x38\x36\x2c\x38\x32\x39\x2e\x30\x31\x39\x2c\x2d\
+\x33\x2e\x39\x30\x35\x38\x29\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\
+\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x70\x61\x74\x68\x20\
+\x64\x3d\x22\x4d\x36\x37\x33\x2c\x37\x4c\x36\x35\x32\x2c\x37\x4c\
+\x36\x35\x32\x2c\x31\x30\x2e\x39\x31\x4c\x36\x36\x38\x2e\x32\x30\
+\x31\x2c\x31\x31\x2e\x30\x31\x33\x4c\x36\x36\x38\x2e\x32\x34\x33\
+\x2c\x33\x32\x2e\x39\x30\x33\x4c\x36\x37\x33\x2c\x33\x32\x2e\x39\
+\x30\x33\x4c\x36\x37\x33\x2c\x37\x5a\x22\x20\x73\x74\x79\x6c\x65\
+\x3d\x22\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x73\x74\x72\x6f\
+\x6b\x65\x3a\x62\x6c\x61\x63\x6b\x3b\x73\x74\x72\x6f\x6b\x65\x2d\
+\x77\x69\x64\x74\x68\x3a\x31\x2e\x38\x34\x70\x78\x3b\x22\x2f\x3e\
+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x2f\x67\
+\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x67\
+\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\
+\x69\x78\x28\x31\x2e\x33\x34\x36\x35\x34\x2c\x30\x2e\x30\x30\x33\
+\x33\x35\x39\x30\x34\x2c\x2d\x30\x2e\x30\x30\x33\x39\x36\x31\x30\
+\x32\x2c\x31\x2e\x35\x38\x37\x38\x36\x2c\x38\x33\x36\x2e\x30\x39\
+\x36\x2c\x2d\x31\x30\x2e\x33\x34\x32\x29\x22\x3e\x0a\x20\x20\x20\
+\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x70\x61\
+\x74\x68\x20\x64\x3d\x22\x4d\x36\x37\x33\x2c\x37\x4c\x36\x35\x32\
+\x2c\x37\x4c\x36\x35\x32\x2c\x31\x30\x2e\x39\x31\x4c\x36\x36\x38\
+\x2e\x32\x30\x31\x2c\x31\x31\x2e\x30\x31\x33\x4c\x36\x36\x38\x2e\
+\x32\x34\x33\x2c\x33\x32\x2e\x39\x30\x33\x4c\x36\x37\x33\x2c\x33\
+\x32\x2e\x39\x30\x33\x4c\x36\x37\x33\x2c\x37\x5a\x22\x20\x73\x74\
+\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x73\
+\x74\x72\x6f\x6b\x65\x3a\x62\x6c\x61\x63\x6b\x3b\x73\x74\x72\x6f\
+\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x2e\x38\x34\x70\x78\x3b\
+\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\
+\x3c\x2f\x67\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\
+\x20\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\
+\x61\x74\x72\x69\x78\x28\x31\x2e\x33\x34\x36\x35\x34\x2c\x30\x2e\
+\x30\x30\x33\x33\x35\x39\x30\x34\x2c\x2d\x30\x2e\x30\x30\x33\x39\
+\x36\x31\x30\x32\x2c\x31\x2e\x35\x38\x37\x38\x36\x2c\x38\x32\x32\
+\x2e\x35\x34\x31\x2c\x32\x2e\x35\x32\x30\x39\x31\x29\x22\x3e\x0a\
+\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\
+\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x36\x37\x33\x2c\x37\x4c\
+\x36\x35\x32\x2c\x37\x4c\x36\x35\x32\x2c\x33\x32\x2e\x39\x30\x33\
+\x4c\x36\x37\x33\x2c\x33\x32\x2e\x39\x30\x33\x4c\x36\x37\x33\x2c\
+\x37\x5a\x22\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\
+\x6e\x6f\x6e\x65\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x62\x6c\x61\x63\
+\x6b\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\
+\x2e\x38\x34\x70\x78\x3b\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\
+\x20\x20\x20\x20\x20\x20\x3c\x2f\x67\x3e\x0a\x20\x20\x20\x20\x20\
+\x20\x20\x20\x3c\x2f\x67\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x67\x3e\
+\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
+\x00\x00\x02\x68\
+\x00\
+\x00\x10\x25\x78\x9c\xed\x97\x5b\x6f\xd3\x30\x14\xc7\xdf\xf7\x29\
+\x8c\x25\x24\x90\x52\x5f\x13\x3b\xce\x9a\x4d\xda\x85\x09\x69\xc0\
+\x24\x36\x10\xbc\x85\xc4\x6b\xcd\xd2\x24\x4a\xb2\xb6\xfb\xf6\x9c\
+\x64\xed\xb4\x6e\xd5\x40\x88\xf1\xb2\xb4\x55\xeb\x73\x72\x7c\x2e\
+\x3f\xfb\xff\xd0\xf1\xfe\x72\x96\xa3\xb9\xad\x1b\x57\x16\x31\xe6\
+\x84\x61\x64\x8b\xb4\xcc\x5c\x31\x89\xf1\xc5\xf9\xbb\x51\x88\x51\
+\xd3\x26\x45\x96\xe4\x65\x61\x63\x5c\x94\x78\x7f\x6f\x67\xfc\xea\
+\xe8\xd3\xe1\xf9\xb7\xb3\x63\xd4\xcc\x27\xe8\xec\xe2\xe0\xf4\xfd\
+\x21\xc2\x23\x4a\xbf\xca\x43\x4a\x8f\xce\x8f\xd0\xe7\x2f\x27\x88\
+\x13\x4e\xe9\xf1\x47\x8c\xf0\xb4\x6d\xab\x88\xd2\xc5\x62\x41\x16\
+\x92\x94\xf5\x84\x9e\xd4\x49\x35\x75\x69\x43\x21\x90\x76\x81\xb0\
+\x89\x42\x32\xce\x49\xd6\x66\x18\x4a\x74\x99\x17\x2e\x6b\xa7\xd0\
+\x16\x63\xaf\x31\x9a\x5a\x37\x99\xb6\x6b\x6b\xee\xec\xe2\xa0\x5c\
+\xc6\x98\x21\x86\x54\xf7\xc1\xf7\xe7\xe0\x18\xc1\x64\x45\x13\x6f\
+\xa9\x2d\x18\x63\x5d\xad\x55\x48\xb4\xcc\x5d\x71\xb5\x2d\x90\x1b\
+\x63\x68\xff\xb4\x0f\x8d\x9a\x2a\x49\x81\x41\x55\xdb\xc6\xd6\x73\
+\xdb\x91\xb9\xc9\xc1\x71\xe9\xf2\x7c\x54\x5f\xe7\x36\xb2\x73\x5b\
+\x94\x59\xb6\x9b\xe6\xae\xda\xf4\x34\x6d\x5d\x5e\xd9\x11\x24\xb3\
+\x69\x52\x45\x75\x79\x5d\x6c\x38\x7f\x96\xae\xd8\xf4\xce\x5c\x6b\
+\xeb\xdc\xc1\x4f\xc4\x49\xb0\x0b\x4c\x10\xbc\xc6\x13\xd4\xd6\x49\
+\xd1\x5c\x96\xf5\x2c\xc6\xb3\xa4\xad\xdd\xf2\x0d\xf7\x18\xbc\xb9\
+\x37\xf2\xb9\xf6\xd8\xdb\x55\xe8\x2a\xdc\x65\x31\x4e\xcb\x3c\xb7\
+\x69\x0b\x70\xf0\x53\xdb\xb9\xd0\xfe\xe6\xfe\x3e\x47\x0d\x5b\x11\
+\xa0\xe6\xca\x00\xd7\x1b\x60\x8e\xd7\x47\xd3\x61\x5f\x1f\x4c\xb7\
+\xbe\x47\x24\x2a\xe0\xc6\xec\x62\xfa\x20\xd9\xb6\xfe\x19\x31\x7e\
+\xe0\x4b\xd9\xf7\x71\x67\x18\x41\x94\x62\xdc\x13\x84\x2b\xa5\xcc\
+\xc3\xb6\x9e\xc8\xa6\x82\x80\x73\xc8\x46\x18\xe3\x4a\xfa\x42\x78\
+\xa3\x7e\x6d\x84\x66\x06\xdc\x5a\x8b\x00\x48\x71\x61\x0c\x31\xd2\
+\x13\x21\x91\xa1\x0e\xb7\x15\xe8\x8b\x54\x49\x3b\x45\x40\xf1\x83\
+\xd2\xd2\xd3\xa7\x2a\x10\xab\x6f\x0e\xbd\xf2\x53\xa5\x42\x22\xa0\
+\x4f\xb8\xbb\x8c\xcb\x5b\xd3\x97\x9e\x14\xc4\x30\x30\xf5\xc6\x52\
+\x7f\xdf\x02\xe9\xf6\xc4\xa3\x1f\x79\x92\x5e\xad\x8f\xbf\x07\x1c\
+\xf9\xd5\xf2\x11\xc2\xbe\x27\x3a\xf9\xe7\x34\x24\x93\xc0\xc1\x13\
+\x01\x11\x81\x0a\x5e\x3a\x0d\x61\x14\xd1\xa1\x27\x41\x7b\xdc\xff\
+\x0b\x1a\xff\x77\xe0\xc7\x8e\x3f\xd7\x99\x52\x83\xce\x06\x9d\x0d\
+\x3a\x7b\x6e\x9d\xc1\xa0\x4c\x19\xe5\x8d\x84\x26\x42\x85\x6a\x10\
+\xda\x33\x5f\xad\x41\x68\x2f\x53\x68\x1a\xe6\xf7\x75\x30\x08\x6d\
+\x10\xda\x20\xb4\xdf\x0d\xbc\xe1\xb8\x33\xfa\xc5\xb8\xfb\x97\xbc\
+\xb7\xf3\x0b\x46\x33\xee\x37\
 \x00\x00\x04\x30\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -480,47 +406,121 @@
 \x20\x20\x3c\x2f\x67\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\
 \x2f\x67\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\
 \x76\x67\x3e\x0a\
-\x00\x00\x02\x68\
-\x00\
-\x00\x10\x25\x78\x9c\xed\x97\x5b\x6f\xd3\x30\x14\xc7\xdf\xf7\x29\
-\x8c\x25\x24\x90\x52\x5f\x13\x3b\xce\x9a\x4d\xda\x85\x09\x69\xc0\
-\x24\x36\x10\xbc\x85\xc4\x6b\xcd\xd2\x24\x4a\xb2\xb6\xfb\xf6\x9c\
-\x64\xed\xb4\x6e\xd5\x40\x88\xf1\xb2\xb4\x55\xeb\x73\x72\x7c\x2e\
-\x3f\xfb\xff\xd0\xf1\xfe\x72\x96\xa3\xb9\xad\x1b\x57\x16\x31\xe6\
-\x84\x61\x64\x8b\xb4\xcc\x5c\x31\x89\xf1\xc5\xf9\xbb\x51\x88\x51\
-\xd3\x26\x45\x96\xe4\x65\x61\x63\x5c\x94\x78\x7f\x6f\x67\xfc\xea\
-\xe8\xd3\xe1\xf9\xb7\xb3\x63\xd4\xcc\x27\xe8\xec\xe2\xe0\xf4\xfd\
-\x21\xc2\x23\x4a\xbf\xca\x43\x4a\x8f\xce\x8f\xd0\xe7\x2f\x27\x88\
-\x13\x4e\xe9\xf1\x47\x8c\xf0\xb4\x6d\xab\x88\xd2\xc5\x62\x41\x16\
-\x92\x94\xf5\x84\x9e\xd4\x49\x35\x75\x69\x43\x21\x90\x76\x81\xb0\
-\x89\x42\x32\xce\x49\xd6\x66\x18\x4a\x74\x99\x17\x2e\x6b\xa7\xd0\
-\x16\x63\xaf\x31\x9a\x5a\x37\x99\xb6\x6b\x6b\xee\xec\xe2\xa0\x5c\
-\xc6\x98\x21\x86\x54\xf7\xc1\xf7\xe7\xe0\x18\xc1\x64\x45\x13\x6f\
-\xa9\x2d\x18\x63\x5d\xad\x55\x48\xb4\xcc\x5d\x71\xb5\x2d\x90\x1b\
-\x63\x68\xff\xb4\x0f\x8d\x9a\x2a\x49\x81\x41\x55\xdb\xc6\xd6\x73\
-\xdb\x91\xb9\xc9\xc1\x71\xe9\xf2\x7c\x54\x5f\xe7\x36\xb2\x73\x5b\
-\x94\x59\xb6\x9b\xe6\xae\xda\xf4\x34\x6d\x5d\x5e\xd9\x11\x24\xb3\
-\x69\x52\x45\x75\x79\x5d\x6c\x38\x7f\x96\xae\xd8\xf4\xce\x5c\x6b\
-\xeb\xdc\xc1\x4f\xc4\x49\xb0\x0b\x4c\x10\xbc\xc6\x13\xd4\xd6\x49\
-\xd1\x5c\x96\xf5\x2c\xc6\xb3\xa4\xad\xdd\xf2\x0d\xf7\x18\xbc\xb9\
-\x37\xf2\xb9\xf6\xd8\xdb\x55\xe8\x2a\xdc\x65\x31\x4e\xcb\x3c\xb7\
-\x69\x0b\x70\xf0\x53\xdb\xb9\xd0\xfe\xe6\xfe\x3e\x47\x0d\x5b\x11\
-\xa0\xe6\xca\x00\xd7\x1b\x60\x8e\xd7\x47\xd3\x61\x5f\x1f\x4c\xb7\
-\xbe\x47\x24\x2a\xe0\xc6\xec\x62\xfa\x20\xd9\xb6\xfe\x19\x31\x7e\
-\xe0\x4b\xd9\xf7\x71\x67\x18\x41\x94\x62\xdc\x13\x84\x2b\xa5\xcc\
-\xc3\xb6\x9e\xc8\xa6\x82\x80\x73\xc8\x46\x18\xe3\x4a\xfa\x42\x78\
-\xa3\x7e\x6d\x84\x66\x06\xdc\x5a\x8b\x00\x48\x71\x61\x0c\x31\xd2\
-\x13\x21\x91\xa1\x0e\xb7\x15\xe8\x8b\x54\x49\x3b\x45\x40\xf1\x83\
-\xd2\xd2\xd3\xa7\x2a\x10\xab\x6f\x0e\xbd\xf2\x53\xa5\x42\x22\xa0\
-\x4f\xb8\xbb\x8c\xcb\x5b\xd3\x97\x9e\x14\xc4\x30\x30\xf5\xc6\x52\
-\x7f\xdf\x02\xe9\xf6\xc4\xa3\x1f\x79\x92\x5e\xad\x8f\xbf\x07\x1c\
-\xf9\xd5\xf2\x11\xc2\xbe\x27\x3a\xf9\xe7\x34\x24\x93\xc0\xc1\x13\
-\x01\x11\x81\x0a\x5e\x3a\x0d\x61\x14\xd1\xa1\x27\x41\x7b\xdc\xff\
-\x0b\x1a\xff\x77\xe0\xc7\x8e\x3f\xd7\x99\x52\x83\xce\x06\x9d\x0d\
-\x3a\x7b\x6e\x9d\xc1\xa0\x4c\x19\xe5\x8d\x84\x26\x42\x85\x6a\x10\
-\xda\x33\x5f\xad\x41\x68\x2f\x53\x68\x1a\xe6\xf7\x75\x30\x08\x6d\
-\x10\xda\x20\xb4\xdf\x0d\xbc\xe1\xb8\x33\xfa\xc5\xb8\xfb\x97\xbc\
-\xb7\xf3\x0b\x46\x33\xee\x37\
+\x00\x00\x02\xd7\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x3c\x00\x00\x00\x3c\x08\x06\x00\x00\x00\x3a\xfc\xd9\x72\
+\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\
+\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\
+\x79\x71\xc9\x65\x3c\x00\x00\x02\x79\x49\x44\x41\x54\x78\xda\xec\
+\x9a\xd1\x6d\xc2\x30\x10\x40\x0d\x62\x80\x6c\x40\x3a\x01\xde\xa0\
+\x19\x21\x23\xa4\x13\xc0\x06\xf5\x06\xa8\x13\xa4\x1b\xa4\x1b\x44\
+\x4c\x10\x98\x20\x6c\x10\x36\x68\x8d\xe4\x48\xc8\x75\x82\xef\xb0\
+\x0f\x87\xf8\xa4\xfb\x31\x89\xc3\xf3\x9d\xed\xbb\xb3\x17\x8c\x56\
+\xb8\xd4\x5c\xea\x46\x6a\xa2\xda\x2e\x52\x4f\x52\x7f\xa4\x1e\xd9\
+\x8b\xc8\x15\xb2\x91\xfa\x7b\x47\x5b\xf5\xec\x64\xe5\x6a\xc5\xca\
+\x02\x54\xd7\xea\xc6\x03\x26\x05\xdb\x20\x60\x7b\x6d\xd4\x14\x98\
+\x05\x6c\xaf\xdd\x54\x2c\xed\x02\xf6\xd6\xd2\x41\x8b\x70\x08\xdb\
+\xab\x08\x15\x36\xf5\x00\xdb\x6b\x1a\x22\x70\xe9\x11\xb8\x9e\x93\
+\x75\x9d\x59\x79\xe9\x10\x78\x4b\x30\xa8\xdb\x90\x2c\xdc\x12\x58\
+\xb8\x0b\x05\x96\x13\xc0\xf6\xca\x43\x70\xe9\x8c\x38\x2e\x47\xcb\
+\xea\x0e\x04\x57\x19\xcc\x59\xe9\x90\x6c\x08\x81\x37\x3e\x81\x3f\
+\xb5\xb6\x2b\xfc\x97\xd4\x6f\xc3\x0a\x4d\xb9\x1b\xe8\x61\x6c\xae\
+\xda\xfb\xb4\x93\xab\xb4\xf3\x0d\x02\x3c\x34\x57\xd3\x27\xbb\x34\
+\x1f\xd8\xff\x4d\xf1\x3c\x68\x0e\xbf\x0f\xb4\x87\x96\xa4\x5f\x7c\
+\x2f\x5a\x17\x36\x61\x59\xb2\x99\xc9\x12\x61\xc9\xf4\x55\x81\x4f\
+\x13\x01\x4e\x7c\xbb\xf4\xfa\xc9\x0b\xd9\xd1\x62\xd5\x1e\xfc\x4f\
+\x4b\x40\xc7\x63\x1f\x38\x3f\x71\x55\xe6\x90\x29\x89\x05\x4e\x2c\
+\xdd\xdf\x87\x1c\x2c\x23\xaf\x03\xa6\xf3\x6e\x20\x80\xcf\x0d\x81\
+\x07\x55\xf2\x90\x21\xff\xa3\x95\x0c\xd5\x94\x4b\xc0\xe0\xf8\x4c\
+\x0f\xf3\x91\x67\x51\xd5\xce\x02\xd0\x61\x49\x00\x5c\x5a\x7e\x13\
+\x5d\xe9\x4c\x98\x7d\x25\x91\x13\xbb\xf3\x58\x49\x69\xf7\xc8\x22\
+\x51\x31\xfb\x22\x79\x4d\x58\xc4\x2b\x7d\xd5\xbe\x32\x80\x95\xb3\
+\x00\xac\x5b\xfa\xae\x57\x71\x82\xb9\x5c\x01\x3c\xc9\x49\xaa\x3a\
+\xb6\x1a\x36\x9a\x6b\x27\x8e\x0b\x7a\xad\xd6\xbf\x60\x44\xb5\xeb\
+\x1a\xe0\x46\xdc\xd1\x36\xd5\x69\x1e\x94\xfb\x2c\xf0\x41\x2b\x93\
+\xae\xa1\x75\xd8\x7b\xfd\xed\x7d\x84\x75\x02\x01\x8d\x39\x49\x6c\
+\x80\xb0\x2d\xf3\x78\xac\x5a\x33\xd8\xe9\x7d\xa2\x06\xaa\xb3\xb4\
+\xaa\xd0\xde\x2f\x98\xe7\x5a\xb5\x4d\x30\xd2\x58\x2c\x34\x99\xe1\
+\xbd\x42\x0d\x48\xab\x3d\x5b\xa9\xdf\xf4\x81\xb2\xb9\x2e\x51\x50\
+\x55\x0e\x3b\xcb\xed\x04\x13\x04\xec\x2c\xfb\x17\x94\x95\x06\xc8\
+\xa2\x54\x1b\x2c\x68\xea\x6f\x0f\xe8\x13\x15\x60\x2c\x1e\x84\x4e\
+\x95\x15\x21\x73\xe8\x6c\x28\x18\x40\x83\x85\x0f\xf6\xff\x30\x80\
+\xb4\xa6\x84\xb9\x9a\x84\xdd\xaa\x82\xb9\xc7\xb5\x63\x7e\x73\xe2\
+\x9a\x05\x78\xa3\x27\xf1\x10\x4b\x4f\xe2\x76\x5e\xaa\xc0\x1f\xb1\
+\x78\x43\xb5\xe5\xb8\xb6\x78\xa1\xe0\x5b\x4b\x6b\x0a\x36\xa1\x1b\
+\x78\xd8\xbc\x9a\x6c\x5f\x8d\x67\x4b\x11\x38\x02\x47\xe0\x08\x1c\
+\x81\x03\x92\x15\xf2\x3d\x8e\x88\x6b\x6d\x82\x89\x35\x22\x73\x32\
+\x65\x5f\xe4\x65\x1e\x4a\x15\xd1\xa5\x23\x70\x04\x9e\x8f\xfc\x09\
+\x30\x00\xa0\x1c\x74\x67\x26\xea\x15\x76\x00\x00\x00\x00\x49\x45\
+\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x04\x06\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
+\x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\
+\x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\
+\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\
+\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\
+\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\
+\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\
+\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\
+\x31\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x77\x69\
+\x64\x74\x68\x3d\x22\x31\x30\x30\x25\x22\x20\x68\x65\x69\x67\x68\
+\x74\x3d\x22\x31\x30\x30\x25\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x36\x30\x20\x36\x30\x22\x20\x76\x65\x72\
+\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\
+\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x20\x73\x74\
+\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\
+\x76\x65\x6e\x6f\x64\x64\x3b\x63\x6c\x69\x70\x2d\x72\x75\x6c\x65\
+\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\
+\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\
+\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\
+\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\
+\x6c\x69\x6d\x69\x74\x3a\x31\x2e\x35\x3b\x22\x3e\x0a\x20\x20\x20\
+\x20\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\
+\x61\x74\x72\x69\x78\x28\x31\x2c\x30\x2c\x30\x2c\x31\x2c\x2d\x32\
+\x38\x30\x2c\x30\x29\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\
+\x3c\x67\x20\x69\x64\x3d\x22\x68\x65\x61\x72\x74\x22\x20\x74\x72\
+\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\
+\x31\x2c\x30\x2c\x30\x2c\x31\x2c\x2d\x31\x34\x31\x31\x2c\x30\x29\
+\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\
+\x72\x65\x63\x74\x20\x78\x3d\x22\x31\x36\x39\x31\x22\x20\x79\x3d\
+\x22\x30\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x30\x22\x20\x68\
+\x65\x69\x67\x68\x74\x3d\x22\x36\x30\x22\x20\x73\x74\x79\x6c\x65\
+\x3d\x22\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x22\x2f\x3e\x0a\
+\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x67\x20\x74\
+\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\
+\x28\x30\x2e\x39\x36\x30\x32\x34\x31\x2c\x30\x2c\x30\x2c\x30\x2e\
+\x39\x36\x30\x32\x34\x31\x2c\x31\x34\x33\x31\x2e\x30\x31\x2c\x33\
+\x2e\x31\x34\x37\x30\x31\x29\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\
+\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x70\x61\x74\x68\x20\
+\x64\x3d\x22\x4d\x33\x30\x32\x2c\x31\x30\x2e\x38\x43\x33\x30\x37\
+\x2e\x36\x38\x34\x2c\x30\x20\x33\x31\x39\x2e\x30\x35\x33\x2c\x30\
+\x20\x33\x32\x34\x2e\x37\x33\x37\x2c\x35\x2e\x34\x43\x33\x33\x30\
+\x2e\x34\x32\x31\x2c\x31\x30\x2e\x38\x20\x33\x33\x30\x2e\x34\x32\
+\x31\x2c\x32\x31\x2e\x36\x20\x33\x32\x34\x2e\x37\x33\x37\x2c\x33\
+\x32\x2e\x34\x43\x33\x32\x30\x2e\x37\x35\x38\x2c\x34\x30\x2e\x35\
+\x20\x33\x31\x30\x2e\x35\x32\x36\x2c\x34\x38\x2e\x36\x20\x33\x30\
+\x32\x2c\x35\x34\x43\x32\x39\x33\x2e\x34\x37\x34\x2c\x34\x38\x2e\
+\x36\x20\x32\x38\x33\x2e\x32\x34\x32\x2c\x34\x30\x2e\x35\x20\x32\
+\x37\x39\x2e\x32\x36\x33\x2c\x33\x32\x2e\x34\x43\x32\x37\x33\x2e\
+\x35\x37\x39\x2c\x32\x31\x2e\x36\x20\x32\x37\x33\x2e\x35\x37\x39\
+\x2c\x31\x30\x2e\x38\x20\x32\x37\x39\x2e\x32\x36\x33\x2c\x35\x2e\
+\x34\x43\x32\x38\x34\x2e\x39\x34\x37\x2c\x30\x20\x32\x39\x36\x2e\
+\x33\x31\x36\x2c\x30\x20\x33\x30\x32\x2c\x31\x30\x2e\x38\x5a\x22\
+\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\
+\x65\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x62\x6c\x61\x63\x6b\x3b\x73\
+\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x32\x2e\x38\x32\
+\x70\x78\x3b\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\
+\x20\x20\x20\x3c\x2f\x67\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\
+\x3c\x2f\x67\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x67\x3e\x0a\x3c\x2f\
+\x73\x76\x67\x3e\x0a\
 "
 
 qt_resource_name = b"\
@@ -528,22 +528,18 @@
 \x00\x6f\xa6\x53\
 \x00\x69\
 \x00\x63\x00\x6f\x00\x6e\x00\x73\
-\x00\x10\
-\x08\x12\xae\xa7\
-\x00\x6d\
-\x00\x65\x00\x64\x00\x69\x00\x61\x00\x2d\x00\x72\x00\x65\x00\x63\x00\x6f\x00\x72\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\
-\x00\x08\
-\x0b\x9e\x57\x87\
-\x00\x64\
-\x00\x65\x00\x63\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x09\
-\x08\x97\x87\xa7\
-\x00\x68\
-\x00\x65\x00\x61\x00\x72\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x08\
 \x05\x1c\x5a\x47\
 \x00\x61\
 \x00\x6e\x00\x6b\x00\x69\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x08\
+\x0b\x9e\x57\x87\
+\x00\x64\
+\x00\x65\x00\x63\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0e\
+\x04\x44\x35\x07\
+\x00\x63\
+\x00\x6f\x00\x6c\x00\x6c\x00\x65\x00\x63\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x07\
 \x0a\x7a\x5a\x27\
 \x00\x74\
@@ -552,22 +548,26 @@
 \x0e\xcd\x03\x47\
 \x00\x6e\
 
\x00\x6f\x00\x74\x00\x65\x00\x74\x00\x79\x00\x70\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0e\
-\x04\x44\x35\x07\
-\x00\x63\
-\x00\x6f\x00\x6c\x00\x6c\x00\x65\x00\x63\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x10\
+\x08\x12\xae\xa7\
+\x00\x6d\
+\x00\x65\x00\x64\x00\x69\x00\x61\x00\x2d\x00\x72\x00\x65\x00\x63\x00\x6f\x00\x72\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x09\
+\x08\x97\x87\xa7\
+\x00\x68\
+\x00\x65\x00\x61\x00\x72\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
 "
 
 qt_resource_struct_v1 = b"\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\
-\x00\x00\x00\xac\x00\x01\x00\x00\x00\x01\x00\x00\x1c\x9b\
-\x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x52\
+\x00\x00\x00\x3c\x00\x01\x00\x00\x00\x01\x00\x00\x0c\x29\
 \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x08\x48\
-\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x13\x0e\
-\x00\x00\x00\x36\x00\x00\x00\x00\x00\x01\x00\x00\x02\xdb\
-\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x17\x42\
+\x00\x00\x00\x90\x00\x00\x00\x00\x00\x01\x00\x00\x18\x22\
+\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x01\x00\x00\x1a\xfd\
+\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x95\
+\x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x06\xbc\
+\x00\x00\x00\x72\x00\x00\x00\x00\x00\x01\x00\x00\x12\xc9\
 "
 
 qt_resource_struct_v2 = b"\
@@ -575,19 +575,19 @@
 \x00\x00\x00\x00\x00\x00\x00\x00\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\
 \x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\xac\x00\x01\x00\x00\x00\x01\x00\x00\x1c\x9b\
+\x00\x00\x00\x3c\x00\x01\x00\x00\x00\x01\x00\x00\x0c\x29\
 \x00\x00\x01\x5f\xb2\xe6\x4b\xb0\
-\x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x52\
-\x00\x00\x01\x37\x58\x6b\x1d\xa0\
 \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x37\x58\x6b\x1d\xa0\
+\x00\x00\x00\x90\x00\x00\x00\x00\x00\x01\x00\x00\x18\x22\
 \x00\x00\x01\x5f\xb2\xe6\x4b\xb0\
-\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x08\x48\
+\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x01\x00\x00\x1a\xfd\
 \x00\x00\x01\x5f\xb2\xe6\x4b\xb0\
-\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x13\x0e\
+\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x95\
 \x00\x00\x01\x5f\xb2\xe6\x4b\xb0\
-\x00\x00\x00\x36\x00\x00\x00\x00\x00\x01\x00\x00\x02\xdb\
+\x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x06\xbc\
 \x00\x00\x01\x5f\xb2\xe6\x4b\xb0\
-\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x17\x42\
+\x00\x00\x00\x72\x00\x00\x00\x00\x00\x01\x00\x00\x12\xc9\
 \x00\x00\x01\x5f\xb2\xe6\x4b\xb0\
 "
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/forms/profiles.py 
new/anki-2.1.13/aqt/forms/profiles.py
--- old/anki-2.1.12/aqt/forms/profiles.py       2019-03-04 08:53:16.000000000 
+0100
+++ new/anki-2.1.13/aqt/forms/profiles.py       2019-05-17 07:18:55.000000000 
+0200
@@ -13,6 +13,9 @@
     def setupUi(self, MainWindow):
         MainWindow.setObjectName("MainWindow")
         MainWindow.resize(423, 356)
+        icon = QtGui.QIcon()
+        icon.addPixmap(QtGui.QPixmap(":/icons/anki.png"), QtGui.QIcon.Normal, 
QtGui.QIcon.Off)
+        MainWindow.setWindowIcon(icon)
         self.centralwidget = QtWidgets.QWidget(MainWindow)
         self.centralwidget.setObjectName("centralwidget")
         self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget)
@@ -74,3 +77,4 @@
         self.quit.setText(_("Quit"))
         self.openBackup.setText(_("Open Backup..."))
 
+from . import icons_rc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/importing.py 
new/anki-2.1.13/aqt/importing.py
--- old/anki-2.1.12/aqt/importing.py    2019-03-09 23:22:42.000000000 +0100
+++ new/anki-2.1.13/aqt/importing.py    2019-04-29 08:47:12.000000000 +0200
@@ -384,10 +384,8 @@
 the file you're importing. Are you sure?"""), msgfunc=QMessageBox.warning,
                                               defaultno=True):
         return False
-    # schedule replacement; don't do it immediately as we may have been
-    # called as part of the startup routine
-    mw.progress.timer(
-        100, lambda mw=mw, f=importer.file: replaceWithApkg(mw, f, 
mw.restoringBackup), False)
+
+    replaceWithApkg(mw, importer.file, mw.restoringBackup)
 
 def replaceWithApkg(mw, file, backup):
     mw.unloadCollection(lambda: _replaceWithApkg(mw, file, backup))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/main.py new/anki-2.1.13/aqt/main.py
--- old/anki-2.1.12/aqt/main.py 2019-04-21 10:55:29.000000000 +0200
+++ new/anki-2.1.13/aqt/main.py 2019-04-29 08:38:17.000000000 +0200
@@ -189,9 +189,8 @@
         return not checkInvalidFilename(str)
 
     def onAddProfile(self):
-        name = getOnlyText(_("Name:"))
+        name = getOnlyText(_("Name:")).strip()
         if name:
-            name = name.strip()
             if name in self.pm.profiles():
                 return showWarning(_("Name exists."))
             if not self.profileNameOk(name):
@@ -201,7 +200,7 @@
             self.refreshProfilesList()
 
     def onRenameProfile(self):
-        name = getOnlyText(_("New name:"), default=self.pm.name)
+        name = getOnlyText(_("New name:"), default=self.pm.name).strip()
         if not name:
             return
         if name == self.pm.name:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/mediasrv.py 
new/anki-2.1.13/aqt/mediasrv.py
--- old/anki-2.1.12/aqt/mediasrv.py     2019-03-09 23:22:42.000000000 +0100
+++ new/anki-2.1.13/aqt/mediasrv.py     2019-04-29 06:39:10.000000000 +0200
@@ -47,6 +47,7 @@
 
     _port = None
     _ready = threading.Event()
+    daemon = True
 
     def __init__(self, mw, *args, **kwargs):
         super().__init__(*args, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/sync.py new/anki-2.1.13/aqt/sync.py
--- old/anki-2.1.12/aqt/sync.py 2019-04-21 10:41:00.000000000 +0200
+++ new/anki-2.1.13/aqt/sync.py 2019-04-29 10:25:10.000000000 +0200
@@ -400,7 +400,8 @@
         elif ret == "success":
             self.fireEvent("success")
         elif ret == "serverAbort":
-            pass
+            self.syncMsg = self.client.syncMsg
+            return
         else:
             self.fireEvent("error", "Unknown sync return code.")
         self.syncMsg = self.client.syncMsg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/aqt/webview.py 
new/anki-2.1.13/aqt/webview.py
--- old/anki-2.1.12/aqt/webview.py      2019-04-21 11:11:27.000000000 +0200
+++ new/anki-2.1.13/aqt/webview.py      2019-05-17 07:15:43.000000000 +0200
@@ -63,8 +63,10 @@
     def javaScriptConsoleMessage(self, lvl, msg, line, srcID):
         # not translated because console usually not visible,
         # and may only accept ascii text
-        sys.stdout.write("JS error on line %(a)d: %(b)s" %
-             dict(a=line, b=msg+"\n"))
+        buf = "JS error on line %(a)d: %(b)s" % dict(a=line, b=msg+"\n")
+        # ensure we don't try to write characters the terminal can't handle
+        buf = buf.encode(sys.stdout.encoding, 
"backslashreplace").decode(sys.stdout.encoding)
+        sys.stdout.write(buf)
 
     def acceptNavigationRequest(self, url, navType, isMainFrame):
         if not isMainFrame:
@@ -170,6 +172,9 @@
         pass
 
     def setHtml(self, html):
+        # discard any previous pending actions
+        self._pendingActions = []
+        self._domDone = True
         self._queueAction("setHtml", html)
 
     def _setHtml(self, html):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/designer/addcards.ui 
new/anki-2.1.13/designer/addcards.ui
--- old/anki-2.1.12/designer/addcards.ui        2019-03-04 08:53:12.000000000 
+0100
+++ new/anki-2.1.13/designer/addcards.ui        2019-05-17 07:20:26.000000000 
+0200
@@ -13,6 +13,10 @@
   <property name="windowTitle">
    <string>Add</string>
   </property>
+  <property name="windowIcon">
+   <iconset resource="icons.qrc">
+    <normaloff>:/icons/anki.png</normaloff>:/icons/anki.png</iconset>
+  </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <property name="spacing">
     <number>3</number>
@@ -87,7 +91,9 @@
  <tabstops>
   <tabstop>buttonBox</tabstop>
  </tabstops>
- <resources/>
+ <resources>
+  <include location="icons.qrc"/>
+ </resources>
  <connections>
   <connection>
    <sender>buttonBox</sender>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/designer/browser.ui 
new/anki-2.1.13/designer/browser.ui
--- old/anki-2.1.12/designer/browser.ui 2019-03-11 04:33:54.000000000 +0100
+++ new/anki-2.1.13/designer/browser.ui 2019-05-17 07:26:12.000000000 +0200
@@ -16,6 +16,10 @@
     <height>400</height>
    </size>
   </property>
+  <property name="windowIcon">
+   <iconset resource="icons.qrc">
+    <normaloff>:/icons/anki.png</normaloff>:/icons/anki.png</iconset>
+  </property>
   <widget class="QWidget" name="centralwidget">
    <layout class="QVBoxLayout" name="verticalLayout_3">
     <property name="spacing">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/designer/editcurrent.ui 
new/anki-2.1.13/designer/editcurrent.ui
--- old/anki-2.1.12/designer/editcurrent.ui     2019-03-04 08:53:12.000000000 
+0100
+++ new/anki-2.1.13/designer/editcurrent.ui     2019-05-17 07:20:55.000000000 
+0200
@@ -13,6 +13,10 @@
   <property name="windowTitle">
    <string>Dialog</string>
   </property>
+  <property name="windowIcon">
+   <iconset resource="icons.qrc">
+    <normaloff>:/icons/anki.png</normaloff>:/icons/anki.png</iconset>
+  </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <property name="spacing">
     <number>3</number>
@@ -35,7 +39,9 @@
    </item>
   </layout>
  </widget>
- <resources/>
+ <resources>
+  <include location="icons.qrc"/>
+ </resources>
  <connections>
   <connection>
    <sender>buttonBox</sender>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/designer/profiles.ui 
new/anki-2.1.13/designer/profiles.ui
--- old/anki-2.1.12/designer/profiles.ui        2019-03-04 08:53:12.000000000 
+0100
+++ new/anki-2.1.13/designer/profiles.ui        2019-05-17 07:18:44.000000000 
+0200
@@ -13,6 +13,10 @@
   <property name="windowTitle">
    <string>Profiles</string>
   </property>
+  <property name="windowIcon">
+   <iconset resource="icons.qrc">
+    <normaloff>:/icons/anki.png</normaloff>:/icons/anki.png</iconset>
+  </property>
   <widget class="QWidget" name="centralwidget">
    <layout class="QVBoxLayout" name="verticalLayout_3">
     <item>
@@ -109,6 +113,8 @@
    </property>
   </widget>
  </widget>
- <resources/>
+ <resources>
+  <include location="icons.qrc"/>
+ </resources>
  <connections/>
 </ui>
Binary files old/anki-2.1.12/locale/af/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/af/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/ar/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/ar/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/az/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/az/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/bg/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/bg/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/bn/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/bn/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/ca/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/ca/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/ca@valencia/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/ca@valencia/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/cs/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/cs/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/da/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/da/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/de/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/de/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/el/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/el/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/en_GB/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/en_GB/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/eo/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/eo/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/es/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/es/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/et/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/et/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/eu/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/eu/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/fa/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/fa/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/fi/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/fi/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/fr/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/fr/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/fr_CA/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/fr_CA/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/ga/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/ga/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/gl/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/gl/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/gu/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/gu/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/he/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/he/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/hr/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/hr/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/hu/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/hu/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/hy/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/hy/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/ia/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/ia/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/is/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/is/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/it/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/it/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/ja/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/ja/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/jbo/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/jbo/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/kab/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/kab/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/km/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/km/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/ko/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/ko/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/ku/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/ku/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/la/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/la/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/lt/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/lt/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/lv/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/lv/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/mn/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/mn/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/mr/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/mr/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/ms/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/ms/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/nb/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/nb/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/nl/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/nl/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/oc/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/oc/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/pl/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/pl/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/pt/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/pt/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/pt_BR/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/pt_BR/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/ro/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/ro/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/ru/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/ru/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/sco/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/sco/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/sk/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/sk/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/sl/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/sl/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/sr/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/sr/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/sv/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/sv/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/szl/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/szl/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/th/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/th/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/tlh/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/tlh/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/tr/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/tr/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/uk/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/uk/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/ur/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/ur/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/vi/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/vi/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/wo/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/wo/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/zh_CN/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/zh_CN/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/zh_HK/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/zh_HK/LC_MESSAGES/anki.mo differ
Binary files old/anki-2.1.12/locale/zh_TW/LC_MESSAGES/anki.mo and 
new/anki-2.1.13/locale/zh_TW/LC_MESSAGES/anki.mo differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/requirements.txt 
new/anki-2.1.13/requirements.txt
--- old/anki-2.1.12/requirements.txt    2019-03-09 23:22:42.000000000 +0100
+++ new/anki-2.1.13/requirements.txt    2019-04-29 04:39:48.000000000 +0200
@@ -4,5 +4,6 @@
 requests
 decorator
 markdown
+jsonschema
 psutil; sys_platform == "win32"
 distro; sys_platform != "win32" and sys_platform != "darwin"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/tests/test_addons.py 
new/anki-2.1.13/tests/test_addons.py
--- old/anki-2.1.12/tests/test_addons.py        1970-01-01 01:00:00.000000000 
+0100
+++ new/anki-2.1.13/tests/test_addons.py        2019-04-29 04:35:05.000000000 
+0200
@@ -0,0 +1,83 @@
+import os.path
+from nose.tools import assert_equals
+from mock import MagicMock
+from tempfile import TemporaryDirectory
+from zipfile import ZipFile
+
+from aqt.addons import AddonManager
+
+
+def test_readMinimalManifest():
+    assertReadManifest(
+        '{"package": "yes", "name": "no"}',
+        {"package": "yes", "name": "no"}
+    )
+
+
+def test_readExtraKeys():
+    assertReadManifest(
+        '{"package": "a", "name": "b", "mod": 3, "conflicts": ["d", "e"]}',
+        {"package": "a", "name": "b", "mod": 3, "conflicts": ["d", "e"]}
+    )
+
+
+def test_invalidManifest():
+    assertReadManifest(
+        '{"one": 1}',
+        {}
+    )
+
+
+def test_mustHaveName():
+    assertReadManifest(
+        '{"package": "something"}',
+        {}
+    )
+
+
+def test_mustHavePackage():
+    assertReadManifest(
+        '{"name": "something"}',
+        {}
+    )
+
+
+def test_invalidJson():
+    assertReadManifest(
+        'this is not a JSON dictionary',
+        {}
+    )
+
+
+def test_missingManifest():
+    assertReadManifest(
+        '{"package": "what", "name": "ever"}',
+        {},
+        nameInZip="not-manifest.bin"
+    )
+
+
+def test_ignoreExtraKeys():
+    assertReadManifest(
+        '{"package": "a", "name": "b", "game": "c"}',
+        {"package": "a", "name": "b"}
+    )
+
+
+def test_conflictsMustBeStrings():
+    assertReadManifest(
+        '{"package": "a", "name": "b", "conflicts": ["c", 4, {"d": "e"}]}',
+        {}
+    )
+
+
+def assertReadManifest(contents, expectedManifest, nameInZip="manifest.json"):
+    with TemporaryDirectory() as td:
+        zfn = os.path.join(td, "addon.zip")
+        with ZipFile(zfn, "w") as zfile:
+            zfile.writestr(nameInZip, contents)
+
+        adm = AddonManager(MagicMock())
+
+        with ZipFile(zfn, "r") as zfile:
+            assert_equals(adm.readManifestFile(zfile), expectedManifest)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/anki-2.1.12/web/editor.js 
new/anki-2.1.13/web/editor.js
--- old/anki-2.1.12/web/editor.js       2019-04-16 10:50:33.000000000 +0200
+++ new/anki-2.1.13/web/editor.js       2019-05-17 05:38:55.000000000 +0200
@@ -342,7 +342,13 @@
 
 var pasteHTML = function (html, internal, extendedMode) {
     html = filterHTML(html, internal, extendedMode);
-    setFormat("inserthtml", html);
+    if (html !== "") {
+        // remove trailing <br> in empty field
+        if (currentField && currentField.innerHTML === "<br>") {
+            currentField.innerHTML = "";
+        }
+        setFormat("inserthtml", html);
+    }
 };
 
 var filterHTML = function (html, internal, extendedMode) {


Reply via email to