openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
June 2019
- 1 participants
- 2296 discussions
Hello community,
here is the log from the commit of package tryton for openSUSE:Factory checked in at 2019-06-01 09:48:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tryton (Old)
and /work/SRC/openSUSE:Factory/.tryton.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tryton"
Sat Jun 1 09:48:01 2019 rev:29 rq:705908 version:4.6.19
Changes:
--------
--- /work/SRC/openSUSE:Factory/tryton/tryton.changes 2019-04-11 12:15:36.952884416 +0200
+++ /work/SRC/openSUSE:Factory/.tryton.new.5148/tryton.changes 2019-06-01 09:48:02.763354064 +0200
@@ -1,0 +2,5 @@
+Fri May 17 10:31:24 UTC 2019 - Axel Braun <axel.braun(a)gmx.de>
+
+- Version 4.6.19 - Bugfix Release
+
+-------------------------------------------------------------------
Old:
----
tryton-4.6.18.tar.gz
New:
----
tryton-4.6.19.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tryton.spec ++++++
--- /var/tmp/diff_new_pack.z7TFt9/_old 2019-06-01 09:48:03.503353812 +0200
+++ /var/tmp/diff_new_pack.z7TFt9/_new 2019-06-01 09:48:03.507353810 +0200
@@ -19,7 +19,7 @@
%define majorver 4.6
Name: tryton
-Version: %{majorver}.18
+Version: %{majorver}.19
Release: 0
Summary: The client of the Tryton application platform
License: GPL-3.0-only
++++++ tryton-4.6.18.tar.gz -> tryton-4.6.19.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.6.18/.hgtags new/tryton-4.6.19/.hgtags
--- old/tryton-4.6.18/.hgtags 2019-04-02 21:38:19.000000000 +0200
+++ new/tryton-4.6.19/.hgtags 2019-05-16 17:42:55.000000000 +0200
@@ -35,3 +35,4 @@
dd6191f8ea5e6d2205d49bae23f5417c7e4dd347 4.6.16
fa719654625129392702265195210c470f0cc2fc 4.6.17
dd7b6493809d64fa3fdafba7ea3a250eb0a8f724 4.6.18
+15d54cd5d0a7ddef4002e627903a90c6ab942149 4.6.19
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.6.18/CHANGELOG new/tryton-4.6.19/CHANGELOG
--- old/tryton-4.6.18/CHANGELOG 2019-04-02 21:38:19.000000000 +0200
+++ new/tryton-4.6.19/CHANGELOG 2019-05-16 17:42:55.000000000 +0200
@@ -1,3 +1,6 @@
+Version 4.6.19 - 2019-05-16
+* Bug fixes (see mercurial logs for details)
+
Version 4.6.18 - 2019-04-02
* Bug fixes (see mercurial logs for details)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.6.18/PKG-INFO new/tryton-4.6.19/PKG-INFO
--- old/tryton-4.6.18/PKG-INFO 2019-04-02 21:38:20.000000000 +0200
+++ new/tryton-4.6.19/PKG-INFO 2019-05-16 17:42:57.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: tryton
-Version: 4.6.18
+Version: 4.6.19
Summary: Tryton client
Home-page: http://www.tryton.org/
Author: Tryton
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.6.18/tryton/__init__.py new/tryton-4.6.19/tryton/__init__.py
--- old/tryton-4.6.18/tryton/__init__.py 2019-03-15 19:00:47.000000000 +0100
+++ new/tryton-4.6.19/tryton/__init__.py 2019-04-02 21:38:36.000000000 +0200
@@ -1,3 +1,3 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-__version__ = "4.6.18"
+__version__ = "4.6.19"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.6.18/tryton/common/datetime_.py new/tryton-4.6.19/tryton/common/datetime_.py
--- old/tryton-4.6.18/tryton/common/datetime_.py 2018-08-20 22:55:19.000000000 +0200
+++ new/tryton-4.6.19/tryton/common/datetime_.py 2019-05-04 11:09:42.000000000 +0200
@@ -21,9 +21,19 @@
def date_parse(text, format_='%x'):
+ try:
+ return datetime.datetime.strptime(text, format_)
+ except ValueError:
+ pass
formatted_date = datetime.date(1988, 7, 16).strftime(format_)
- dayfirst = formatted_date.index('16') == 0
- monthfirst = formatted_date.index('7') <= 1
+ try:
+ dayfirst = formatted_date.index('16') == 0
+ except ValueError:
+ dayfirst = False
+ try:
+ monthfirst = formatted_date.index('7') <= 1
+ except ValueError:
+ monthfirst = False
yearfirst = not dayfirst and not monthfirst
return parse(text, dayfirst=dayfirst, yearfirst=yearfirst, ignoretz=True)
@@ -417,6 +427,10 @@
self.__time.connect('time-changed',
lambda e: self.emit('datetime-changed'))
+ def parse(self):
+ self.__date.parse()
+ self.__time.parse()
+
def do_set_property(self, prop, value):
if prop.name == 'value':
self.__date.props.value = value
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.6.18/tryton/common/selection.py new/tryton-4.6.19/tryton/common/selection.py
--- old/tryton-4.6.18/tryton/common/selection.py 2019-03-06 23:59:35.000000000 +0100
+++ new/tryton-4.6.19/tryton/common/selection.py 2019-05-04 11:09:42.000000000 +0200
@@ -94,7 +94,7 @@
def _model_evaluator(allowed_models):
def test(value):
- return value[0] in allowed_models
+ return value[0] in allowed_models or not allowed_models
return test
if field.attrs['type'] == 'reference':
Binary files old/tryton-4.6.18/tryton/data/locale/bg/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/bg/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/ca/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/ca/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/cs/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/cs/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/de/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/de/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/es/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/es/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/es_419/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/es_419/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/fr/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/fr/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/hu_HU/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/hu_HU/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/it_IT/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/it_IT/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/lo/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/lo/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/lt/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/lt/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/nl/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/nl/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/pl/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/pl/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/pt_BR/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/pt_BR/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/ru/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/ru/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/sl/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/sl/LC_MESSAGES/tryton.mo differ
Binary files old/tryton-4.6.18/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.mo and new/tryton-4.6.19/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.mo differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.6.18/tryton/gui/window/view_form/view/form_gtk/calendar.py new/tryton-4.6.19/tryton/gui/window/view_form/view/form_gtk/calendar.py
--- old/tryton-4.6.18/tryton/gui/window/view_form/view/form_gtk/calendar.py 2018-08-20 22:55:19.000000000 +0200
+++ new/tryton-4.6.19/tryton/gui/window/view_form/view/form_gtk/calendar.py 2019-05-04 11:09:42.000000000 +0200
@@ -57,7 +57,7 @@
def modified(self):
if self.record and self.field:
field_value = self.cast(self.field.get_client(self.record))
- return field_value != self.entry.props.value
+ return field_value != self.get_value()
return False
def sig_key_press(self, widget, event):
@@ -67,6 +67,7 @@
field.set_client(record, self.get_value())
def get_value(self):
+ self.entry.parse()
return self.entry.props.value
def set_format(self, record, field):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.6.18/tryton/jsonrpc.py new/tryton-4.6.19/tryton/jsonrpc.py
--- old/tryton-4.6.18/tryton/jsonrpc.py 2018-08-20 22:55:19.000000000 +0200
+++ new/tryton-4.6.19/tryton/jsonrpc.py 2019-05-04 11:09:42.000000000 +0200
@@ -16,6 +16,7 @@
from functools import partial
from contextlib import contextmanager
import string
+from urllib import quote
__all__ = ["ResponseError", "Fault", "ProtocolError", "Transport",
"ServerProxy", "ServerPool"]
@@ -249,6 +250,7 @@
fingerprints=None, ca_certs=None, session=None):
self.__host = '%s:%s' % (host, port)
if database:
+ database = quote(database)
self.__handler = '/%s/' % database
else:
self.__handler = '/'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.6.18/tryton.egg-info/PKG-INFO new/tryton-4.6.19/tryton.egg-info/PKG-INFO
--- old/tryton-4.6.18/tryton.egg-info/PKG-INFO 2019-04-02 21:38:20.000000000 +0200
+++ new/tryton-4.6.19/tryton.egg-info/PKG-INFO 2019-05-16 17:42:56.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: tryton
-Version: 4.6.18
+Version: 4.6.19
Summary: Tryton client
Home-page: http://www.tryton.org/
Author: Tryton
1
0
Hello community,
here is the log from the commit of package proteus for openSUSE:Factory checked in at 2019-06-01 09:47:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/proteus (Old)
and /work/SRC/openSUSE:Factory/.proteus.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "proteus"
Sat Jun 1 09:47:57 2019 rev:10 rq:705906 version:4.6.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/proteus/proteus.changes 2019-01-21 10:49:26.900085626 +0100
+++ /work/SRC/openSUSE:Factory/.proteus.new.5148/proteus.changes 2019-06-01 09:48:00.107354971 +0200
@@ -1,0 +2,5 @@
+Fri May 17 10:31:40 UTC 2019 - Axel Braun <axel.braun(a)gmx.de>
+
+- Version 4.6.6 - Bugfix Release
+
+-------------------------------------------------------------------
Old:
----
proteus-4.6.5.tar.gz
New:
----
proteus-4.6.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ proteus.spec ++++++
--- /var/tmp/diff_new_pack.rgYDz2/_old 2019-06-01 09:48:00.615354798 +0200
+++ /var/tmp/diff_new_pack.rgYDz2/_new 2019-06-01 09:48:00.619354796 +0200
@@ -1,7 +1,7 @@
#
# spec file for package proteus
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2017-2018 Dr. Axel Braun
#
# All modifications and additions to the file contributed by third parties
@@ -19,7 +19,7 @@
%define majorver 4.6
Name: proteus
-Version: %{majorver}.5
+Version: %{majorver}.6
Release: 0
Summary: A library to access Tryton's modules like a client
License: GPL-3.0-or-later
++++++ proteus-4.6.5.tar.gz -> proteus-4.6.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/proteus-4.6.5/.hgtags new/proteus-4.6.6/.hgtags
--- old/proteus-4.6.5/.hgtags 2018-12-03 00:47:53.000000000 +0100
+++ new/proteus-4.6.6/.hgtags 2019-04-22 10:41:27.000000000 +0200
@@ -18,3 +18,4 @@
bf508cfe1024bfe98b86fb67fe90f89c568b9b02 4.6.3
1357255a797f53827a663cd4ea3d08a5448ab9df 4.6.4
4b75c46d9bf62a307b5c6e23a13e5500a6f1f24f 4.6.5
+8d23b72d421c4b63f59c547c127be62d561a0e31 4.6.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/proteus-4.6.5/CHANGELOG new/proteus-4.6.6/CHANGELOG
--- old/proteus-4.6.5/CHANGELOG 2018-12-03 00:47:53.000000000 +0100
+++ new/proteus-4.6.6/CHANGELOG 2019-04-22 10:41:26.000000000 +0200
@@ -1,3 +1,6 @@
+Version 4.6.6 - 2019-04-22
+* Bug fixes (see mercurial logs for details)
+
Version 4.6.5 - 2018-12-02
* Bug fixes (see mercurial logs for details)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/proteus-4.6.5/COPYRIGHT new/proteus-4.6.6/COPYRIGHT
--- old/proteus-4.6.5/COPYRIGHT 2018-12-03 00:47:52.000000000 +0100
+++ new/proteus-4.6.6/COPYRIGHT 2019-04-22 10:41:26.000000000 +0200
@@ -1,5 +1,5 @@
-Copyright (C) 2010-2018 Cédric Krier.
-Copyright (C) 2010-2018 B2CK SPRL.
+Copyright (C) 2010-2019 Cédric Krier.
+Copyright (C) 2010-2019 B2CK SPRL.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/proteus-4.6.5/PKG-INFO new/proteus-4.6.6/PKG-INFO
--- old/proteus-4.6.5/PKG-INFO 2018-12-03 00:47:54.000000000 +0100
+++ new/proteus-4.6.6/PKG-INFO 2019-04-22 10:41:27.000000000 +0200
@@ -1,13 +1,12 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: proteus
-Version: 4.6.5
+Version: 4.6.6
Summary: Library to access Tryton server as a client
Home-page: http://www.tryton.org/
Author: Tryton
Author-email: issue_tracker(a)tryton.org
License: LGPL-3
Download-URL: http://downloads.tryton.org/4.6/
-Description-Content-Type: UNKNOWN
Description: proteus
=======
@@ -181,3 +180,5 @@
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Office/Business
+Provides-Extra: cdecimal
+Provides-Extra: trytond
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/proteus-4.6.5/proteus/__init__.py new/proteus-4.6.6/proteus/__init__.py
--- old/proteus-4.6.5/proteus/__init__.py 2018-08-20 22:55:18.000000000 +0200
+++ new/proteus-4.6.6/proteus/__init__.py 2018-12-03 00:48:04.000000000 +0100
@@ -19,7 +19,7 @@
import proteus.config
-__version__ = "4.6.5"
+__version__ = "4.6.6"
__all__ = ['Model', 'Wizard', 'Report']
_MODELS = threading.local()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/proteus-4.6.5/proteus/config.py new/proteus-4.6.6/proteus/config.py
--- old/proteus-4.6.5/proteus/config.py 2018-08-20 22:55:18.000000000 +0200
+++ new/proteus-4.6.6/proteus/config.py 2019-03-17 09:19:28.000000000 +0100
@@ -61,6 +61,20 @@
xmlrpclib.Marshaller.dispatch[bytearray] = dump_bytes
+def dump_struct(self, value, write, escape=xmlrpclib.escape):
+ converted_value = {}
+ for k, v in value.items():
+ if isinstance(k, int):
+ k = str(k)
+ elif isinstance(k, float):
+ k = repr(k)
+ converted_value[k] = v
+ return self.dump_struct(converted_value, write, escape=escape)
+
+
+xmlrpclib.Marshaller.dispatch[dict] = dump_struct
+
+
class XMLRPCDecoder(object):
decoders = {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/proteus-4.6.5/proteus.egg-info/PKG-INFO new/proteus-4.6.6/proteus.egg-info/PKG-INFO
--- old/proteus-4.6.5/proteus.egg-info/PKG-INFO 2018-12-03 00:47:53.000000000 +0100
+++ new/proteus-4.6.6/proteus.egg-info/PKG-INFO 2019-04-22 10:41:27.000000000 +0200
@@ -1,13 +1,12 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: proteus
-Version: 4.6.5
+Version: 4.6.6
Summary: Library to access Tryton server as a client
Home-page: http://www.tryton.org/
Author: Tryton
Author-email: issue_tracker(a)tryton.org
License: LGPL-3
Download-URL: http://downloads.tryton.org/4.6/
-Description-Content-Type: UNKNOWN
Description: proteus
=======
@@ -181,3 +180,5 @@
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Office/Business
+Provides-Extra: cdecimal
+Provides-Extra: trytond
1
0
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 - mvetter(a)suse.com
+
+- 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(a)valencia/LC_MESSAGES/anki.mo and new/anki-2.1.13/locale/ca(a)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) {
1
0
Hello community,
here is the log from the commit of package python-pyftpdlib for openSUSE:Factory checked in at 2019-06-01 09:47:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyftpdlib (Old)
and /work/SRC/openSUSE:Factory/.python-pyftpdlib.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyftpdlib"
Sat Jun 1 09:47:48 2019 rev:8 rq:705885 version:1.5.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pyftpdlib/python-pyftpdlib.changes 2019-05-27 08:39:37.899041824 +0200
+++ /work/SRC/openSUSE:Factory/.python-pyftpdlib.new.5148/python-pyftpdlib.changes 2019-06-01 09:47:49.931358445 +0200
@@ -1,0 +2,5 @@
+Tue May 28 11:07:18 UTC 2019 - Tomáš Chvátal <tchvatal(a)suse.com>
+
+- Do not remove tests, other packages import them
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pyftpdlib.spec ++++++
--- /var/tmp/diff_new_pack.DNNH6z/_old 2019-06-01 09:47:50.571358227 +0200
+++ /var/tmp/diff_new_pack.DNNH6z/_new 2019-06-01 09:47:50.575358225 +0200
@@ -57,7 +57,6 @@
%install
%python_install
-%python_expand rm -r %{buildroot}%{$python_sitelib}/pyftpdlib/test
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%if %{with test}
1
0
Hello community,
here is the log from the commit of package terminology for openSUSE:Factory checked in at 2019-06-01 09:47:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/terminology (Old)
and /work/SRC/openSUSE:Factory/.terminology.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "terminology"
Sat Jun 1 09:47:44 2019 rev:17 rq:705884 version:1.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/terminology/terminology.changes 2018-06-29 22:29:48.914328224 +0200
+++ /work/SRC/openSUSE:Factory/.terminology.new.5148/terminology.changes 2019-06-01 09:47:46.571359592 +0200
@@ -1,0 +2,40 @@
+Tue May 28 09:14:10 UTC 2019 - Tomas Cech <sleep_walker(a)opensuse.org>
+
+- Update to 1.4.1:
+ * Decode pasted string as UTF-8, fixing some characters being skipped
+ * Fix theme to ensure default size is 80x24
+ * Fix focus disappearing after going to Settings and back
+
+ * Release v1.4.0
+ * Add Continuous Integration on every push to the git repository
+ * Add a test framework on escape code parsing and interpreting
+ * Add more than 120 test files
+ * Add support, along with tests, for the following escape codes: DSR-DIR,
+ DSR-KBD, DSR-MSR, DSR-DECCKSR, DSR-OS, DSR-PP, DSR-UDK, DECSCLM, DECBI,
+ DECFI, DECSACE, DECRARA, DECCRARA, DECIC, DECDC, DECCRA, DECST8C, DA3,
+ DECSWBV
+ * Add finer configuration on whether to activate links
+ * Set environment variable WINDOWID
+ * Selections only disappear if the underlaying content changes
+ * When pasting a buffer, skip control characters as a security measure
+ * Fixes, along with tests, on handling the following escape codes: VPR,
+ DECERA, DECFRA, DSR-CPR, DCH, DECALN, DECAWM, IL, DL
+ * Fixes, along with tests, on mouse reporting
+ * Fixes on issues spotted by Coverity
+
+ * Release v1.3.2
+ * Clicking on links works again
+
+ * Release v1.3.1
+ * Add manpages on Terminology's helpers
+ * Do not popup unknown media types (security issue)
+ * Right-click on hyperlinks no longer crashes
+
+ * Release v1.3.0
+ * Hyperlink escape code support
+ * Optimize escape code parsing by improving cell copies
+ * Fix issues about settings panel
+ * Do not pass input when tab selector is up
+ * Escape code fixes
+
+-------------------------------------------------------------------
Old:
----
terminology-1.2.1.tar.xz
New:
----
terminology-1.4.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ terminology.spec ++++++
--- /var/tmp/diff_new_pack.HNQUkF/_old 2019-06-01 09:47:47.179359384 +0200
+++ /var/tmp/diff_new_pack.HNQUkF/_new 2019-06-01 09:47:47.183359383 +0200
@@ -1,7 +1,7 @@
#
# spec file for package terminology
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -23,7 +23,7 @@
%define e_branding_version 0.1
%endif
Name: terminology
-Version: 1.2.1
+Version: 1.4.1
Release: 0
Summary: EFL based terminal emulator
License: BSD-2-Clause AND OFL-1.1
@@ -117,23 +117,6 @@
%install
%meson_install
-# convert icons to hicolor
-_file=%{buildroot}%{_datadir}/icons/%{name}.png
-_width=$(identify -format %w $_file)
-_height=$(identify -format %h $_file)
-if [ "$_width" -eq $_height ]; then
- ls %{_datadir}/icons/hicolor | grep '[0-9]x[0-9]' | sort -n | while read _size; do
- if [ "$_width" -ge ${_size%x*} ]; then
- mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${_size}/apps
- convert -strip \
- $_file -resize $_size \
- %{buildroot}%{_datadir}/icons/hicolor/${_size}/apps/${_file##*/}
- fi
- done
-else
- install -Dm0644 $_file %{buildroot}%{_datadir}/pixmaps/${_file##*/}
-fi
-rm %{buildroot}%{_datadir}/icons/%{name}.png
sed -i 's/.png[[:blank:]]*$//' %{buildroot}%{_datadir}/applications/%{name}.desktop
# make 2 copys of default for branding
@@ -164,7 +147,8 @@
%{_datadir}/%{name}/
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/*/apps/%{name}.??g
-%{_mandir}/man?/terminology.?.?z
+%{_mandir}/man?/terminology*.?z
+%{_mandir}/man?/ty*.?z
%exclude %{_datadir}/%{name}/themes/*
%files theme-upstream
++++++ terminology-1.2.1.tar.xz -> terminology-1.4.1.tar.xz ++++++
++++ 28918 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package pdnsd for openSUSE:Factory checked in at 2019-06-01 09:47:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pdnsd (Old)
and /work/SRC/openSUSE:Factory/.pdnsd.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pdnsd"
Sat Jun 1 09:47:39 2019 rev:6 rq:705881 version:1.2.9a
Changes:
--------
--- /work/SRC/openSUSE:Factory/pdnsd/pdnsd.changes 2017-03-20 17:09:09.293325994 +0100
+++ /work/SRC/openSUSE:Factory/.pdnsd.new.5148/pdnsd.changes 2019-06-01 09:47:40.787361567 +0200
@@ -1,0 +2,6 @@
+Tue May 28 10:04:52 UTC 2019 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Do not ignore errors from groupadd.
+- Convert sysvinit script to systemd service unit. [boo#1116030]
+
+-------------------------------------------------------------------
Old:
----
pdnsd
New:
----
pdnsd.service
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pdnsd.spec ++++++
--- /var/tmp/diff_new_pack.9Tzq2k/_old 2019-06-01 09:47:41.411361354 +0200
+++ /var/tmp/diff_new_pack.9Tzq2k/_new 2019-06-01 09:47:41.415361352 +0200
@@ -1,7 +1,7 @@
#
# spec file for package pdnsd
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,23 +12,24 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: pdnsd
Version: 1.2.9a
Release: 0
-Summary: A caching dns proxy for small networks or dialin accounts
-License: GPL-3.0+
+Summary: A caching DNS proxy for small networks or dialin accounts
+License: GPL-3.0-or-later
Group: Productivity/Networking/DNS/Servers
Url: http://members.home.nl/p.a.rombouts/pdnsd.html
Source0: http://members.home.nl/p.a.rombouts/pdnsd/releases/pdnsd-%{version}-par.tar…
-Source1: pdnsd
+Source1: pdnsd.service
Recommends: %{name}-doc
-PreReq: %insserv_prereq
+BuildRequires: systemd-rpm-macros
BuildRoot: %{_tmppath}/%{name}-%{version}-build
+%{?systemd_ordering}
%description
pdnsd is a proxy DNS daemon with permanent (disk-)cache and the ability
@@ -64,32 +65,35 @@
make %{?_smp_mflags}
%install
-make DESTDIR="%{buildroot}" install
+%make_install
mkdir -p %{buildroot}%{_sysconfdir}/init.d
-mkdir -p %{buildroot}%{_sbindir}/
-install -c -m 755 %{SOURCE1} %{buildroot}%{_sysconfdir}/init.d/
+mkdir -p %{buildroot}/%{_unitdir}
+cp -a %{SOURCE1} %{buildroot}/%{_unitdir}/
cp %{buildroot}%{_sysconfdir}/%{name}.conf.sample %{buildroot}%{_sysconfdir}/%{name}.conf
-ln -s /etc/init.d/%{name} %{buildroot}%{_sbindir}/rc%{name}
+ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}
%pre
-/usr/sbin/groupadd -r pdns 2> /dev/null || :
+getent group pdns >/dev/null || /usr/sbin/groupadd -r pdns
+%service_add_pre pdnsd.service
+
+%post
+%service_add_post pdnsd.service
%preun
-%stop_on_removal pdnsd
+%service_del_preun pdnsd.service
%postun
-%insserv_cleanup
-%restart_on_update pdnsd
+%service_del_postun pdnsd.service
%files
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/pdnsd.conf
-%attr(755,root,root) %{_sysconfdir}/init.d/pdnsd
%{_sysconfdir}/pdnsd.conf.sample
%{_sbindir}/*%{name}*
%{_mandir}/man*/%{name}*
%config(noreplace) %attr(-,pdns,pdns) %ghost %{_localstatedir}/cache/%{name}/%{name}.cache
%dir %{_localstatedir}/cache/%{name}
+%{_unitdir}/*.service
%files doc
%defattr(-,root,root)
++++++ pdnsd.service ++++++
[Unit]
Description=Caching DNS proxy
Documentation=man:pdnsd(8)
After=network.target
[Service]
Type=simple
ExecStart=/usr/sbin/pdnsd
[Install]
WantedBy=multi-user.target
1
0
Hello community,
here is the log from the commit of package python-selectors2 for openSUSE:Factory checked in at 2019-06-01 09:47:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-selectors2 (Old)
and /work/SRC/openSUSE:Factory/.python-selectors2.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-selectors2"
Sat Jun 1 09:47:33 2019 rev:3 rq:705865 version:2.0.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-selectors2/python-selectors2.changes 2019-03-29 20:43:34.006679708 +0100
+++ /work/SRC/openSUSE:Factory/.python-selectors2.new.5148/python-selectors2.changes 2019-06-01 09:47:34.503363712 +0200
@@ -1,0 +2,7 @@
+Tue May 28 09:51:45 UTC 2019 - Tomáš Chvátal <tchvatal(a)suse.com>
+
+- Update tolerance time for timed tests to make sure they
+ pass in obs:
+ * selectors-skip-tests.patch
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
1
0
Hello community,
here is the log from the commit of package librecad for openSUSE:Factory checked in at 2019-06-01 09:47:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/librecad (Old)
and /work/SRC/openSUSE:Factory/.librecad.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "librecad"
Sat Jun 1 09:47:28 2019 rev:22 rq:705857 version:2.1.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/librecad/librecad.changes 2018-06-19 11:55:50.139470339 +0200
+++ /work/SRC/openSUSE:Factory/.librecad.new.5148/librecad.changes 2019-06-01 09:47:32.123364525 +0200
@@ -1,0 +2,5 @@
+Tue May 28 09:05:54 UTC 2019 - Jiri Slaby <jslaby(a)suse.com>
+
+- add 0001-fix-build-with-gcc-9.patch
+
+-------------------------------------------------------------------
New:
----
0001-fix-build-with-gcc-9.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ librecad.spec ++++++
--- /var/tmp/diff_new_pack.zvoKSC/_old 2019-06-01 09:47:33.135364179 +0200
+++ /var/tmp/diff_new_pack.zvoKSC/_new 2019-06-01 09:47:33.139364178 +0200
@@ -1,7 +1,7 @@
#
# spec file for package librecad
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -20,7 +20,7 @@
Version: 2.1.3
Release: 0
Summary: Computer-aided design (CAD) software package for 2D design and drafting
-License: GPL-2.0 and (Apache-2.0 or SUSE-GPL-3.0+-with-font-exception)
+License: GPL-2.0-only AND (Apache-2.0 OR SUSE-GPL-3.0+-with-font-exception)
Group: Productivity/Graphics/CAD
Url: http://librecad.org/
@@ -41,6 +41,7 @@
Patch4: librecad-install.diff
Patch5: librecad-plugindir.diff
Patch6: librecad-use-system-shapelib.patch
+Patch7: 0001-fix-build-with-gcc-9.patch
%if 0%{?suse_version} > 1325
BuildRequires: libboost_headers-devel
%else
@@ -93,7 +94,7 @@
%prep
%setup -qn LibreCAD-%version -a 2 -a 3 -a 4
-%patch -P 0 -P 1 -P 2 -P 3 -P 4 -P 5 -p1
+%patch -P 0 -P 1 -P 2 -P 3 -P 4 -P 5 -P 7 -p1
%if 0%{?suse_version} >= 1321
%patch -P 6 -p1
%endif
@@ -175,7 +176,8 @@
%files
%defattr(-,root,root)
-%doc LICENSE* README.md gpl-2.0* license-lc_opengost-fonts.txt
+%doc README.md
+%license LICENSE* gpl-2.0* license-lc_opengost-fonts.txt
%_bindir/librecad
%_bindir/ttf2lff
%_libdir/%name
++++++ 0001-fix-build-with-gcc-9.patch ++++++
From: Jiri Slaby <jslaby(a)suse.cz>
Date: Tue, 28 May 2019 10:57:15 +0200
Subject: fix build with gcc 9
Patch-mainline: submitted
References: build fix
These symbols were reported as multiply defined with gcc9 and LTO.
Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
---
librecad/src/actions/rs_actiondrawcircletan1_2p.cpp | 2 +-
librecad/src/actions/rs_actiondrawcircletan2.cpp | 2 +-
librecad/src/actions/rs_actiondrawcircletan2_1p.cpp | 2 +-
librecad/src/actions/rs_actiondrawcircletan3.cpp | 2 +-
librecad/src/actions/rs_actiondrawlinerelangle.cpp | 2 +-
librecad/src/actions/rs_actiondrawlinetangent1.cpp | 2 +-
librecad/src/actions/rs_actiondrawlinetangent2.cpp | 2 +-
7 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/librecad/src/actions/rs_actiondrawcircletan1_2p.cpp b/librecad/src/actions/rs_actiondrawcircletan1_2p.cpp
index c14da00e4897..c1a0e23d0fac 100644
--- a/librecad/src/actions/rs_actiondrawcircletan1_2p.cpp
+++ b/librecad/src/actions/rs_actiondrawcircletan1_2p.cpp
@@ -38,7 +38,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
namespace{
//list of entity types supported by current action
-auto enTypeList={RS2::EntityLine, RS2::EntityArc, RS2::EntityCircle};
+static auto enTypeList={RS2::EntityLine, RS2::EntityArc, RS2::EntityCircle};
}
struct RS_ActionDrawCircleTan1_2P::Points {
diff --git a/librecad/src/actions/rs_actiondrawcircletan2.cpp b/librecad/src/actions/rs_actiondrawcircletan2.cpp
index d0558f05b746..0446003ea443 100644
--- a/librecad/src/actions/rs_actiondrawcircletan2.cpp
+++ b/librecad/src/actions/rs_actiondrawcircletan2.cpp
@@ -34,7 +34,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "rs_debug.h"
namespace {
-auto enTypeList={RS2::EntityLine, RS2::EntityArc, RS2::EntityCircle};
+static auto enTypeList={RS2::EntityLine, RS2::EntityArc, RS2::EntityCircle};
}
struct RS_ActionDrawCircleTan2::Points {
diff --git a/librecad/src/actions/rs_actiondrawcircletan2_1p.cpp b/librecad/src/actions/rs_actiondrawcircletan2_1p.cpp
index 324c166862d4..2ece493490d7 100644
--- a/librecad/src/actions/rs_actiondrawcircletan2_1p.cpp
+++ b/librecad/src/actions/rs_actiondrawcircletan2_1p.cpp
@@ -36,7 +36,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "rs_debug.h"
namespace {
-auto enTypeList={RS2::EntityLine, RS2::EntityArc, RS2::EntityCircle};
+static auto enTypeList={RS2::EntityLine, RS2::EntityArc, RS2::EntityCircle};
}
struct RS_ActionDrawCircleTan2_1P::Points {
diff --git a/librecad/src/actions/rs_actiondrawcircletan3.cpp b/librecad/src/actions/rs_actiondrawcircletan3.cpp
index 026ed30e5c20..92679c75f5bf 100644
--- a/librecad/src/actions/rs_actiondrawcircletan3.cpp
+++ b/librecad/src/actions/rs_actiondrawcircletan3.cpp
@@ -36,7 +36,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "rs_debug.h"
namespace {
-auto enTypeList={RS2::EntityArc, RS2::EntityCircle, RS2::EntityLine, RS2::EntityPoint};
+static auto enTypeList={RS2::EntityArc, RS2::EntityCircle, RS2::EntityLine, RS2::EntityPoint};
}
struct RS_ActionDrawCircleTan3::Points {
diff --git a/librecad/src/actions/rs_actiondrawlinerelangle.cpp b/librecad/src/actions/rs_actiondrawlinerelangle.cpp
index 8415dd604d5a..dfc6660aa6c2 100644
--- a/librecad/src/actions/rs_actiondrawlinerelangle.cpp
+++ b/librecad/src/actions/rs_actiondrawlinerelangle.cpp
@@ -39,7 +39,7 @@
#include "rs_debug.h"
namespace {
-auto enTypeList={RS2::EntityLine, RS2::EntityArc, RS2::EntityCircle,
+static auto enTypeList={RS2::EntityLine, RS2::EntityArc, RS2::EntityCircle,
RS2::EntityEllipse};
}
diff --git a/librecad/src/actions/rs_actiondrawlinetangent1.cpp b/librecad/src/actions/rs_actiondrawlinetangent1.cpp
index 197b0cb6c849..335e0d03ba55 100644
--- a/librecad/src/actions/rs_actiondrawlinetangent1.cpp
+++ b/librecad/src/actions/rs_actiondrawlinetangent1.cpp
@@ -37,7 +37,7 @@
#include "rs_debug.h"
namespace{
-auto circleType={RS2::EntityArc, RS2::EntityCircle,
+static auto circleType={RS2::EntityArc, RS2::EntityCircle,
RS2::EntityEllipse, RS2::EntitySplinePoints
};
}
diff --git a/librecad/src/actions/rs_actiondrawlinetangent2.cpp b/librecad/src/actions/rs_actiondrawlinetangent2.cpp
index fed3545e0d14..3c4f6019c00e 100644
--- a/librecad/src/actions/rs_actiondrawlinetangent2.cpp
+++ b/librecad/src/actions/rs_actiondrawlinetangent2.cpp
@@ -36,7 +36,7 @@
#include "rs_debug.h"
namespace{
-auto circleType={RS2::EntityArc, RS2::EntityCircle, RS2::EntityEllipse};
+static auto circleType={RS2::EntityArc, RS2::EntityCircle, RS2::EntityEllipse};
}
RS_ActionDrawLineTangent2::RS_ActionDrawLineTangent2(
--
2.21.0
1
0
Hello community,
here is the log from the commit of package openSUSE-release-tools for openSUSE:Factory checked in at 2019-06-01 09:47:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools"
Sat Jun 1 09:47:24 2019 rev:184 rq:705823 version:20190528.d7183777
Changes:
--------
--- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2019-05-28 09:43:13.005845290 +0200
+++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.5148/openSUSE-release-tools.changes 2019-06-01 09:47:25.811366679 +0200
@@ -1,0 +2,51 @@
+Tue May 28 08:06:20 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190528.d7183777:
+ * Run staging bot now in python3 as well
+
+-------------------------------------------------------------------
+Tue May 28 05:15:50 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190528.77612961:
+ * legal-auto: Port prints to logger calls
+ * legal-auto: the pickle path needs to be a file
+
+-------------------------------------------------------------------
+Mon May 27 17:58:38 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190527.8363fe38:
+ * Move legaldb import of projects into gocd
+ * Remove debug output left in ReviewBot
+
+-------------------------------------------------------------------
+Mon May 27 16:49:28 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190527.1a9bfa3a:
+ * Run legal-auto on botmaster as well
+
+-------------------------------------------------------------------
+Mon May 27 14:35:31 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190527.a0475878:
+ * Fix repo_checker path in gocd config
+
+-------------------------------------------------------------------
+Mon May 27 14:28:49 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190527.8328b5ec:
+ * Run project_only reports on 15.1:Update and no longer on 15.1
+
+-------------------------------------------------------------------
+Mon May 27 14:19:38 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190527.7f657d82:
+ * Run the SP5 installcheck per staging project and triggered by repo changes
+ * Run project_only reports in python3 containers
+
+-------------------------------------------------------------------
+Mon May 27 13:05:05 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190527.dd327556:
+ * Fix whitelist handling of repo checker in python3
+
+-------------------------------------------------------------------
Old:
----
openSUSE-release-tools-20190527.edbb8573.obscpio
New:
----
openSUSE-release-tools-20190528.d7183777.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.OwkWCn/_old 2019-06-01 09:47:27.359366151 +0200
+++ /var/tmp/diff_new_pack.OwkWCn/_new 2019-06-01 09:47:27.391366140 +0200
@@ -20,7 +20,7 @@
%define source_dir openSUSE-release-tools
%define announcer_filename factory-package-news
Name: openSUSE-release-tools
-Version: 20190527.edbb8573
+Version: 20190528.d7183777
Release: 0
Summary: Tools to aid in staging and release work for openSUSE/SUSE
License: GPL-2.0-or-later AND MIT
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.OwkWCn/_old 2019-06-01 09:47:27.847365985 +0200
+++ /var/tmp/diff_new_pack.OwkWCn/_new 2019-06-01 09:47:27.879365974 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param>
- <param name="changesrevision">edbb8573b616c09400ab6da1dda27a9da07c87c5</param>
+ <param name="changesrevision">d7183777f000ea7f3ea61f3d607e9f3ad0529688</param>
</service>
</servicedata>
++++++ openSUSE-release-tools-20190527.edbb8573.obscpio -> openSUSE-release-tools-20190528.d7183777.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190527.edbb8573/ReviewBot.py new/openSUSE-release-tools-20190528.d7183777/ReviewBot.py
--- old/openSUSE-release-tools-20190527.edbb8573/ReviewBot.py 2019-05-27 14:25:50.000000000 +0200
+++ new/openSUSE-release-tools-20190528.d7183777/ReviewBot.py 2019-05-28 10:03:50.000000000 +0200
@@ -851,10 +851,7 @@
"""raised on timeout"""
if not interval:
- print('WORK')
- r = workfunc()
- print('WORK', r)
- return r
+ return workfunc()
def alarm_called(nr, frame):
raise ExTimeout()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190527.edbb8573/gocd/checkers.opensuse.gocd.yaml new/openSUSE-release-tools-20190528.d7183777/gocd/checkers.opensuse.gocd.yaml
--- old/openSUSE-release-tools-20190527.edbb8573/gocd/checkers.opensuse.gocd.yaml 2019-05-27 14:25:50.000000000 +0200
+++ new/openSUSE-release-tools-20190528.d7183777/gocd/checkers.opensuse.gocd.yaml 2019-05-28 10:03:50.000000000 +0200
@@ -42,6 +42,48 @@
- repo-checker3
tasks:
- script: ./repo_checker.py -A https://api.opensuse.org --debug review
+ openSUSE.Legal.Check:
+ group: openSUSE.Checkers
+ lock_behavior: unlockWhenFinished
+ timer:
+ spec: 0 */5 * ? * *
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-legal-auto
+ materials:
+ git:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ stages:
+ - Run:
+ approval:
+ type: manual
+ jobs:
+ Run:
+ timeout: 0
+ resources:
+ - staging-bot3
+ tasks:
+ - script: ./legal-auto.py -A https://api.opensuse.org --debug --legaldb http://legaldb.suse.de review
+ openSUSE.Legal.Import:
+ group: openSUSE.Checkers
+ lock_behavior: unlockWhenFinished
+ timer:
+ spec: 0 0 12 ? * *
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-legal-auto
+ materials:
+ git:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ stages:
+ - Run:
+ approval:
+ type: manual
+ jobs:
+ Run:
+ timeout: 0
+ resources:
+ - legal-auto
+ tasks:
+ - script: ./legal-auto.py -A https://api.opensuse.org --debug --legaldb http://legaldb.suse.de project $(cat /home/go/config/legal-auto-projects-opensuse)
Factory.Staging.Report:
group: openSUSE.Checkers
lock_behavior: unlockWhenFinished
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190527.edbb8573/gocd/checkers.suse.gocd.yaml new/openSUSE-release-tools-20190528.d7183777/gocd/checkers.suse.gocd.yaml
--- old/openSUSE-release-tools-20190527.edbb8573/gocd/checkers.suse.gocd.yaml 2019-05-27 14:25:50.000000000 +0200
+++ new/openSUSE-release-tools-20190528.d7183777/gocd/checkers.suse.gocd.yaml 2019-05-28 10:03:50.000000000 +0200
@@ -126,7 +126,7 @@
Run:
timeout: 0
resources:
- - staging-bot
+ - staging-bot3
tasks:
- script: osc -A https://api.suse.de staging -p SUSE:SLE-15-SP1:GA rebuild
- script: osc -A https://api.suse.de staging -p SUSE:SLE-15-SP1:GA list --supersede
@@ -197,13 +197,13 @@
- staging-bot3
tasks:
- script: ./check_source.py -A https://api.suse.de --verbose --skip-add-reviews --group factory-auto review
- SLE12.SP5.InstallCheck:
+ SLE.Legal.Check:
group: SLE.Checkers
lock_behavior: unlockWhenFinished
timer:
- spec: 0 */20 * ? * *
+ spec: 0 */5 * ? * *
environment_variables:
- OSC_CONFIG: /home/go/config/oscrc-repo-checker
+ OSC_CONFIG: /home/go/config/oscrc-legal-auto
materials:
git:
git: https://github.com/openSUSE/openSUSE-release-tools.git
@@ -212,52 +212,231 @@
approval:
type: manual
jobs:
- Run.A:
- timeout: 0
- resources:
- - repo-checker3
- tasks:
- - script: ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s A
- Run.B:
- timeout: 0
- resources:
- - repo-checker3
- tasks:
- - script: ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s B
- Run.C:
- timeout: 0
- resources:
- - repo-checker3
- tasks:
- - script: ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s C
- Run.D:
- timeout: 0
- resources:
- - repo-checker3
- tasks:
- - script: ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s D
- Run.H:
- timeout: 0
- resources:
- - repo-checker3
- tasks:
- - script: ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s H
- Run.S:
- timeout: 0
- resources:
- - repo-checker3
- tasks:
- - script: ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s S
- Run.V:
+ Run:
timeout: 0
resources:
- - repo-checker3
+ - staging-bot3
tasks:
- - script: ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s V
- Run.Y:
+ - script: ./legal-auto.py -A https://api.suse.de --debug --legaldb http://legaldb.suse.de review
+ SLE.Legal.Import:
+ group: SLE.Checkers
+ lock_behavior: unlockWhenFinished
+ timer:
+ spec: 0 0 0 ? * *
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-legal-auto
+ materials:
+ git:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ stages:
+ - Run:
+ approval:
+ type: manual
+ jobs:
+ Run:
timeout: 0
resources:
- - repo-checker3
+ - legal-auto
tasks:
- - script: ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s Y
+ - script: ./legal-auto.py -A https://api.suse.de --debug --legaldb http://legaldb.suse.de project $(cat /home/go/config/legal-auto-projects-suse)
+ SLE12.SP5.InstallCheck.A:
+ group: SLE.Checkers
+ lock_behavior: unlockWhenFinished
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-repo-checker
+ materials:
+ scripts:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ destination: scripts
+ whitelist:
+ - DO_NOT_TRIGGER
+ stagings:
+ git: git://botmaster.suse.de/suse-repos.git
+ destination: repos
+ whitelist:
+ - SUSE:SLE-12-SP5:GA:Staging:A_-_standard.yaml
+ stages:
+ - Run:
+ timeout: 0
+ resources:
+ - repo-checker3
+ tasks:
+ - script: |-
+ cd scripts
+ ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s A
+ SLE12.SP5.InstallCheck.B:
+ group: SLE.Checkers
+ lock_behavior: unlockWhenFinished
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-repo-checker
+ materials:
+ scripts:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ destination: scripts
+ whitelist:
+ - DO_NOT_TRIGGER
+ stagings:
+ git: git://botmaster.suse.de/suse-repos.git
+ destination: repos
+ whitelist:
+ - SUSE:SLE-12-SP5:GA:Staging:B_-_standard.yaml
+ stages:
+ - Run:
+ timeout: 0
+ resources:
+ - repo-checker3
+ tasks:
+ - script: |-
+ cd scripts
+ ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s B
+ SLE12.SP5.InstallCheck.C:
+ group: SLE.Checkers
+ lock_behavior: unlockWhenFinished
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-repo-checker
+ materials:
+ scripts:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ destination: scripts
+ whitelist:
+ - DO_NOT_TRIGGER
+ stagings:
+ git: git://botmaster.suse.de/suse-repos.git
+ destination: repos
+ whitelist:
+ - SUSE:SLE-12-SP5:GA:Staging:C_-_standard.yaml
+ stages:
+ - Run:
+ timeout: 0
+ resources:
+ - repo-checker3
+ tasks:
+ - script: |-
+ cd scripts
+ ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s C
+ SLE12.SP5.InstallCheck.D:
+ group: SLE.Checkers
+ lock_behavior: unlockWhenFinished
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-repo-checker
+ materials:
+ scripts:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ destination: scripts
+ whitelist:
+ - DO_NOT_TRIGGER
+ stagings:
+ git: git://botmaster.suse.de/suse-repos.git
+ destination: repos
+ whitelist:
+ - SUSE:SLE-12-SP5:GA:Staging:D_-_standard.yaml
+ stages:
+ - Run:
+ timeout: 0
+ resources:
+ - repo-checker3
+ tasks:
+ - script: |-
+ cd scripts
+ ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s D
+ SLE12.SP5.InstallCheck.H:
+ group: SLE.Checkers
+ lock_behavior: unlockWhenFinished
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-repo-checker
+ materials:
+ scripts:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ destination: scripts
+ whitelist:
+ - DO_NOT_TRIGGER
+ stagings:
+ git: git://botmaster.suse.de/suse-repos.git
+ destination: repos
+ whitelist:
+ - SUSE:SLE-12-SP5:GA:Staging:H_-_standard.yaml
+ stages:
+ - Run:
+ timeout: 0
+ resources:
+ - repo-checker3
+ tasks:
+ - script: |-
+ cd scripts
+ ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s H
+ SLE12.SP5.InstallCheck.S:
+ group: SLE.Checkers
+ lock_behavior: unlockWhenFinished
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-repo-checker
+ materials:
+ scripts:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ destination: scripts
+ whitelist:
+ - DO_NOT_TRIGGER
+ stagings:
+ git: git://botmaster.suse.de/suse-repos.git
+ destination: repos
+ whitelist:
+ - SUSE:SLE-12-SP5:GA:Staging:S_-_standard.yaml
+ stages:
+ - Run:
+ timeout: 0
+ resources:
+ - repo-checker3
+ tasks:
+ - script: |-
+ cd scripts
+ ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s S
+ SLE12.SP5.InstallCheck.V:
+ group: SLE.Checkers
+ lock_behavior: unlockWhenFinished
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-repo-checker
+ materials:
+ scripts:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ destination: scripts
+ whitelist:
+ - DO_NOT_TRIGGER
+ stagings:
+ git: git://botmaster.suse.de/suse-repos.git
+ destination: repos
+ whitelist:
+ - SUSE:SLE-12-SP5:GA:Staging:V_-_standard.yaml
+ stages:
+ - Run:
+ timeout: 0
+ resources:
+ - repo-checker3
+ tasks:
+ - script: |-
+ cd scripts
+ ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s V
+ SLE12.SP5.InstallCheck.Y:
+ group: SLE.Checkers
+ lock_behavior: unlockWhenFinished
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-repo-checker
+ materials:
+ scripts:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ destination: scripts
+ whitelist:
+ - DO_NOT_TRIGGER
+ stagings:
+ git: git://botmaster.suse.de/suse-repos.git
+ destination: repos
+ whitelist:
+ - SUSE:SLE-12-SP5:GA:Staging:Y_-_standard.yaml
+ stages:
+ - Run:
+ timeout: 0
+ resources:
+ - repo-checker3
+ tasks:
+ - script: |-
+ cd scripts
+ ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s Y
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190527.edbb8573/gocd/checkers.suse.gocd.yaml.erb new/openSUSE-release-tools-20190528.d7183777/gocd/checkers.suse.gocd.yaml.erb
--- old/openSUSE-release-tools-20190527.edbb8573/gocd/checkers.suse.gocd.yaml.erb 2019-05-27 14:25:50.000000000 +0200
+++ new/openSUSE-release-tools-20190528.d7183777/gocd/checkers.suse.gocd.yaml.erb 2019-05-28 10:03:50.000000000 +0200
@@ -126,7 +126,7 @@
Run:
timeout: 0
resources:
- - staging-bot
+ - staging-bot3
tasks:
- script: osc -A https://api.suse.de staging -p SUSE:SLE-15-SP1:GA rebuild
- script: osc -A https://api.suse.de staging -p SUSE:SLE-15-SP1:GA list --supersede
@@ -197,13 +197,13 @@
- staging-bot3
tasks:
- script: ./check_source.py -A https://api.suse.de --verbose --skip-add-reviews --group factory-auto review
- SLE12.SP5.InstallCheck:
+ SLE.Legal.Check:
group: SLE.Checkers
lock_behavior: unlockWhenFinished
timer:
- spec: 0 */20 * ? * *
+ spec: 0 */5 * ? * *
environment_variables:
- OSC_CONFIG: /home/go/config/oscrc-repo-checker
+ OSC_CONFIG: /home/go/config/oscrc-legal-auto
materials:
git:
git: https://github.com/openSUSE/openSUSE-release-tools.git
@@ -212,11 +212,57 @@
approval:
type: manual
jobs:
-<% %w(A B C D H S V Y).each do |letter| -%>
- Run.<%= letter %>:
+ Run:
timeout: 0
resources:
- - repo-checker3
+ - staging-bot3
tasks:
- - script: ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s <%= letter %>
+ - script: ./legal-auto.py -A https://api.suse.de --debug --legaldb http://legaldb.suse.de review
+ SLE.Legal.Import:
+ group: SLE.Checkers
+ lock_behavior: unlockWhenFinished
+ timer:
+ spec: 0 0 0 ? * *
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-legal-auto
+ materials:
+ git:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ stages:
+ - Run:
+ approval:
+ type: manual
+ jobs:
+ Run:
+ timeout: 0
+ resources:
+ - legal-auto
+ tasks:
+ - script: ./legal-auto.py -A https://api.suse.de --debug --legaldb http://legaldb.suse.de project $(cat /home/go/config/legal-auto-projects-suse)
+<% %w(A B C D H S V Y).each do |letter| -%>
+ SLE12.SP5.InstallCheck.<%= letter %>:
+ group: SLE.Checkers
+ lock_behavior: unlockWhenFinished
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-repo-checker
+ materials:
+ scripts:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ destination: scripts
+ whitelist:
+ - DO_NOT_TRIGGER
+ stagings:
+ git: git://botmaster.suse.de/suse-repos.git
+ destination: repos
+ whitelist:
+ - SUSE:SLE-12-SP5:GA:Staging:<%= letter %>_-_standard.yaml
+ stages:
+ - Run:
+ timeout: 0
+ resources:
+ - repo-checker3
+ tasks:
+ - script: |-
+ cd scripts
+ ./staging-installcheck.py -d -p SUSE:SLE-12-SP5:GA -A https://api.suse.de -s <%= letter %>
<% end %>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190527.edbb8573/gocd/staging.bot.gocd.yaml new/openSUSE-release-tools-20190528.d7183777/gocd/staging.bot.gocd.yaml
--- old/openSUSE-release-tools-20190527.edbb8573/gocd/staging.bot.gocd.yaml 2019-05-27 14:25:50.000000000 +0200
+++ new/openSUSE-release-tools-20190528.d7183777/gocd/staging.bot.gocd.yaml 2019-05-28 10:03:50.000000000 +0200
@@ -42,7 +42,7 @@
Run:
timeout: 0
resources:
- - staging-bot
+ - staging-bot3
tasks:
- script: osc -A https://api.opensuse.org staging -p openSUSE:Factory rebuild
- script: osc -A https://api.opensuse.org staging -p openSUSE:Factory list --supersede
@@ -92,7 +92,7 @@
Run:
timeout: 0
resources:
- - staging-bot
+ - staging-bot3
tasks:
- script: osc -A https://api.opensuse.org staging -p openSUSE:Leap:15.1 rebuild
- script: osc -A https://api.opensuse.org staging -p openSUSE:Leap:15.1 list --supersede
@@ -119,24 +119,24 @@
openSUSE.Factory:
timeout: 0
resources:
- - repo-checker
+ - repo-checker3
tasks:
- - script: /usr/bin/osrt-repo_checker -A https://api.opensuse.org --debug project_only --post-comments openSUSE:Factory
+ - script: ./repo_checker.py -A https://api.opensuse.org --debug project_only --post-comments openSUSE:Factory
openSUSE.Leap.15.0.Update:
timeout: 0
resources:
- - repo-checker
+ - repo-checker3
tasks:
- - script: /usr/bin/osrt-repo_checker -A https://api.opensuse.org --debug project_only --post-comments openSUSE:Leap:15.0:Update
+ - script: ./repo_checker.py -A https://api.opensuse.org --debug project_only --post-comments openSUSE:Leap:15.0:Update
openSUSE.Leap.42.3.Update:
timeout: 0
resources:
- - repo-checker
+ - repo-checker3
tasks:
- - script: /usr/bin/osrt-repo_checker -A https://api.opensuse.org --debug project_only --post-comments openSUSE:Leap:42.3:Update
- openSUSE.Leap.15.1:
+ - script: ./repo_checker.py -A https://api.opensuse.org --debug project_only --post-comments openSUSE:Leap:42.3:Update
+ openSUSE.Leap.15.1.Update:
timeout: 0
resources:
- - repo-checker
+ - repo-checker3
tasks:
- - script: /usr/bin/osrt-repo_checker -A https://api.opensuse.org --debug project_only --post-comments openSUSE:Leap:15.1
+ - script: ./repo_checker.py -A https://api.opensuse.org --debug project_only --post-comments openSUSE:Leap:15.1:Update
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190527.edbb8573/gocd/staging.bot.gocd.yaml.erb new/openSUSE-release-tools-20190528.d7183777/gocd/staging.bot.gocd.yaml.erb
--- old/openSUSE-release-tools-20190527.edbb8573/gocd/staging.bot.gocd.yaml.erb 2019-05-27 14:25:50.000000000 +0200
+++ new/openSUSE-release-tools-20190528.d7183777/gocd/staging.bot.gocd.yaml.erb 2019-05-28 10:03:50.000000000 +0200
@@ -44,7 +44,7 @@
Run:
timeout: 0
resources:
- - staging-bot
+ - staging-bot3
tasks:
- script: osc -A https://api.opensuse.org staging -p openSUSE:<%= project %> rebuild
- script: osc -A https://api.opensuse.org staging -p openSUSE:<%= project %> list --supersede
@@ -69,11 +69,11 @@
environment_variables:
OSC_CONFIG: /home/go/config/oscrc-repo-checker
jobs:
-<% %w(openSUSE:Factory openSUSE:Leap:15.0:Update openSUSE:Leap:42.3:Update openSUSE:Leap:15.1).each do |project| -%>
+<% %w(openSUSE:Factory openSUSE:Leap:15.0:Update openSUSE:Leap:42.3:Update openSUSE:Leap:15.1:Update).each do |project| -%>
<%= project.gsub(':', '.') %>:
timeout: 0
resources:
- - repo-checker
+ - repo-checker3
tasks:
- - script: /usr/bin/osrt-repo_checker -A https://api.opensuse.org --debug project_only --post-comments <%= project %>
+ - script: ./repo_checker.py -A https://api.opensuse.org --debug project_only --post-comments <%= project %>
<% end -%>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190527.edbb8573/legal-auto.py new/openSUSE-release-tools-20190528.d7183777/legal-auto.py
--- old/openSUSE-release-tools-20190527.edbb8573/legal-auto.py 2019-05-27 14:25:50.000000000 +0200
+++ new/openSUSE-release-tools-20190528.d7183777/legal-auto.py 2019-05-28 10:03:50.000000000 +0200
@@ -1,9 +1,9 @@
-#!/usr/bin/python
+#!/usr/bin/python3
# SPDX-License-Identifier: MIT
-from pprint import pprint
import os
+import os.path
import sys
import re
import logging
@@ -13,11 +13,7 @@
import json
import time
-try:
- from urllib.error import HTTPError
-except ImportError:
- # python 2.x
- from urllib2 import HTTPError
+from urllib.error import HTTPError
try:
from xml.etree import cElementTree as ET
@@ -60,7 +56,7 @@
return http_GET(url)
except HTTPError as e:
if 500 <= e.code <= 599:
- print('Retrying {}'.format(url))
+ self.logger.debug('Retrying {}'.format(url))
time.sleep(1)
return self.retried_GET(url)
raise e
@@ -100,7 +96,7 @@
src_package, src_rev, target_project, target_package))
to_review = self.open_reviews.get(self.request_nick(), None)
if to_review:
- self.logger.info("Found " + json.dumps(to_review))
+ self.logger.info("Found {}".format(json.dumps(to_review)))
to_review = to_review or self.create_db_entry(
src_project, src_package, src_rev)
if not to_review:
@@ -109,7 +105,7 @@
url = osc.core.makeurl(self.legaldb, ['package', str(pack)])
report = REQ.get(url, headers=self.legaldb_headers).json()
if report.get('priority', 0) != self.request_priority():
- print('Update priority {}'.format(self.request_priority()))
+ self.logger.debug('Update priority {}'.format(self.request_priority()))
url = osc.core.makeurl(
self.legaldb, ['package', str(pack)], {'priority': self.request_priority()})
REQ.patch(url, headers=self.legaldb_headers)
@@ -126,7 +122,7 @@
user = report.get('reviewing_user', None)
if not user:
self.message = 'declined'
- print("unacceptable without user %d" % report.get('id'))
+ self.logger.warning("unacceptable without user %d" % report.get('id'))
return None
comment = report.get('result', None).encode('utf-8')
if comment:
@@ -144,7 +140,7 @@
self.message = None
result = super(LegalAuto, self).check_one_request(req)
if result is None and self.message is not None:
- print(self.message, req.reqid)
+ self.logger.debug("Result of {}: {}".format(req.reqid, self.message))
return result
def check_action__default(self, req, a):
@@ -195,7 +191,7 @@
self.delete_from_db(req.reqid)
def _pkl_path(self):
- return CacheManager.directory('legal-auto')
+ return os.path.join(CacheManager.directory('legal-auto'), 'packages.dump')
def update_project(self, project):
try:
@@ -249,7 +245,7 @@
if match and match.group(1) == package:
lpackage = package
if package != lpackage:
- print("SKIP", package, "it links to", lpackage)
+ self.logger.info("SKIP {}, it links to {}".format(package, lpackage))
skip = True
break
if skip:
@@ -291,7 +287,7 @@
return None
if not 'saved' in obj:
return None
- print("PKG", tproject, sproject, package, revision, obj['saved']['id'])
+ self.logger.debug("PKG {}/{}[{}]->{} is {}".format(sproject, package, revision, tproject, obj['saved']['id']))
self.pkg_cache[hkey] = obj['saved']['id']
return self.pkg_cache[hkey]
@@ -307,8 +303,6 @@
parser.add_option("--legaldb", dest='legaldb', metavar='URL',
default='http://legaldb.suse.de', help="Use different legaldb deployment")
- parser.add_option("--token", dest='token', metavar='STRING',
- default=False, help="Use token to authenticate")
return parser
def do_project(self, subcmd, opts, *projects):
@@ -322,8 +316,7 @@
self.options.group = 'legal-auto'
bot = ReviewBot.CommandLineInterface.setup_checker(self)
bot.legaldb = self.options.legaldb
- if self.options.token:
- bot.legaldb_headers['Authorization'] = 'Token ' + self.options.token
+ bot.legaldb_headers['Authorization'] = 'Token ' + osc.conf.config['legaldb_token']
return bot
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190527.edbb8573/repo_checker.py new/openSUSE-release-tools-20190528.d7183777/repo_checker.py
--- old/openSUSE-release-tools-20190527.edbb8573/repo_checker.py 2019-05-27 14:25:50.000000000 +0200
+++ new/openSUSE-release-tools-20190528.d7183777/repo_checker.py 2019-05-28 10:03:50.000000000 +0200
@@ -177,8 +177,7 @@
for key in [prefix, '-'.join([prefix, arch])]:
whitelist.update(additions.get(key, '').split(' '))
- whitelist = filter(None, whitelist)
- return whitelist
+ return set(filter(None, whitelist))
def install_check(self, target_project_pair, arch, directories,
ignore=None, whitelist=[], parse=False, no_filter=False):
@@ -555,7 +554,7 @@
# For "leaky" ring packages in letter stagings, where the
# repository setup does not include the target project, that are
# not intended to to have all run-time dependencies satisfied.
- whitelist = config.get('repo_checker-binary-whitelist-ring', '').split(' ')
+ whitelist = set(config.get('repo_checker-binary-whitelist-ring', '').split(' '))
state_hash = self.repository_state(repository_pairs, True)
if not self.repository_check(repository_pairs, state_hash, True,
++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.OwkWCn/_old 2019-06-01 09:47:31.815364630 +0200
+++ /var/tmp/diff_new_pack.OwkWCn/_new 2019-06-01 09:47:31.815364630 +0200
@@ -1,5 +1,5 @@
name: openSUSE-release-tools
-version: 20190527.edbb8573
-mtime: 1558959950
-commit: edbb8573b616c09400ab6da1dda27a9da07c87c5
+version: 20190528.d7183777
+mtime: 1559030630
+commit: d7183777f000ea7f3ea61f3d607e9f3ad0529688
1
0
Hello community,
here is the log from the commit of package dunst for openSUSE:Factory checked in at 2019-06-01 09:47:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dunst (Old)
and /work/SRC/openSUSE:Factory/.dunst.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dunst"
Sat Jun 1 09:47:21 2019 rev:6 rq:705822 version:1.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/dunst/dunst.changes 2018-05-08 13:38:47.630404610 +0200
+++ /work/SRC/openSUSE:Factory/.dunst.new.5148/dunst.changes 2019-06-01 09:47:22.695367743 +0200
@@ -1,0 +2,37 @@
+Tue May 28 06:35:15 UTC 2019 - Petr Cervinka <petr(a)cervinka.net>
+
+- Update to version 1.4.0
+ * Added
+ - Add support to override `frame_color` via rules (#498)
+ - Support for round corners (#420)
+ - Ability to reference `$HOME` in icon paths with `~/` (#520)
+ - Support to customize the mouse bindings (#530)
+ - Command to toggle pause status (#535)
+ - Ability to automatically replace similar notifications (like volume changes)
+ via `stack_tag` (#552)
+ - Comparison of raw icons for duplicate notifications (#571)
+ - Introduce new desktop-entry filter (#470)
+ - `fullscreen` rule to hide notifications when a fullscreen window is active (#472)
+ - Added `skip_display` rule option to skip initial notification display, and
+ include the notification in the history. (#590)
+ * Fixed
+ - Notification age not counting the time while the computer was suspended (#492)
+ - Dunst losing always-on-top status on a window manager restart (#160)
+ - Xpm icons not being recognized
+ - When new notifications arrive, but display is full, important notifications don't
+ have to wait for a timeout in a displayed notification (#541)
+ - Dunst hanging while the context menu is open (#456)
+ - Having & inside a notification breaking markup (#546)
+ - `<I> more` notifications don't occupy space anymore, if there is only a single
+ notification waiting to get displayed. The notification gets displayed directly (#467)
+ - Segfault when comparing icon name with a notification with a raw icon (#536)
+ - Icon size can no longer be larger than the notification when a fixed width is specified (#540)
+ * Changed
+ - Transient notifications no longer skip history by default (#508)
+ - The notification summary no longer accepts markup (#497)
+ * Removed
+ - Dependency on libxdg-basedir (#550)
+- Update makefile.patch to be compatible with latest version
+- Build and install dunstify binary, command which is completely compatible to notify-send
+ and can be used alongside it, but offers more features.
+-------------------------------------------------------------------
Old:
----
dunst-1.3.2.tar.gz
New:
----
dunst-1.4.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ dunst.spec ++++++
--- /var/tmp/diff_new_pack.CtxMhH/_old 2019-06-01 09:47:24.123367256 +0200
+++ /var/tmp/diff_new_pack.CtxMhH/_new 2019-06-01 09:47:24.135367252 +0200
@@ -1,7 +1,7 @@
#
# spec file for package dunst
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -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 http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{!?_userunitdir:%define _userunitdir %{_prefix}/lib/systemd/user}
Name: dunst
-Version: 1.3.2
+Version: 1.4.0
Release: 0
Summary: A customizable notification daemon
License: BSD-3-Clause
@@ -34,7 +34,6 @@
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(libnotify)
-BuildRequires: pkgconfig(libxdg-basedir)
BuildRequires: pkgconfig(pango)
BuildRequires: pkgconfig(pangocairo)
BuildRequires: pkgconfig(x11)
@@ -51,10 +50,11 @@
%patch0 -p1
%build
-CFLAGS="%{optflags}" make %{?_smp_mflags}
+CFLAGS="%{optflags}" make %{?_smp_mflags} all dunstify
%install
%make_install PREFIX=%{_prefix}
+install -Dm755 dunstify %{buildroot}%{_bindir}/dunstify
sed -i -e 's/Exec.*/Exec=\/usr\/bin\/dunst/' %{buildroot}/%{_datadir}/dbus-1/services/org.knopwob.dunst.service
sed -i -e 's/ExecStart.*/ExecStart=\/usr\/bin\/dunst/' %{buildroot}/%{_userunitdir}/dunst.service
@@ -63,6 +63,7 @@
%doc CHANGELOG.md README.md
%license LICENSE
%{_bindir}/dunst
+%{_bindir}/dunstify
%{_datadir}/dbus-1/services/org.knopwob.dunst.service
%{_userunitdir}/dunst.service
%{_datadir}/dunst
++++++ dunst-1.3.2.tar.gz -> dunst-1.4.0.tar.gz ++++++
++++ 14472 lines of diff (skipped)
++++++ makefile.patch ++++++
--- /var/tmp/diff_new_pack.CtxMhH/_old 2019-06-01 09:47:24.539367114 +0200
+++ /var/tmp/diff_new_pack.CtxMhH/_new 2019-06-01 09:47:24.539367114 +0200
@@ -1,15 +1,15 @@
-Index: dunst-1.3.1/Makefile
+Index: dunst-1.4.0/Makefile
===================================================================
---- dunst-1.3.1.orig/Makefile
-+++ dunst-1.3.1/Makefile
-@@ -8,30 +8,7 @@ ifneq ($(wildcard ./.git/.),)
- VERSION := $(shell git describe --tags)
+--- dunst-1.4.0.orig/Makefile
++++ dunst-1.4.0/Makefile
+@@ -8,30 +8,7 @@ ifneq ($(wildcard ./.git/),)
+ VERSION := $(shell ${GIT} describe --tags)
endif
-ifeq (,${SYSTEMD})
-# Check for systemctl to avoid discrepancies on systems, where
--# systemd is installed, but systemd.pc is in another package
--systemctl := $(shell command -v systemctl >/dev/null && echo systemctl)
+-# systemd is installed, but systemd.pc is in another package
+-systemctl := $(shell command -v ${SYSTEMCTL} >/dev/null && echo systemctl)
-ifeq (systemctl,${systemctl})
SYSTEMD := 1
-else
@@ -17,23 +17,23 @@
-endif
-endif
-
--SERVICEDIR_DBUS ?= $(shell pkg-config dbus-1 --variable=session_bus_services_dir)
+-SERVICEDIR_DBUS ?= $(shell $(PKG_CONFIG) dbus-1 --variable=session_bus_services_dir)
-SERVICEDIR_DBUS := ${SERVICEDIR_DBUS}
-ifeq (,${SERVICEDIR_DBUS})
--$(error "Failed to query pkg-config for package 'dbus-1'!")
+-$(error "Failed to query $(PKG_CONFIG) for package 'dbus-1'!")
-endif
-
-ifneq (0,${SYSTEMD})
--SERVICEDIR_SYSTEMD ?= $(shell pkg-config systemd --variable=systemduserunitdir)
+-SERVICEDIR_SYSTEMD ?= $(shell $(PKG_CONFIG) systemd --variable=systemduserunitdir)
-SERVICEDIR_SYSTEMD := ${SERVICEDIR_SYSTEMD}
-ifeq (,${SERVICEDIR_SYSTEMD})
--$(error "Failed to query pkg-config for package 'systemd'!")
+-$(error "Failed to query $(PKG_CONFIG) for package 'systemd'!")
-endif
-endif
- LIBS := $(shell pkg-config --libs ${pkg_config_packs})
- INCS := $(shell pkg-config --cflags ${pkg_config_packs})
-@@ -134,11 +111,12 @@ install-doc:
+ LIBS := $(shell $(PKG_CONFIG) --libs ${pkg_config_packs})
+ INCS := $(shell $(PKG_CONFIG) --cflags ${pkg_config_packs})
+@@ -165,11 +142,12 @@ install-doc:
install-service: install-service-dbus
install-service-dbus: service-dbus
1
0