From 7157af3efbd2820d4f219cc2bcc6b62355e97d22 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Wed, 26 Jun 2024 21:00:39 -0400 Subject: [PATCH 01/57] adds a start --- resources/navbar.scss | 2 +- resources/quotes.json | 70 ++++++++++++ resources/ranks.scss | 11 ++ resources/search.scss | 35 ++++++ resources/widgets.scss | 12 +- robots.txt | 1 + templates/base.html | 5 +- templates/contest/ics3u_report.html | 108 ++++++++++++++++++ templates/problem/manage_submission.html | 4 +- .../registration/password_reset_email.html | 2 +- templates/site-logo-fragment.html | 2 +- templates/user/base-users-table.html | 10 ++ 12 files changed, 248 insertions(+), 14 deletions(-) create mode 100644 resources/quotes.json create mode 100644 resources/search.scss create mode 100644 templates/contest/ics3u_report.html diff --git a/resources/navbar.scss b/resources/navbar.scss index 38c76ccfd2..d849674a5b 100644 --- a/resources/navbar.scss +++ b/resources/navbar.scss @@ -13,7 +13,7 @@ min-height: 100%; align-items: center; white-space: nowrap; - color: #5c5954; + color: #8484ba; a { color: #FFF; diff --git a/resources/quotes.json b/resources/quotes.json new file mode 100644 index 0000000000..d7ea3286de --- /dev/null +++ b/resources/quotes.json @@ -0,0 +1,70 @@ +[ + { + "quote": "<a href=\"https://youtu.be/dQw4w9WgXcQ\">Click Me!</a>", + "tooltip": "Did you click yet?" + }, + { + "quote": "A leader leads by example not by force.", + "tooltip": "Sun Tzu said that!" + }, + { + "quote": "All warfare is based on deception.", + "tooltip": "Sun Tzu said that!" + }, + { + "quote": "An eye for an eye makes the whole world blind.", + "tooltip": "Mohandas Gandhi" + }, + { + "quote": "Avidly exploring a more thrilling side to coding!", + "tooltip": "Nayaab, 2020" + }, + { + "quote": "BTW I use arch.", + "tooltip": null + }, + { + "quote": "Don't fear the OOP!", + "tooltip": null + }, + { + "quote": ":hudab:", + "tooltip": ":hudabbutbetter:" + }, + { + "quote": "Introducing weekly TEJ contests!", + "tooltip": "ENG2D and ENG3U contests are next!" + }, + { + "quote": "Opportunities multiply as they are seized.", + "tooltip": "Sun Tzu said that!" + }, + { + "quote": "Powered by PHP!", + "tooltip": null + }, + { + "quote": "Pretend inferiority and encourage his arrogance.", + "tooltip": "Sun Tzu said that!" + }, + { + "quote": "Real programmers count from zero.", + "tooltip": "Unless you use turing." + }, + { + "quote": "To know your Enemy, you must become your Enemy.", + "tooltip": "Sun Tzu said that!" + }, + { + "quote": "Turing > Ruby > C > Java > C++ > Python", + "tooltip": "C > Python > Ruby > Java > C++ > Turing" + }, + { + "quote": "Your Advertisement Here", + "tooltip": "Contact /dev/null" + }, + { + "quote": "¯\\_(ツ)_/¯", + "tooltip": "🤷" + } +] diff --git a/resources/ranks.scss b/resources/ranks.scss index 168fab2f66..29d3e24d67 100644 --- a/resources/ranks.scss +++ b/resources/ranks.scss @@ -124,3 +124,14 @@ svg.rate-box { vertical-align: middle; } } + + +.alumnus a, .alumnus { + color: #009acd !important; + font-weight: bold !important; +} + +.president a, .president { + color: #bc0000 !important; + font-weight: bold !important; +} diff --git a/resources/search.scss b/resources/search.scss new file mode 100644 index 0000000000..2e111f5194 --- /dev/null +++ b/resources/search.scss @@ -0,0 +1,35 @@ +#filter-form { + vertical-align: top; + margin-bottom: 0.5em; + margin-top: 0.75em; + + a { + margin-right: 5px; + display: inline-block; + padding: 3px 10px; + vertical-align: middle; + } + + input { + vertical-align: middle; + margin-bottom: 0.5em; + } + + label { + vertical-align: middle; + } + + .filter-form-group { + margin-top: 5px; + } + + .form-label { + margin-top: 0.5em; + font-style: italic; + } +} + +#search { + width: 100%; + height: 2.3em; +} diff --git a/resources/widgets.scss b/resources/widgets.scss index 9605b224a2..3963b308af 100644 --- a/resources/widgets.scss +++ b/resources/widgets.scss @@ -32,24 +32,24 @@ font-weight: 400; line-height: 1.4; background: rgb(51, 122, 183) none repeat scroll 0 (0% / auto) padding-box border-box; - background: -webkit-linear-gradient(top, #337ab7 0, #265a88 100%) repeat-x; - background: linear-gradient(to bottom, #337ab7 0, #265a88 100%) repeat-x; + background: -webkit-linear-gradient(top, #4547c8 0, #293095 100%) repeat-x; + background: linear-gradient(to bottom, #4547c8 0, #293095 100%) repeat-x; border-radius: $widget_border_radius; padding: 6px 12px; display: block; - border: 1px solid #245580; + border: 1px solid #333ba8; text-align: center; // 4k hack font-size: $base_font_size; &:hover { - background: #265a88; + background: #3038a8; } &:active { - border-color: #245580; - background: #265a88; + border-color: #4547c8; + background: #3038a8; } &.full { diff --git a/robots.txt b/robots.txt index 5bc2eec150..341d59098f 100644 --- a/robots.txt +++ b/robots.txt @@ -11,6 +11,7 @@ Disallow: /contest/*/moss Disallow: /contest/*/participation Disallow: /contest/*/participations Disallow: /contest/*/rank +Disallow: /contest/*/register Disallow: /contests/tag Disallow: /contest/*/stats Disallow: /contest/*/submissions diff --git a/templates/base.html b/templates/base.html index c866ab3568..7937059579 100644 --- a/templates/base.html +++ b/templates/base.html @@ -25,10 +25,10 @@ <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96"> <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"> <link rel="manifest" href="/manifest.json"> - <meta name="msapplication-TileColor" content="#FFBB33"> + <meta name="msapplication-TileColor" content="#3737B4"> <meta name="msapplication-TileImage" content="/mstile-144x144.png"> {# Chrome 39 for Android colour #} - <meta name="theme-color" content="#FFBB33"> + <meta name="theme-color" content="#3737B4"> {% if og_image %} <meta property="og:image" content="{{ request.build_absolute_uri(og_image) }}"> {% endif %} @@ -290,7 +290,6 @@ <h2 style="display:inline"> <footer> <span id="footer-content"> <br> - <a style="color: #808080" href="https://dmoj.ca">{{ _('proudly powered by **DMOJ**')|markdown('default', strip_paragraphs=True) }}</a> | {% if misc_config.footer %} {{ misc_config.footer|safe }} | {% endif %} diff --git a/templates/contest/ics3u_report.html b/templates/contest/ics3u_report.html new file mode 100644 index 0000000000..ca94053817 --- /dev/null +++ b/templates/contest/ics3u_report.html @@ -0,0 +1,108 @@ +<!DOCTYPE html> +<html> +<head> + <link rel="stylesheet" href="style.css"> + <link rel="stylesheet" href="pygment-github.css" type="text/css"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <style> + html { + background: white; + } + + body { + page-break-after: always; + background: white; + } + + * { + font-family: sans-serif; + } + + table { + border-collapse: collapse; + width: 100%; + } + + td, th { + border: 1px solid #dddddd; + text-align: left; + padding: 8px; + } + + tr:nth-child(even) { + background-color: #dddddd; + } + </style> +</head> + +<body> +<h2>{{ contest.name }} ({{ contest.key }}) {% if teacher != None %} - {{ teacher.name }}{% endif %}</h2> +<table> + <thead> + <tr> + <th>Real Name</th> + {% for problem in contest_problems %} + <th>Problem {{ loop.index }} + <div>Out of {{ problem.points }}</div> + </th> + {% endfor %} + <th>Points</th> + </tr> + </thead> + <tbody> + {{ scoreboard|safe }} + </tbody> +</table> +<br><br> +{% for contest_problem in contest_problems %} + {% with problem=contest_problem.problem, problem_name=contest_problem.problem.name, description=contest_problem.problem.description, url="" %} + <h2 style="color:#393630; display: inline-block;">{{ problem_name }}</h2> + <hr> + <div align="center" style="position: relative;"> + <div class="problem-info-entry"> + <b>{{ _('Time Limit:') }}</b> {{ problem.time_limit }}s + {% for name, limit in problem.language_time_limit %} + <div class="lang-limit"> + <span class="lang-name">{{ name }}</span> + <span>{{ limit }}s</span> + </div> + {% endfor %} + </div> + <div class="problem-info-entry"> + <b>{{ _('Memory Limit:') }}</b> {{ problem.memory_limit|kbsimpleformat }} + {% for name, limit in problem.language_memory_limit %} + <div class="lang-limit"> + <span class="lang-name">{{ name }}</span> + <span>{{ limit|kbsimpleformat }}</span> + </div> + {% endfor %} + </div> + </div> + <hr style="clear: both;"> + <div class="content-description printing"> + {{ description|markdown(problem.markdown_style, 'tex' if math_engine == 'jax' else math_engine)|reference|absolutify(url)|str|safe }} + </div> + <br> + {% if problem.solution %} + <h3>Editorial for {{ problem_name }}</h3> + <div class="content-description printing"> + {{ problem.solution.content|markdown('solution', MATH_ENGINE)|reference|str|safe }} + </div> + {% endif %} + {% endwith %} + <br> +{% endfor %} +<script type="text/javascript" src="mathjax_config.js"></script> +<script type="text/javascript" + src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS_HTML"></script> +<script type="text/javascript"> + MathJax.Hub.Register.StartupHook("End", function () { + if (typeof window.callPhantom === 'function') + window.callPhantom({ + 'action': 'snapshot' + }); + document.body.classList.add('math-loaded'); + }); +</script> +</body> +</html> \ No newline at end of file diff --git a/templates/problem/manage_submission.html b/templates/problem/manage_submission.html index 9cd3d7a385..59cf05dd14 100644 --- a/templates/problem/manage_submission.html +++ b/templates/problem/manage_submission.html @@ -19,10 +19,10 @@ .pane h3 { display: block; - background: #3b3b3b; + background: #3737B4; padding: 5px 10px 10px; margin: -10px -10px 10px; - border-radius: 5px 5px 0 0; + border-radius: 1px 1px 0 0; color: white; } diff --git a/templates/registration/password_reset_email.html b/templates/registration/password_reset_email.html index b20e8d9fa0..abc8877d22 100644 --- a/templates/registration/password_reset_email.html +++ b/templates/registration/password_reset_email.html @@ -2,7 +2,7 @@ <a href="{{ protocol }}://{{ domain }}"><img src="{{ protocol }}://{{ domain }}/static/icons/logo.svg" alt="{{ site_name }}" width="160" height="44"></a> </div></div> -<div style="border:2px solid #337ab7;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;"> +<div style="border:2px solid #F74D56;margin:4px 0;"><div style="background:#3737B4;border:12px solid #F74D56;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;"> <strong>{{ _("Forgot your password on the %(site_name)s? Don't worry!", site_name=site_name) }}</strong> <br><br> {{ _('To reset the password for your account "%(username)s", click the link below.', username=user.get_username()) }} diff --git a/templates/site-logo-fragment.html b/templates/site-logo-fragment.html index 9c14046a12..734e5a12ae 100644 --- a/templates/site-logo-fragment.html +++ b/templates/site-logo-fragment.html @@ -3,6 +3,6 @@ {% elif logo_override_image is defined and logo_override_image %} <img src="{{ logo_override_image|camo }}" alt="{{ SITE_NAME }}" height="44" style="border: none"> {% else %} - <img src="{{ static('icons/logo.svg') }}" alt="{{ SITE_NAME }}" width="160" height="44" + <img src="{{ static('icons/logo.png') }}" alt="{{ SITE_NAME }}" height="44" onerror="this.src="{{ static('icons/logo.png') }}"; this.onerror=null" style="border: none"> {% endif %} diff --git a/templates/user/base-users-table.html b/templates/user/base-users-table.html index e6fdc3e8ee..2cdf4903be 100644 --- a/templates/user/base-users-table.html +++ b/templates/user/base-users-table.html @@ -4,6 +4,10 @@ <th class="header rank">{{ rank_header or _("Rank") }}</th> {% block after_rank_head %}{% endblock %} <th class="header username">{{ _('Username') }}</th> + {% block after_username_head %}{% endblock %} + {% if perms.judge.view_name %} + <th class="header realname">{{ _('Real Name') }}</th> + {% endif %} {% block before_point_head %}{% endblock %} <th class="header points"> @@ -21,6 +25,12 @@ <td>{{ rank }}</td> {% block after_rank scoped %}{% endblock %} <td class="user-name">{{ link_user(user) }} {% block user_data scoped %}{% endblock %}</td> + {% block after_username scoped %}{% endblock %} + {% if perms.judge.view_name %} + <td class="real-name"> + {{ user.user.get_full_name() }} + </td> + {% endif %} {% block before_point scoped %}{% endblock %} {% block point scoped %} <td title="{{ user.performance_points|floatformat(2) }}" class="user-points"> From afac71d6a6d5fb881eadefe7ad27157ac947f53c Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Wed, 26 Jun 2024 23:15:11 -0400 Subject: [PATCH 02/57] moved dmoj dir --- {dmoj => wlmoj}/__init__.py | 0 {dmoj => wlmoj}/celery.py | 0 {dmoj => wlmoj}/settings.py | 0 {dmoj => wlmoj}/throttle_mail.py | 0 {dmoj => wlmoj}/wsgi.py | 0 {dmoj => wlmoj}/wsgi_async.py | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename {dmoj => wlmoj}/__init__.py (100%) rename {dmoj => wlmoj}/celery.py (100%) rename {dmoj => wlmoj}/settings.py (100%) rename {dmoj => wlmoj}/throttle_mail.py (100%) rename {dmoj => wlmoj}/wsgi.py (100%) rename {dmoj => wlmoj}/wsgi_async.py (100%) diff --git a/dmoj/__init__.py b/wlmoj/__init__.py similarity index 100% rename from dmoj/__init__.py rename to wlmoj/__init__.py diff --git a/dmoj/celery.py b/wlmoj/celery.py similarity index 100% rename from dmoj/celery.py rename to wlmoj/celery.py diff --git a/dmoj/settings.py b/wlmoj/settings.py similarity index 100% rename from dmoj/settings.py rename to wlmoj/settings.py diff --git a/dmoj/throttle_mail.py b/wlmoj/throttle_mail.py similarity index 100% rename from dmoj/throttle_mail.py rename to wlmoj/throttle_mail.py diff --git a/dmoj/wsgi.py b/wlmoj/wsgi.py similarity index 100% rename from dmoj/wsgi.py rename to wlmoj/wsgi.py diff --git a/dmoj/wsgi_async.py b/wlmoj/wsgi_async.py similarity index 100% rename from dmoj/wsgi_async.py rename to wlmoj/wsgi_async.py From eaac752085008a12387bd35d34ecb1f681597ec1 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Wed, 26 Jun 2024 23:17:21 -0400 Subject: [PATCH 03/57] add urls --- {dmoj => wlmoj}/urls.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {dmoj => wlmoj}/urls.py (100%) diff --git a/dmoj/urls.py b/wlmoj/urls.py similarity index 100% rename from dmoj/urls.py rename to wlmoj/urls.py From 3e60e93cc311bdc849b066a7d88774c6854fff82 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Wed, 26 Jun 2024 23:18:29 -0400 Subject: [PATCH 04/57] import bugs --- dmoj_celery.py | 2 +- wlmoj/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dmoj_celery.py b/dmoj_celery.py index 3f9701f17e..3cad542993 100644 --- a/dmoj_celery.py +++ b/dmoj_celery.py @@ -9,4 +9,4 @@ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings') # noinspection PyUnresolvedReferences -from dmoj.celery import app # noqa: E402, F401, imported for side effect +from wlmoj.celery import app # noqa: E402, F401, imported for side effect diff --git a/wlmoj/__init__.py b/wlmoj/__init__.py index 2ed8858db3..77f07a154b 100644 --- a/wlmoj/__init__.py +++ b/wlmoj/__init__.py @@ -1 +1 @@ -from dmoj.celery import app as celery_app +from wlmoj.celery import app as celery_app From 7d5a37793aca860b1a533d1998f4e7dd5f406002 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Wed, 26 Jun 2024 23:47:48 -0400 Subject: [PATCH 05/57] fix settings --- dmoj_bridge_async.py | 2 +- dmoj_celery.py | 2 +- manage.py | 2 +- wlmoj/wsgi.py | 2 +- wlmoj/wsgi_async.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dmoj_bridge_async.py b/dmoj_bridge_async.py index 376f8cf8d0..0a5ddb35c2 100644 --- a/dmoj_bridge_async.py +++ b/dmoj_bridge_async.py @@ -2,7 +2,7 @@ import gevent.monkey # noqa: I100, gevent must be imported here -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings') gevent.monkey.patch_all() # noinspection PyUnresolvedReferences diff --git a/dmoj_celery.py b/dmoj_celery.py index 3cad542993..fe82a88bc0 100644 --- a/dmoj_celery.py +++ b/dmoj_celery.py @@ -6,7 +6,7 @@ import dmoj_install_pymysql # noqa: F401, imported for side effect # set the default Django settings module for the 'celery' program. -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings') # noinspection PyUnresolvedReferences from wlmoj.celery import app # noqa: E402, F401, imported for side effect diff --git a/manage.py b/manage.py index adaffbd994..54f584103b 100755 --- a/manage.py +++ b/manage.py @@ -8,7 +8,7 @@ import dmoj_install_pymysql # noqa: F401, imported for side effect if __name__ == '__main__': - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings') + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings') from django.core.management import execute_from_command_line execute_from_command_line(sys.argv) diff --git a/wlmoj/wsgi.py b/wlmoj/wsgi.py index 6bec753460..25ae16c821 100644 --- a/wlmoj/wsgi.py +++ b/wlmoj/wsgi.py @@ -1,5 +1,5 @@ import os -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings') try: import MySQLdb # noqa: F401, imported for side effect diff --git a/wlmoj/wsgi_async.py b/wlmoj/wsgi_async.py index ec114d1fd8..407af8a510 100644 --- a/wlmoj/wsgi_async.py +++ b/wlmoj/wsgi_async.py @@ -2,7 +2,7 @@ import gevent.monkey # noqa: I100, gevent must be imported here -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings') gevent.monkey.patch_all() # noinspection PyUnresolvedReferences From 1d4566cfbf28863f9af3b91480614dbb0e1f9ea9 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Wed, 26 Jun 2024 23:55:21 -0400 Subject: [PATCH 06/57] some small settings --- .flake8 | 2 +- .gitignore | 4 +- judge/views/contests.py | 2 +- judge/widgets/select2.py | 2 +- locale/ar/LC_MESSAGES/django.po | 48 +++++++++---------- make_style.sh | 2 +- .../{select2-dmoj.scss => select2-wlmoj.scss} | 0 resources/style.scss | 2 +- wlmoj/settings.py | 4 +- 9 files changed, 33 insertions(+), 33 deletions(-) rename resources/{select2-dmoj.scss => select2-wlmoj.scss} (100%) diff --git a/.flake8 b/.flake8 index 55650c87fe..169fef04dd 100644 --- a/.flake8 +++ b/.flake8 @@ -23,6 +23,6 @@ per-file-ignores = ./judge/widgets/pagedown.py:E303 exclude = # belongs to the user - ./dmoj/local_settings.py, + ./wlmoj/local_settings.py, # is actually a fragment to be included by settings.py ./.ci.settings.py, diff --git a/.gitignore b/.gitignore index a755bd0f34..cf46bd9c7a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,10 +6,10 @@ *.mo *~ *.swp -dmoj/local_settings.py +wlmoj/local_settings.py resources/dark resources/martor-description.css -resources/select2-dmoj.css +resources/select2-wlmoj.css resources/style.css resources/vars.scss sass_processed diff --git a/judge/views/contests.py b/judge/views/contests.py index 25d357562a..22967b57ac 100644 --- a/judge/views/contests.py +++ b/judge/views/contests.py @@ -548,7 +548,7 @@ def get_context_data(self, **kwargs): class ContestICal(TitleMixin, ContestListMixin, BaseListView): def generate_ical(self): cal = ICalendar() - cal.add('prodid', '-//DMOJ//NONSGML Contests Calendar//') + cal.add('prodid', '-//WLMOJ//NONSGML Contests Calendar//') cal.add('version', '2.0') now = timezone.now().astimezone(timezone.utc) diff --git a/judge/widgets/select2.py b/judge/widgets/select2.py index 8ae0659851..aeb27a1b5f 100644 --- a/judge/widgets/select2.py +++ b/judge/widgets/select2.py @@ -103,7 +103,7 @@ class AdminSelect2Mixin(Select2Mixin): def media(self): return forms.Media( js=['admin/js/jquery.init.js', settings.SELECT2_JS_URL, 'django_select2.js'], - css={'screen': [settings.SELECT2_CSS_URL, 'select2-dmoj.css']}, + css={'screen': [settings.SELECT2_CSS_URL, 'select2-wlmoj.css']}, ) diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po index 6c0746b335..4f4c07d548 100644 --- a/locale/ar/LC_MESSAGES/django.po +++ b/locale/ar/LC_MESSAGES/django.po @@ -17,95 +17,95 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:395 +#: wlmoj/settings.py:395 msgid "Catalan" msgstr "الكاتالونية" -#: dmoj/settings.py:396 +#: wlmoj/settings.py:396 msgid "German" msgstr "الألمانية" -#: dmoj/settings.py:397 +#: wlmoj/settings.py:397 msgid "Greek" msgstr "" -#: dmoj/settings.py:398 +#: wlmoj/settings.py:398 msgid "English" msgstr "الانجليزية" -#: dmoj/settings.py:399 +#: wlmoj/settings.py:399 msgid "Spanish" msgstr "الإسبانية" -#: dmoj/settings.py:400 +#: wlmoj/settings.py:400 msgid "French" msgstr "الفرنسية" -#: dmoj/settings.py:401 +#: wlmoj/settings.py:401 msgid "Croatian" msgstr "الكرواتية" -#: dmoj/settings.py:402 +#: wlmoj/settings.py:402 msgid "Hungarian" msgstr "الهنغارية" -#: dmoj/settings.py:403 +#: wlmoj/settings.py:403 msgid "Japanese" msgstr "يابانية" -#: dmoj/settings.py:404 +#: wlmoj/settings.py:404 msgid "Kazakh" msgstr "" -#: dmoj/settings.py:405 +#: wlmoj/settings.py:405 msgid "Korean" msgstr "الكورية" -#: dmoj/settings.py:406 +#: wlmoj/settings.py:406 msgid "Brazilian Portuguese" msgstr "البرتغالية" -#: dmoj/settings.py:407 +#: wlmoj/settings.py:407 msgid "Romanian" msgstr "" -#: dmoj/settings.py:408 +#: wlmoj/settings.py:408 msgid "Russian" msgstr "" -#: dmoj/settings.py:409 +#: wlmoj/settings.py:409 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:410 +#: wlmoj/settings.py:410 msgid "Turkish" msgstr "" -#: dmoj/settings.py:411 +#: wlmoj/settings.py:411 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:412 +#: wlmoj/settings.py:412 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:413 +#: wlmoj/settings.py:413 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:31 +#: wlmoj/urls.py:31 msgid "Activation Successful!" msgstr "" -#: dmoj/urls.py:39 +#: wlmoj/urls.py:39 msgid "Registration Completed" msgstr "" -#: dmoj/urls.py:43 +#: wlmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "" -#: dmoj/urls.py:95 templates/base.html:193 +#: wlmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "" @@ -3956,7 +3956,7 @@ msgid "This site works best with JavaScript enabled." msgstr "" #: templates/base.html:293 -msgid "proudly powered by **DMOJ**" +msgid "proudly powered by **wlmoj**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 diff --git a/make_style.sh b/make_style.sh index f926575efc..164c625f48 100755 --- a/make_style.sh +++ b/make_style.sh @@ -20,7 +20,7 @@ build_style() { echo "Creating $1 style..." cp resources/vars-$1.scss resources/vars.scss sass resources:sass_processed - postcss sass_processed/style.css sass_processed/martor-description.css sass_processed/select2-dmoj.css --verbose --use autoprefixer -d $2 + postcss sass_processed/style.css sass_processed/martor-description.css sass_processed/select2-wlmoj.css --verbose --use autoprefixer -d $2 } build_style 'default' 'resources' diff --git a/resources/select2-dmoj.scss b/resources/select2-wlmoj.scss similarity index 100% rename from resources/select2-dmoj.scss rename to resources/select2-wlmoj.scss diff --git a/resources/style.scss b/resources/style.scss index bd206063d1..5b2fbeac5e 100644 --- a/resources/style.scss +++ b/resources/style.scss @@ -19,4 +19,4 @@ @import "submission"; @import "contest"; @import "misc"; -@import "select2-dmoj"; +@import "select2-wlmoj"; diff --git a/wlmoj/settings.py b/wlmoj/settings.py index 9c8893417a..afcef50d2e 100644 --- a/wlmoj/settings.py +++ b/wlmoj/settings.py @@ -325,9 +325,9 @@ SILENCED_SYSTEM_CHECKS = ['urls.W002', 'fields.W342'] -ROOT_URLCONF = 'dmoj.urls' +ROOT_URLCONF = 'wlmoj.urls' LOGIN_REDIRECT_URL = '/user' -WSGI_APPLICATION = 'dmoj.wsgi.application' +WSGI_APPLICATION = 'wlmoj.wsgi.application' DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' TEMPLATES = [ From 8d8ebd8eda873cecc54b01c9f5523398e3364d76 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Wed, 26 Jun 2024 23:59:07 -0400 Subject: [PATCH 07/57] update celery --- manage.py | 2 +- wlmoj/celery.py | 2 +- wlmoj/wsgi_async.py | 2 +- dmoj_bridge_async.py => wlmoj_bridge_async.py | 2 +- dmoj_celery.py => wlmoj_celery.py | 2 +- dmoj_install_pymysql.py => wlmoj_install_pymysql.py | 0 6 files changed, 5 insertions(+), 5 deletions(-) rename dmoj_bridge_async.py => wlmoj_bridge_async.py (83%) rename dmoj_celery.py => wlmoj_celery.py (82%) rename dmoj_install_pymysql.py => wlmoj_install_pymysql.py (100%) diff --git a/manage.py b/manage.py index 54f584103b..cc1640d5f6 100755 --- a/manage.py +++ b/manage.py @@ -5,7 +5,7 @@ try: import MySQLdb # noqa: F401, imported for side effect except ImportError: - import dmoj_install_pymysql # noqa: F401, imported for side effect + import wlmoj_install_pymysql # noqa: F401, imported for side effect if __name__ == '__main__': os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings') diff --git a/wlmoj/celery.py b/wlmoj/celery.py index e1da640642..d220ab639c 100644 --- a/wlmoj/celery.py +++ b/wlmoj/celery.py @@ -4,7 +4,7 @@ from celery import Celery from celery.signals import task_failure -app = Celery('dmoj') +app = Celery('wlmoj') from django.conf import settings # noqa: E402, I202, django must be imported here app.config_from_object(settings, namespace='CELERY') diff --git a/wlmoj/wsgi_async.py b/wlmoj/wsgi_async.py index 407af8a510..c7227f7920 100644 --- a/wlmoj/wsgi_async.py +++ b/wlmoj/wsgi_async.py @@ -6,7 +6,7 @@ gevent.monkey.patch_all() # noinspection PyUnresolvedReferences -import dmoj_install_pymysql # noqa: E402, F401, I100, I202, imported for side effect +import wlmoj_install_pymysql # noqa: E402, F401, I100, I202, imported for side effect from django.core.wsgi import get_wsgi_application # noqa: E402, I100, I202, django must be imported here application = get_wsgi_application() diff --git a/dmoj_bridge_async.py b/wlmoj_bridge_async.py similarity index 83% rename from dmoj_bridge_async.py rename to wlmoj_bridge_async.py index 0a5ddb35c2..97c6b1f9f9 100644 --- a/dmoj_bridge_async.py +++ b/wlmoj_bridge_async.py @@ -6,7 +6,7 @@ gevent.monkey.patch_all() # noinspection PyUnresolvedReferences -import dmoj_install_pymysql # noqa: E402, F401, I100, I202, imported for side effect +import wlmoj_install_pymysql # noqa: E402, F401, I100, I202, imported for side effect import django # noqa: E402, F401, I100, I202, django must be imported here django.setup() diff --git a/dmoj_celery.py b/wlmoj_celery.py similarity index 82% rename from dmoj_celery.py rename to wlmoj_celery.py index fe82a88bc0..ac4e391b1f 100644 --- a/dmoj_celery.py +++ b/wlmoj_celery.py @@ -3,7 +3,7 @@ try: import MySQLdb # noqa: F401, imported for side effect except ImportError: - import dmoj_install_pymysql # noqa: F401, imported for side effect + import wlmoj_install_pymysql # noqa: F401, imported for side effect # set the default Django settings module for the 'celery' program. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings') diff --git a/dmoj_install_pymysql.py b/wlmoj_install_pymysql.py similarity index 100% rename from dmoj_install_pymysql.py rename to wlmoj_install_pymysql.py From a62f666268b7b0a8446e3af658d06e8d58c65056 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Thu, 27 Jun 2024 00:42:30 -0400 Subject: [PATCH 08/57] update ci --- .github/workflows/build.yml | 2 +- .github/workflows/compilemessages.yml | 2 +- .github/workflows/makemessages.yml | 2 +- .github/workflows/updatemessages.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 56333b47a6..3d4d1e86f2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,7 +33,7 @@ jobs: pip install wheel pip install -r requirements.txt pip install mysqlclient coverage - cp .ci.settings.py dmoj/local_settings.py + cp .ci.settings.py wlmoj/local_settings.py - name: Start MySQL run: sudo systemctl start mysql.service - name: Run unit tests diff --git a/.github/workflows/compilemessages.yml b/.github/workflows/compilemessages.yml index 106b353fbe..11926f335f 100644 --- a/.github/workflows/compilemessages.yml +++ b/.github/workflows/compilemessages.yml @@ -36,5 +36,5 @@ jobs: shell: bash - name: Compile messages run: | - echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py + echo "STATIC_ROOT = '/tmp'" > wlmoj/local_settings.py python manage.py compilemessages diff --git a/.github/workflows/makemessages.yml b/.github/workflows/makemessages.yml index c5bd6aef41..d02afb5701 100644 --- a/.github/workflows/makemessages.yml +++ b/.github/workflows/makemessages.yml @@ -25,7 +25,7 @@ jobs: pip install pymysql - name: Collect localizable strings run: | - echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py + echo "STATIC_ROOT = '/tmp'" > wlmoj/local_settings.py python manage.py makemessages -l en -e py,html,txt python manage.py makemessages -l en -d djangojs - name: Upload strings to Crowdin diff --git a/.github/workflows/updatemessages.yml b/.github/workflows/updatemessages.yml index 1c56045a8c..f767200f11 100644 --- a/.github/workflows/updatemessages.yml +++ b/.github/workflows/updatemessages.yml @@ -27,7 +27,7 @@ jobs: pip install pymysql - name: Update English source strings run: | - echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py + echo "STATIC_ROOT = '/tmp'" > wlmoj/local_settings.py python manage.py makemessages -l en -e py,html,txt python manage.py makemessages -l en -d djangojs - name: Download strings from Crowdin From d41de10d59e207723ea98a557ab9994370ae645b Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Thu, 27 Jun 2024 23:27:22 -0400 Subject: [PATCH 09/57] Feat: Docker Swarm! undo some bad changed + additional renaming --- .flake8 | 2 +- .github/workflows/build.yml | 2 +- .github/workflows/compilemessages.yml | 2 +- .github/workflows/makemessages.yml | 2 +- .github/workflows/updatemessages.yml | 2 +- .gitignore | 4 +- dmoj/__init__.py | 1 + {wlmoj => dmoj}/celery.py | 2 +- {wlmoj => dmoj}/settings.py | 4 +- {wlmoj => dmoj}/throttle_mail.py | 0 {wlmoj => dmoj}/urls.py | 0 {wlmoj => dmoj}/wsgi.py | 2 +- {wlmoj => dmoj}/wsgi_async.py | 4 +- wlmoj_bridge_async.py => dmoj_bridge_async.py | 4 +- dmoj_celery.py | 12 +++++ ...tall_pymysql.py => dmoj_install_pymysql.py | 0 judge/widgets/select2.py | 2 +- locale/ar/LC_MESSAGES/django.po | 46 +++++++++---------- make_style.sh | 2 +- manage.py | 4 +- .../{select2-wlmoj.scss => select2-dmoj.scss} | 0 resources/style.scss | 2 +- wlmoj/__init__.py | 1 - wlmoj_celery.py | 12 ----- 24 files changed, 56 insertions(+), 56 deletions(-) create mode 100644 dmoj/__init__.py rename {wlmoj => dmoj}/celery.py (97%) rename {wlmoj => dmoj}/settings.py (99%) rename {wlmoj => dmoj}/throttle_mail.py (100%) rename {wlmoj => dmoj}/urls.py (100%) rename {wlmoj => dmoj}/wsgi.py (80%) rename {wlmoj => dmoj}/wsgi_async.py (65%) rename wlmoj_bridge_async.py => dmoj_bridge_async.py (71%) create mode 100644 dmoj_celery.py rename wlmoj_install_pymysql.py => dmoj_install_pymysql.py (100%) rename resources/{select2-wlmoj.scss => select2-dmoj.scss} (100%) delete mode 100644 wlmoj/__init__.py delete mode 100644 wlmoj_celery.py diff --git a/.flake8 b/.flake8 index 169fef04dd..55650c87fe 100644 --- a/.flake8 +++ b/.flake8 @@ -23,6 +23,6 @@ per-file-ignores = ./judge/widgets/pagedown.py:E303 exclude = # belongs to the user - ./wlmoj/local_settings.py, + ./dmoj/local_settings.py, # is actually a fragment to be included by settings.py ./.ci.settings.py, diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3d4d1e86f2..56333b47a6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,7 +33,7 @@ jobs: pip install wheel pip install -r requirements.txt pip install mysqlclient coverage - cp .ci.settings.py wlmoj/local_settings.py + cp .ci.settings.py dmoj/local_settings.py - name: Start MySQL run: sudo systemctl start mysql.service - name: Run unit tests diff --git a/.github/workflows/compilemessages.yml b/.github/workflows/compilemessages.yml index 11926f335f..106b353fbe 100644 --- a/.github/workflows/compilemessages.yml +++ b/.github/workflows/compilemessages.yml @@ -36,5 +36,5 @@ jobs: shell: bash - name: Compile messages run: | - echo "STATIC_ROOT = '/tmp'" > wlmoj/local_settings.py + echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py python manage.py compilemessages diff --git a/.github/workflows/makemessages.yml b/.github/workflows/makemessages.yml index d02afb5701..c5bd6aef41 100644 --- a/.github/workflows/makemessages.yml +++ b/.github/workflows/makemessages.yml @@ -25,7 +25,7 @@ jobs: pip install pymysql - name: Collect localizable strings run: | - echo "STATIC_ROOT = '/tmp'" > wlmoj/local_settings.py + echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py python manage.py makemessages -l en -e py,html,txt python manage.py makemessages -l en -d djangojs - name: Upload strings to Crowdin diff --git a/.github/workflows/updatemessages.yml b/.github/workflows/updatemessages.yml index f767200f11..1c56045a8c 100644 --- a/.github/workflows/updatemessages.yml +++ b/.github/workflows/updatemessages.yml @@ -27,7 +27,7 @@ jobs: pip install pymysql - name: Update English source strings run: | - echo "STATIC_ROOT = '/tmp'" > wlmoj/local_settings.py + echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py python manage.py makemessages -l en -e py,html,txt python manage.py makemessages -l en -d djangojs - name: Download strings from Crowdin diff --git a/.gitignore b/.gitignore index cf46bd9c7a..a755bd0f34 100644 --- a/.gitignore +++ b/.gitignore @@ -6,10 +6,10 @@ *.mo *~ *.swp -wlmoj/local_settings.py +dmoj/local_settings.py resources/dark resources/martor-description.css -resources/select2-wlmoj.css +resources/select2-dmoj.css resources/style.css resources/vars.scss sass_processed diff --git a/dmoj/__init__.py b/dmoj/__init__.py new file mode 100644 index 0000000000..2ed8858db3 --- /dev/null +++ b/dmoj/__init__.py @@ -0,0 +1 @@ +from dmoj.celery import app as celery_app diff --git a/wlmoj/celery.py b/dmoj/celery.py similarity index 97% rename from wlmoj/celery.py rename to dmoj/celery.py index d220ab639c..e1da640642 100644 --- a/wlmoj/celery.py +++ b/dmoj/celery.py @@ -4,7 +4,7 @@ from celery import Celery from celery.signals import task_failure -app = Celery('wlmoj') +app = Celery('dmoj') from django.conf import settings # noqa: E402, I202, django must be imported here app.config_from_object(settings, namespace='CELERY') diff --git a/wlmoj/settings.py b/dmoj/settings.py similarity index 99% rename from wlmoj/settings.py rename to dmoj/settings.py index afcef50d2e..9c8893417a 100644 --- a/wlmoj/settings.py +++ b/dmoj/settings.py @@ -325,9 +325,9 @@ SILENCED_SYSTEM_CHECKS = ['urls.W002', 'fields.W342'] -ROOT_URLCONF = 'wlmoj.urls' +ROOT_URLCONF = 'dmoj.urls' LOGIN_REDIRECT_URL = '/user' -WSGI_APPLICATION = 'wlmoj.wsgi.application' +WSGI_APPLICATION = 'dmoj.wsgi.application' DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' TEMPLATES = [ diff --git a/wlmoj/throttle_mail.py b/dmoj/throttle_mail.py similarity index 100% rename from wlmoj/throttle_mail.py rename to dmoj/throttle_mail.py diff --git a/wlmoj/urls.py b/dmoj/urls.py similarity index 100% rename from wlmoj/urls.py rename to dmoj/urls.py diff --git a/wlmoj/wsgi.py b/dmoj/wsgi.py similarity index 80% rename from wlmoj/wsgi.py rename to dmoj/wsgi.py index 25ae16c821..6bec753460 100644 --- a/wlmoj/wsgi.py +++ b/dmoj/wsgi.py @@ -1,5 +1,5 @@ import os -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings') try: import MySQLdb # noqa: F401, imported for side effect diff --git a/wlmoj/wsgi_async.py b/dmoj/wsgi_async.py similarity index 65% rename from wlmoj/wsgi_async.py rename to dmoj/wsgi_async.py index c7227f7920..ec114d1fd8 100644 --- a/wlmoj/wsgi_async.py +++ b/dmoj/wsgi_async.py @@ -2,11 +2,11 @@ import gevent.monkey # noqa: I100, gevent must be imported here -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings') gevent.monkey.patch_all() # noinspection PyUnresolvedReferences -import wlmoj_install_pymysql # noqa: E402, F401, I100, I202, imported for side effect +import dmoj_install_pymysql # noqa: E402, F401, I100, I202, imported for side effect from django.core.wsgi import get_wsgi_application # noqa: E402, I100, I202, django must be imported here application = get_wsgi_application() diff --git a/wlmoj_bridge_async.py b/dmoj_bridge_async.py similarity index 71% rename from wlmoj_bridge_async.py rename to dmoj_bridge_async.py index 97c6b1f9f9..376f8cf8d0 100644 --- a/wlmoj_bridge_async.py +++ b/dmoj_bridge_async.py @@ -2,11 +2,11 @@ import gevent.monkey # noqa: I100, gevent must be imported here -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings') gevent.monkey.patch_all() # noinspection PyUnresolvedReferences -import wlmoj_install_pymysql # noqa: E402, F401, I100, I202, imported for side effect +import dmoj_install_pymysql # noqa: E402, F401, I100, I202, imported for side effect import django # noqa: E402, F401, I100, I202, django must be imported here django.setup() diff --git a/dmoj_celery.py b/dmoj_celery.py new file mode 100644 index 0000000000..3f9701f17e --- /dev/null +++ b/dmoj_celery.py @@ -0,0 +1,12 @@ +import os + +try: + import MySQLdb # noqa: F401, imported for side effect +except ImportError: + import dmoj_install_pymysql # noqa: F401, imported for side effect + +# set the default Django settings module for the 'celery' program. +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings') + +# noinspection PyUnresolvedReferences +from dmoj.celery import app # noqa: E402, F401, imported for side effect diff --git a/wlmoj_install_pymysql.py b/dmoj_install_pymysql.py similarity index 100% rename from wlmoj_install_pymysql.py rename to dmoj_install_pymysql.py diff --git a/judge/widgets/select2.py b/judge/widgets/select2.py index aeb27a1b5f..8ae0659851 100644 --- a/judge/widgets/select2.py +++ b/judge/widgets/select2.py @@ -103,7 +103,7 @@ class AdminSelect2Mixin(Select2Mixin): def media(self): return forms.Media( js=['admin/js/jquery.init.js', settings.SELECT2_JS_URL, 'django_select2.js'], - css={'screen': [settings.SELECT2_CSS_URL, 'select2-wlmoj.css']}, + css={'screen': [settings.SELECT2_CSS_URL, 'select2-dmoj.css']}, ) diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po index 4f4c07d548..956be3e653 100644 --- a/locale/ar/LC_MESSAGES/django.po +++ b/locale/ar/LC_MESSAGES/django.po @@ -17,95 +17,95 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: wlmoj/settings.py:395 +#: dmoj/settings.py:395 msgid "Catalan" msgstr "الكاتالونية" -#: wlmoj/settings.py:396 +#: dmoj/settings.py:396 msgid "German" msgstr "الألمانية" -#: wlmoj/settings.py:397 +#: dmoj/settings.py:397 msgid "Greek" msgstr "" -#: wlmoj/settings.py:398 +#: dmoj/settings.py:398 msgid "English" msgstr "الانجليزية" -#: wlmoj/settings.py:399 +#: dmoj/settings.py:399 msgid "Spanish" msgstr "الإسبانية" -#: wlmoj/settings.py:400 +#: dmoj/settings.py:400 msgid "French" msgstr "الفرنسية" -#: wlmoj/settings.py:401 +#: dmoj/settings.py:401 msgid "Croatian" msgstr "الكرواتية" -#: wlmoj/settings.py:402 +#: dmoj/settings.py:402 msgid "Hungarian" msgstr "الهنغارية" -#: wlmoj/settings.py:403 +#: dmoj/settings.py:403 msgid "Japanese" msgstr "يابانية" -#: wlmoj/settings.py:404 +#: dmoj/settings.py:404 msgid "Kazakh" msgstr "" -#: wlmoj/settings.py:405 +#: dmoj/settings.py:405 msgid "Korean" msgstr "الكورية" -#: wlmoj/settings.py:406 +#: dmoj/settings.py:406 msgid "Brazilian Portuguese" msgstr "البرتغالية" -#: wlmoj/settings.py:407 +#: dmoj/settings.py:407 msgid "Romanian" msgstr "" -#: wlmoj/settings.py:408 +#: dmoj/settings.py:408 msgid "Russian" msgstr "" -#: wlmoj/settings.py:409 +#: dmoj/settings.py:409 msgid "Serbian (Latin)" msgstr "" -#: wlmoj/settings.py:410 +#: dmoj/settings.py:410 msgid "Turkish" msgstr "" -#: wlmoj/settings.py:411 +#: dmoj/settings.py:411 msgid "Vietnamese" msgstr "" -#: wlmoj/settings.py:412 +#: dmoj/settings.py:412 msgid "Simplified Chinese" msgstr "" -#: wlmoj/settings.py:413 +#: dmoj/settings.py:413 msgid "Traditional Chinese" msgstr "" -#: wlmoj/urls.py:31 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "" -#: wlmoj/urls.py:39 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "" -#: wlmoj/urls.py:43 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "" -#: wlmoj/urls.py:95 templates/base.html:193 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "" diff --git a/make_style.sh b/make_style.sh index 164c625f48..f926575efc 100755 --- a/make_style.sh +++ b/make_style.sh @@ -20,7 +20,7 @@ build_style() { echo "Creating $1 style..." cp resources/vars-$1.scss resources/vars.scss sass resources:sass_processed - postcss sass_processed/style.css sass_processed/martor-description.css sass_processed/select2-wlmoj.css --verbose --use autoprefixer -d $2 + postcss sass_processed/style.css sass_processed/martor-description.css sass_processed/select2-dmoj.css --verbose --use autoprefixer -d $2 } build_style 'default' 'resources' diff --git a/manage.py b/manage.py index cc1640d5f6..adaffbd994 100755 --- a/manage.py +++ b/manage.py @@ -5,10 +5,10 @@ try: import MySQLdb # noqa: F401, imported for side effect except ImportError: - import wlmoj_install_pymysql # noqa: F401, imported for side effect + import dmoj_install_pymysql # noqa: F401, imported for side effect if __name__ == '__main__': - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings') + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings') from django.core.management import execute_from_command_line execute_from_command_line(sys.argv) diff --git a/resources/select2-wlmoj.scss b/resources/select2-dmoj.scss similarity index 100% rename from resources/select2-wlmoj.scss rename to resources/select2-dmoj.scss diff --git a/resources/style.scss b/resources/style.scss index 5b2fbeac5e..bd206063d1 100644 --- a/resources/style.scss +++ b/resources/style.scss @@ -19,4 +19,4 @@ @import "submission"; @import "contest"; @import "misc"; -@import "select2-wlmoj"; +@import "select2-dmoj"; diff --git a/wlmoj/__init__.py b/wlmoj/__init__.py deleted file mode 100644 index 77f07a154b..0000000000 --- a/wlmoj/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from wlmoj.celery import app as celery_app diff --git a/wlmoj_celery.py b/wlmoj_celery.py deleted file mode 100644 index ac4e391b1f..0000000000 --- a/wlmoj_celery.py +++ /dev/null @@ -1,12 +0,0 @@ -import os - -try: - import MySQLdb # noqa: F401, imported for side effect -except ImportError: - import wlmoj_install_pymysql # noqa: F401, imported for side effect - -# set the default Django settings module for the 'celery' program. -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings') - -# noinspection PyUnresolvedReferences -from wlmoj.celery import app # noqa: E402, F401, imported for side effect From 7c0632dfaedc98f8f74d836b17ee8ff155c7d894 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Thu, 27 Jun 2024 23:54:44 -0400 Subject: [PATCH 10/57] Add discord_integration to reqs --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 6aa8548128..61aa80b13b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -40,3 +40,4 @@ django-admin-sortable2<2 icalendar # This is a celery dependency whose latest major version is breaking everything. importlib-metadata<5 +django-discord-integration From 2b715101a62eb2304aeab096cb4a9420784610aa Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Fri, 28 Jun 2024 00:13:29 -0400 Subject: [PATCH 11/57] move where discord int is installed --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 61aa80b13b..6aa8548128 100644 --- a/requirements.txt +++ b/requirements.txt @@ -40,4 +40,3 @@ django-admin-sortable2<2 icalendar # This is a celery dependency whose latest major version is breaking everything. importlib-metadata<5 -django-discord-integration From 9fd74fbebce84db95f326be0cfd0be33562ea40d Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Fri, 28 Jun 2024 00:13:29 -0400 Subject: [PATCH 12/57] add old icon --- requirements.txt | 1 - resources/icons/old.png | Bin 0 -> 19843 bytes 2 files changed, 1 deletion(-) create mode 100644 resources/icons/old.png diff --git a/requirements.txt b/requirements.txt index 61aa80b13b..6aa8548128 100644 --- a/requirements.txt +++ b/requirements.txt @@ -40,4 +40,3 @@ django-admin-sortable2<2 icalendar # This is a celery dependency whose latest major version is breaking everything. importlib-metadata<5 -django-discord-integration diff --git a/resources/icons/old.png b/resources/icons/old.png new file mode 100644 index 0000000000000000000000000000000000000000..c894f6b5bd1b0c8b4e7e0571a8c949175a52520a GIT binary patch literal 19843 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 E1?dhs9{>OV literal 0 HcmV?d00001 From 35c3900c5ed598bac2cd5788513ab3983f5ad47e Mon Sep 17 00:00:00 2001 From: JojoTheWarrior <blahblahblah123toronto@gmail.com> Date: Sat, 29 Jun 2024 15:13:41 -0400 Subject: [PATCH 13/57] add venv to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index a755bd0f34..1a0f3ac70f 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ resources/select2-dmoj.css resources/style.css resources/vars.scss sass_processed +venv +dmojsite \ No newline at end of file From 4b7bb32c31bf77b5451d0c8393e8a779bb87dc29 Mon Sep 17 00:00:00 2001 From: JojoTheWarrior <blahblahblah123toronto@gmail.com> Date: Sat, 29 Jun 2024 15:28:02 -0400 Subject: [PATCH 14/57] add venv i --- "\357\200\274desired bridge log path\357\200\276" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "\357\200\274desired bridge log path\357\200\276" diff --git "a/\357\200\274desired bridge log path\357\200\276" "b/\357\200\274desired bridge log path\357\200\276" new file mode 100644 index 0000000000..e69de29bb2 From 0158f50e2f9428c8c3c8edc4ae73050f43911447 Mon Sep 17 00:00:00 2001 From: JojoTheWarrior <blahblahblah123toronto@gmail.com> Date: Sat, 29 Jun 2024 15:30:02 -0400 Subject: [PATCH 15/57] updated ignore --- .gitignore | 3 ++- "\357\200\274desired bridge log path\357\200\276" | 0 2 files changed, 2 insertions(+), 1 deletion(-) delete mode 100644 "\357\200\274desired bridge log path\357\200\276" diff --git a/.gitignore b/.gitignore index 1a0f3ac70f..b3e6b6a24e 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,5 @@ resources/style.css resources/vars.scss sass_processed venv -dmojsite \ No newline at end of file +dmojsite +<desired bridge log path> \ No newline at end of file diff --git "a/\357\200\274desired bridge log path\357\200\276" "b/\357\200\274desired bridge log path\357\200\276" deleted file mode 100644 index e69de29bb2..0000000000 From 48fe13e618da795c5b99d321b5dc77bebc7c7404 Mon Sep 17 00:00:00 2001 From: JojoTheWarrior <blahblahblah123toronto@gmail.com> Date: Sat, 29 Jun 2024 15:32:04 -0400 Subject: [PATCH 16/57] add bridge.log to ignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b3e6b6a24e..f2ca1efc45 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,5 @@ resources/vars.scss sass_processed venv dmojsite -<desired bridge log path> \ No newline at end of file +<desired bridge log path> +bridge.log \ No newline at end of file From c96d6929ab2fa977c4c331d26315523248863622 Mon Sep 17 00:00:00 2001 From: Jason Cameron <jasoncameron.all@gmail.com> Date: Wed, 3 Jul 2024 21:25:10 -0400 Subject: [PATCH 17/57] Delete .github/workflows/makemessages.yml --- .github/workflows/makemessages.yml | 53 ------------------------------ 1 file changed, 53 deletions(-) delete mode 100644 .github/workflows/makemessages.yml diff --git a/.github/workflows/makemessages.yml b/.github/workflows/makemessages.yml deleted file mode 100644 index c5bd6aef41..0000000000 --- a/.github/workflows/makemessages.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: makemessages -on: - push: - branches: - - master -jobs: - makemessages: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python 3.7 - uses: actions/setup-python@v5 - with: - python-version: '3.7' - - name: Checkout submodules - run: | - git submodule init - git submodule update - - name: Install requirements - run: | - sudo apt-get install gettext - curl -O https://artifacts.crowdin.com/repo/deb/crowdin3.deb - sudo dpkg -i crowdin3.deb - pip install -r requirements.txt - pip install pymysql - - name: Collect localizable strings - run: | - echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py - python manage.py makemessages -l en -e py,html,txt - python manage.py makemessages -l en -d djangojs - - name: Upload strings to Crowdin - env: - CROWDIN_API_TOKEN: ${{ secrets.CROWDIN_API_V2_TOKEN }} - run: | - cat > crowdin.yaml <<EOF - project_id: 142963 - - files: - - source: /locale/en/LC_MESSAGES/django.po - translation: /locale/%two_letters_code%/LC_MESSAGES/django.po - languages_mapping: - two_letters_code: - zh-CN: zh_Hans - sr-CS: sr_Latn - - source: /locale/en/LC_MESSAGES/djangojs.po - translation: /locale/%two_letters_code%/LC_MESSAGES/djangojs.po - languages_mapping: - two_letters_code: - zh-CN: zh_Hans - sr-CS: sr_Latn - EOF - echo "api_token: ${CROWDIN_API_TOKEN}" >> crowdin.yaml - crowdin upload sources From 099b29b7c5c457e00409b5c746f4d3364e11912a Mon Sep 17 00:00:00 2001 From: Jason Cameron <jasoncameron.all@gmail.com> Date: Wed, 3 Jul 2024 21:26:33 -0400 Subject: [PATCH 18/57] Delete .github/workflows/updatemessages.yml --- .github/workflows/updatemessages.yml | 100 --------------------------- 1 file changed, 100 deletions(-) delete mode 100644 .github/workflows/updatemessages.yml diff --git a/.github/workflows/updatemessages.yml b/.github/workflows/updatemessages.yml deleted file mode 100644 index 1c56045a8c..0000000000 --- a/.github/workflows/updatemessages.yml +++ /dev/null @@ -1,100 +0,0 @@ -name: updatemessages -on: - schedule: - - cron: '0 0 * * *' -jobs: - updatemessages: - if: github.repository == 'DMOJ/online-judge' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Set up Python 3.7 - uses: actions/setup-python@v5 - with: - python-version: '3.7' - - name: Checkout submodules - run: | - git submodule init - git submodule update - - name: Install requirements - run: | - sudo apt-get install gettext - wget https://artifacts.crowdin.com/repo/deb/crowdin3.deb -O crowdin.deb - sudo dpkg -i crowdin.deb - pip install -r requirements.txt - pip install pymysql - - name: Update English source strings - run: | - echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py - python manage.py makemessages -l en -e py,html,txt - python manage.py makemessages -l en -d djangojs - - name: Download strings from Crowdin - env: - CROWDIN_API_TOKEN: ${{ secrets.CROWDIN_API_V2_TOKEN }} - run: | - cat > crowdin.yaml <<EOF - project_id: 142963 - - files: - - source: /locale/en/LC_MESSAGES/django.po - translation: /locale/%two_letters_code%/LC_MESSAGES/django.po - languages_mapping: - two_letters_code: - zh-CN: zh_Hans - zh-TW: zh_Hant - sr-CS: sr_Latn - - source: /locale/en/LC_MESSAGES/djangojs.po - translation: /locale/%two_letters_code%/LC_MESSAGES/djangojs.po - languages_mapping: - two_letters_code: - zh-CN: zh_Hans - zh-TW: zh_Hant - sr-CS: sr_Latn - EOF - echo "api_token: ${CROWDIN_API_TOKEN}" >> crowdin.yaml - crowdin download - rm crowdin.yaml - - name: Cleanup - run: | - rm -rf src/ - git add locale - git checkout . - git clean -fd - git reset - - name: Remove useless changes - run: | - set -eu - i18n_head=$(git rev-parse --verify -q origin/update-i18n || echo "HEAD") - echo "Comparing against: $i18n_head" - changed=0 - while IFS= read -r -d $'\0' file; do - if git diff -s --exit-code "$file"; then - continue - fi - - if git diff "$i18n_head" -- "$file" | tail -n +5 2>/dev/null | grep -qP '^[-+](?!"PO-Revision-Date:|"POT-Creation-Date:)'; then - echo "Changed: $file" - changed=1 - else - echo "No material change: $file" - git checkout "$i18n_head" -- "$file" > /dev/null 2>&1 - fi - done < <(git ls-files -z 'locale/*/LC_MESSAGES/*.po') - - if [ "$changed" = 0 ]; then - git reset --hard "$i18n_head" - fi - - name: Create pull request - uses: peter-evans/create-pull-request@v6 - with: - token: ${{ secrets.REPO_SCOPED_TOKEN }} - author: dmoj-build <build@dmoj.ca> - committer: dmoj-build <build@dmoj.ca> - commit-message: 'i18n: update translations from Crowdin' - title: Update translations from Crowdin - body: This PR has been auto-generated to pull in latest translations from [Crowdin](https://translate.dmoj.ca). - labels: i18n, enhancement - reviewers: Xyene, quantum5 - branch: update-i18n From 56114c296d990b82eff3127ff706943b4dddce01 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Sat, 6 Jul 2024 20:37:28 -0400 Subject: [PATCH 19/57] add exec perms on deamon --- websocket/daemon.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 websocket/daemon.js diff --git a/websocket/daemon.js b/websocket/daemon.js old mode 100644 new mode 100755 From b1025aa62ae77a16463dc5373595051fd165ad94 Mon Sep 17 00:00:00 2001 From: Jason Cameron <jasoncameron.all@gmail.com> Date: Sat, 6 Jul 2024 22:07:34 -0400 Subject: [PATCH 20/57] Delete .github/workflows/caniuse.yml --- .github/workflows/caniuse.yml | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 .github/workflows/caniuse.yml diff --git a/.github/workflows/caniuse.yml b/.github/workflows/caniuse.yml deleted file mode 100644 index 409bc2a7e5..0000000000 --- a/.github/workflows/caniuse.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: caniuse -on: - schedule: - - cron: '0 0 * * 0' -jobs: - caniuse: - if: github.repository == 'DMOJ/online-judge' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Download Can I use... data - run: | - curl -s https://raw.githubusercontent.com/Fyrd/caniuse/master/data.json | python3 -m json.tool > resources/caniuse.json - - name: Create pull request - uses: peter-evans/create-pull-request@v6 - with: - token: ${{ secrets.REPO_SCOPED_TOKEN }} - author: dmoj-build <build@dmoj.ca> - committer: dmoj-build <build@dmoj.ca> - title: Import latest Can I use... data - commit-message: Import latest Can I use... data - body: This PR has been auto-generated to pull in the latest copy of Can I use... `data.json` from [upstream](https://github.com/Fyrd/caniuse/blob/master/data.json). - labels: compat - reviewers: Xyene, quantum5 - branch: update-caniuse From 1855593774a7c0e4d54f7ea52bcd32950b82aeb7 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Fri, 19 Jul 2024 09:51:13 -0400 Subject: [PATCH 21/57] Use abs path of config file --- websocket/daemon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/websocket/daemon.js b/websocket/daemon.js index 05b9940fa1..f9a45a21d3 100755 --- a/websocket/daemon.js +++ b/websocket/daemon.js @@ -1,4 +1,4 @@ -var config = require('./config'); +var config = require('/config'); var set = require('simplesets').Set; var queue = require('qu'); var WebSocketServer = require('ws').Server; From 873b03df94bac32a04a8d65ea4fb2a73dcba178a Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Fri, 19 Jul 2024 23:00:36 -0400 Subject: [PATCH 22/57] Use relative file paths but mount config on boot as node can't use abs paths --- websocket/daemon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/websocket/daemon.js b/websocket/daemon.js index f9a45a21d3..05b9940fa1 100755 --- a/websocket/daemon.js +++ b/websocket/daemon.js @@ -1,4 +1,4 @@ -var config = require('/config'); +var config = require('./config'); var set = require('simplesets').Set; var queue = require('qu'); var WebSocketServer = require('ws').Server; From 82b12437b26e977bba8140f9974d1f3ebc084be0 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Tue, 3 Sep 2024 19:04:50 -0400 Subject: [PATCH 23/57] add static migrations to site --- make_style.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/make_style.sh b/make_style.sh index f926575efc..f9adb385e8 100755 --- a/make_style.sh +++ b/make_style.sh @@ -14,7 +14,7 @@ if ! [ -x "$(command -v autoprefixer)" ]; then exit 1 fi -cd "$(dirname "$0")" || exit +cd "/site" || exit 1 build_style() { echo "Creating $1 style..." @@ -23,5 +23,6 @@ build_style() { postcss sass_processed/style.css sass_processed/martor-description.css sass_processed/select2-dmoj.css --verbose --use autoprefixer -d $2 } + build_style 'default' 'resources' build_style 'dark' 'resources/dark' From d3650817a0e4065ddc48ae08a1dbea3f285d5027 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Tue, 3 Sep 2024 19:08:07 -0400 Subject: [PATCH 24/57] add static migrations to site --- make_style.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make_style.sh b/make_style.sh index f9adb385e8..41bd6c0c5d 100755 --- a/make_style.sh +++ b/make_style.sh @@ -14,7 +14,7 @@ if ! [ -x "$(command -v autoprefixer)" ]; then exit 1 fi -cd "/site" || exit 1 +cd "$(dirname "$0")" || exit build_style() { echo "Creating $1 style..." From 9451e43670e9874e612a57a5674b166adcc1725e Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Sat, 7 Sep 2024 23:15:34 -0400 Subject: [PATCH 25/57] enable martor uploads Signed-off-by: Jason <git@jasoncameron.dev> --- judge/widgets/martor.py | 1 + 1 file changed, 1 insertion(+) diff --git a/judge/widgets/martor.py b/judge/widgets/martor.py index 9f8738e0bf..c13a6b653b 100644 --- a/judge/widgets/martor.py +++ b/judge/widgets/martor.py @@ -12,6 +12,7 @@ class Media: class AdminMartorWidget(OldAdminMartorWidget): + UPLOADS_ENABLED = True class Media: css = MartorWidget.Media.css js = ['admin/js/jquery.init.js', 'martor-mathjax.js'] From 3fc92bc1983b565f7a7faf7b3d8e2d238d289175 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Sat, 7 Sep 2024 23:17:54 -0400 Subject: [PATCH 26/57] fix linting issue in martor.py Signed-off-by: Jason <git@jasoncameron.dev> --- judge/widgets/martor.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/judge/widgets/martor.py b/judge/widgets/martor.py index c13a6b653b..dd11afa241 100644 --- a/judge/widgets/martor.py +++ b/judge/widgets/martor.py @@ -4,15 +4,16 @@ class MartorWidget(OldMartorWidget): - class Media: - css = { - 'all': ['martor-description.css'], - } - js = ['martor-mathjax.js'] + class Media: + css = { + 'all': ['martor-description.css'], + } + js = ['martor-mathjax.js'] class AdminMartorWidget(OldAdminMartorWidget): - UPLOADS_ENABLED = True - class Media: - css = MartorWidget.Media.css - js = ['admin/js/jquery.init.js', 'martor-mathjax.js'] + UPLOADS_ENABLED = True + + class Media: + css = MartorWidget.Media.css + js = ['admin/js/jquery.init.js', 'martor-mathjax.js'] From 20bb13eb9a38dd978c8bc33401381e5d380de6a6 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Sat, 7 Sep 2024 23:41:03 -0400 Subject: [PATCH 27/57] switch from tabs to spaces Signed-off-by: Jason <git@jasoncameron.dev> --- judge/widgets/martor.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/judge/widgets/martor.py b/judge/widgets/martor.py index dd11afa241..6c37005b84 100644 --- a/judge/widgets/martor.py +++ b/judge/widgets/martor.py @@ -4,16 +4,16 @@ class MartorWidget(OldMartorWidget): - class Media: - css = { - 'all': ['martor-description.css'], - } - js = ['martor-mathjax.js'] + class Media: + css = { + 'all': ['martor-description.css'], + } + js = ['martor-mathjax.js'] class AdminMartorWidget(OldAdminMartorWidget): - UPLOADS_ENABLED = True - - class Media: - css = MartorWidget.Media.css - js = ['admin/js/jquery.init.js', 'martor-mathjax.js'] + UPLOADS_ENABLED = True + + class Media: + css = MartorWidget.Media.css + js = ['admin/js/jquery.init.js', 'martor-mathjax.js'] From 124a334b2295587901227d74db6cb9db64189ef2 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Sat, 7 Sep 2024 23:45:45 -0400 Subject: [PATCH 28/57] remove whitespace from empty line Signed-off-by: Jason <git@jasoncameron.dev> --- judge/widgets/martor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/judge/widgets/martor.py b/judge/widgets/martor.py index 6c37005b84..e7911d0d5b 100644 --- a/judge/widgets/martor.py +++ b/judge/widgets/martor.py @@ -13,7 +13,7 @@ class Media: class AdminMartorWidget(OldAdminMartorWidget): UPLOADS_ENABLED = True - + class Media: css = MartorWidget.Media.css js = ['admin/js/jquery.init.js', 'martor-mathjax.js'] From 723aaacc15b5c3b91580f9f3166470ead2363410 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Sun, 8 Sep 2024 00:28:19 -0400 Subject: [PATCH 29/57] ignore host errors Signed-off-by: Jason <git@jasoncameron.dev> --- dmoj/filters.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 dmoj/filters.py diff --git a/dmoj/filters.py b/dmoj/filters.py new file mode 100644 index 0000000000..dfd26234cb --- /dev/null +++ b/dmoj/filters.py @@ -0,0 +1,6 @@ +import logging + + +class SilenceInvalidHttpHostHeader(logging.Filter): + def filter(self, record): + return 'Invalid HTTP_HOST header' not in record.msg From d12117140fb054525a6494d5258b4db128ea7c05 Mon Sep 17 00:00:00 2001 From: Jason <git@jasoncameron.dev> Date: Sun, 8 Sep 2024 01:52:45 -0400 Subject: [PATCH 30/57] switch filter location Signed-off-by: Jason <git@jasoncameron.dev> --- {dmoj => judge}/filters.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {dmoj => judge}/filters.py (100%) diff --git a/dmoj/filters.py b/judge/filters.py similarity index 100% rename from dmoj/filters.py rename to judge/filters.py From a20b38681d1bf249043a9543ffbd669139081043 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Tue, 10 Sep 2024 23:42:12 -0400 Subject: [PATCH 31/57] use proper image for judge Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- judge/filters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/judge/filters.py b/judge/filters.py index dfd26234cb..c74a72f2da 100644 --- a/judge/filters.py +++ b/judge/filters.py @@ -3,4 +3,4 @@ class SilenceInvalidHttpHostHeader(logging.Filter): def filter(self, record): - return 'Invalid HTTP_HOST header' not in record.msg + return 'Invalid HTTP_HOST' not in record.msg From 3e3f9268b47187e0e8d10f1db962d034261ad197 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Mon, 23 Sep 2024 20:41:18 -0400 Subject: [PATCH 32/57] Add all proper icons (#78) Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- 502.html | 8 +- dmoj/urls.py | 13 +- judge/contest_format/__init__.py | 2 + judge/contest_format/bonuses.py | 144 +++++++ judge/contest_format/ics3u.py | 89 +++++ judge/management/commands/generate_report.py | 141 +++++++ judge/pdf.py | 373 ++++++++++++++++++ logo.png | Bin 27153 -> 20350 bytes resources/favicon.ico | Bin 15086 -> 22382 bytes resources/icons/android-chrome-144x144.png | Bin 2818 -> 3737 bytes resources/icons/android-chrome-192x192.png | Bin 3673 -> 4625 bytes resources/icons/android-chrome-256x256.png | Bin 0 -> 6035 bytes resources/icons/android-chrome-36x36.png | Bin 960 -> 1434 bytes resources/icons/android-chrome-384x384.png | Bin 0 -> 8694 bytes resources/icons/android-chrome-48x48.png | Bin 1201 -> 1862 bytes resources/icons/android-chrome-512x512.png | Bin 0 -> 11542 bytes resources/icons/android-chrome-72x72.png | Bin 1621 -> 2402 bytes resources/icons/android-chrome-96x96.png | Bin 2051 -> 2869 bytes resources/icons/apple-touch-icon-114x114.png | Bin 2088 -> 0 bytes resources/icons/apple-touch-icon-120x120.png | Bin 2208 -> 0 bytes resources/icons/apple-touch-icon-144x144.png | Bin 2506 -> 0 bytes resources/icons/apple-touch-icon-152x152.png | Bin 2692 -> 0 bytes resources/icons/apple-touch-icon-180x180.png | Bin 3285 -> 0 bytes resources/icons/apple-touch-icon-57x57.png | Bin 1201 -> 0 bytes resources/icons/apple-touch-icon-60x60.png | Bin 1287 -> 0 bytes resources/icons/apple-touch-icon-72x72.png | Bin 1496 -> 0 bytes resources/icons/apple-touch-icon-76x76.png | Bin 1500 -> 0 bytes .../icons/apple-touch-icon-precomposed.png | Bin 3521 -> 0 bytes resources/icons/apple-touch-icon.png | Bin 3285 -> 3843 bytes resources/icons/browserconfig.xml | 15 +- resources/icons/favicon-16x16.png | Bin 830 -> 804 bytes resources/icons/favicon-32x32.png | Bin 1364 -> 1321 bytes resources/icons/favicon-96x96.png | Bin 2051 -> 0 bytes resources/icons/favicon.ico | Bin 15086 -> 15086 bytes resources/icons/icon.svg | 1 - resources/icons/logo.png | Bin 2978 -> 19352 bytes resources/icons/logo.svg | 26 +- resources/icons/manifest.json | 2 +- resources/icons/mstile-144x144.png | Bin 2797 -> 3716 bytes resources/icons/mstile-150x150.png | Bin 2410 -> 3502 bytes resources/icons/mstile-310x150.png | Bin 2670 -> 3766 bytes resources/icons/mstile-310x310.png | Bin 5181 -> 6730 bytes resources/icons/mstile-70x70.png | Bin 1881 -> 2801 bytes resources/icons/safari-pinned-tab.svg | 46 +-- resources/icons/site.webmanifest | 55 +++ resources/quotes.json | 2 +- templates/base.html | 24 +- 47 files changed, 841 insertions(+), 100 deletions(-) create mode 100644 judge/contest_format/bonuses.py create mode 100644 judge/contest_format/ics3u.py create mode 100644 judge/management/commands/generate_report.py create mode 100644 judge/pdf.py create mode 100644 resources/icons/android-chrome-256x256.png create mode 100644 resources/icons/android-chrome-384x384.png create mode 100644 resources/icons/android-chrome-512x512.png delete mode 100644 resources/icons/apple-touch-icon-114x114.png delete mode 100644 resources/icons/apple-touch-icon-120x120.png delete mode 100644 resources/icons/apple-touch-icon-144x144.png delete mode 100644 resources/icons/apple-touch-icon-152x152.png delete mode 100644 resources/icons/apple-touch-icon-180x180.png delete mode 100644 resources/icons/apple-touch-icon-57x57.png delete mode 100644 resources/icons/apple-touch-icon-60x60.png delete mode 100644 resources/icons/apple-touch-icon-72x72.png delete mode 100644 resources/icons/apple-touch-icon-76x76.png delete mode 100644 resources/icons/apple-touch-icon-precomposed.png delete mode 100644 resources/icons/favicon-96x96.png delete mode 100644 resources/icons/icon.svg create mode 100644 resources/icons/site.webmanifest diff --git a/502.html b/502.html index 15294732d3..06c52bfa76 100644 --- a/502.html +++ b/502.html @@ -1,9 +1,9 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>502 bad gateway - DMOJ</title> + <title>502 bad gateway - WLMOJ</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> - <style type="text/css"> + <style> hr { margin: 0 22em; } @@ -49,9 +49,9 @@ <br> <div class="popup"> <div> - <img class="logo" src="/logo.png" alt="DMOJ"> + <img class="logo" src="/logo.png" alt="WLMOJ"> </div> - <h1 style="width: 100%;">Oops, the DMOJ is down.</h1> + <h1 style="width: 100%;">Oops, the WLMOJ is down.</h1> </div> <br> <hr> diff --git a/dmoj/urls.py b/dmoj/urls.py index 32976e10dc..5c83076292 100644 --- a/dmoj/urls.py +++ b/dmoj/urls.py @@ -1,3 +1,6 @@ +import os +from os.path import join + from django.conf import settings from django.contrib import admin from django.contrib.auth import views as auth_views @@ -368,15 +371,7 @@ def paged_list_view(view, name): ])), ] -favicon_paths = ['apple-touch-icon-180x180.png', 'apple-touch-icon-114x114.png', 'android-chrome-72x72.png', - 'apple-touch-icon-57x57.png', 'apple-touch-icon-72x72.png', 'apple-touch-icon.png', 'mstile-70x70.png', - 'android-chrome-36x36.png', 'apple-touch-icon-precomposed.png', 'apple-touch-icon-76x76.png', - 'apple-touch-icon-60x60.png', 'android-chrome-96x96.png', 'mstile-144x144.png', 'mstile-150x150.png', - 'safari-pinned-tab.svg', 'android-chrome-144x144.png', 'apple-touch-icon-152x152.png', - 'favicon-96x96.png', - 'favicon-32x32.png', 'favicon-16x16.png', 'android-chrome-192x192.png', 'android-chrome-48x48.png', - 'mstile-310x150.png', 'apple-touch-icon-144x144.png', 'browserconfig.xml', 'manifest.json', - 'apple-touch-icon-120x120.png', 'mstile-310x310.png'] +favicon_paths = os.listdir(join(settings.DMOJ_RESOURCES, 'icons')) static_lazy = lazy(static, str) for favicon in favicon_paths: diff --git a/judge/contest_format/__init__.py b/judge/contest_format/__init__.py index 241d7b27fb..65e7f36483 100644 --- a/judge/contest_format/__init__.py +++ b/judge/contest_format/__init__.py @@ -1,7 +1,9 @@ from judge.contest_format.atcoder import AtCoderContestFormat +from judge.contest_format.bonuses import BonusesContestFormat from judge.contest_format.default import DefaultContestFormat from judge.contest_format.ecoo import ECOOContestFormat from judge.contest_format.icpc import ICPCContestFormat +from judge.contest_format.ics3u import ICS3UContestFormat from judge.contest_format.ioi import IOIContestFormat from judge.contest_format.legacy_ioi import LegacyIOIContestFormat from judge.contest_format.registry import choices, formats diff --git a/judge/contest_format/bonuses.py b/judge/contest_format/bonuses.py new file mode 100644 index 0000000000..678d599ba6 --- /dev/null +++ b/judge/contest_format/bonuses.py @@ -0,0 +1,144 @@ +from datetime import timedelta + +from django.core.exceptions import ValidationError +from django.db.models import ( + ExpressionWrapper, + F, + FloatField, + Max, + Min, + OuterRef, + Subquery, +) +from django.template.defaultfilters import floatformat +from django.urls import reverse +from django.utils.html import format_html +from django.utils.safestring import mark_safe +from django.utils.translation import gettext_lazy + +from judge.contest_format.default import DefaultContestFormat +from judge.contest_format.registry import register_contest_format +from judge.utils.timedelta import nice_repr + + +@register_contest_format('bonuses') +class BonusesContestFormat(DefaultContestFormat): + name = gettext_lazy('Bonuses') + config_defaults = { + 'time_bonus': 0, + 'first_submission_bonus': 0, + } + """ + time_bonus: Number of minutes to award an extra point for submitting before the contest end. + first_submission_bonus: Bonus points for fully solving on first submission. + """ + + @classmethod + def validate(cls, config): + if not isinstance(config, dict): + raise ValidationError('bonuses contest expects a dict as config') + for key in config.keys(): + if key not in cls.config_defaults: + raise ValidationError('unknown config key "%s"' % key) + + def __init__(self, contest, config): + super().__init__(contest, self.config_defaults.copy()) + self.config.update(config) + + def update_participation(self, participation): + cumtime = 0 + score = 0 + format_data = {} + + total_wrapper = ExpressionWrapper( + F('points') + F('bonus'), output_field=FloatField(), + ) + queryset = ( + participation.submissions.values('problem_id') + .annotate(total=total_wrapper) + .filter( + total=Subquery( + participation.submissions.filter(problem_id=OuterRef('problem_id')) + .annotate(best=total_wrapper) + .order_by('-best') + .values('best')[:1], + ), + ) + .annotate(time=Min('submission__date'), points=Max('points')) + .values_list('problem_id', 'time', 'points', 'total') + ) + + for problem_id, time, points, total in queryset: + dt = (time - participation.start).total_seconds() + if total: + score += total + cumtime += dt + format_data[str(problem_id)] = { + 'points': points, + 'bonus': total - points, + 'time': dt, + } + + queryset = ( + participation.submissions.values('problem_id', 'problem__points') + .filter( + submission__date=Subquery( + participation.submissions.filter(problem_id=OuterRef('problem_id')) + .order_by('submission__date') + .values('submission__date')[:1], + ), + ) + .annotate(points=Max('points')) + .values_list('problem_id', 'points', 'problem__points') + ) + + for problem_id, points, problem_points in queryset: + format_data[str(problem_id)].update( + { + 'first_solve': points == problem_points, + }, + ) + + participation.cumtime = max(cumtime, 0) + participation.score = score + participation.tiebreaker = 0 + participation.format_data = format_data + participation.save() + + def display_user_problem(self, participation, contest_problem): + format_data = (participation.format_data or {}).get(str(contest_problem.id)) + if format_data: + pretest = ( + 'pretest-' + if self.contest.run_pretests_only and contest_problem.is_pretested + else '' + ) + first_solve = ' first-solve' if format_data['first_solve'] else '' + bonus = ( + format_html( + '<font style="font-size:10px;"> +{bonus}</font>', + bonus=floatformat(format_data['bonus']), + ) + if format_data['bonus'] + else '' + ) + + return format_html( + '<td class="{state}"><a href="{url}">{points}{bonus}<div class="solving-time">{time}</div></a></td>', + state=pretest + self.best_solution_state( + format_data['points'], contest_problem.points, + ) + first_solve, + url=reverse( + 'contest_user_submissions', + args=[ + self.contest.key, + participation.user.user.username, + contest_problem.problem.code, + ], + ), + points=floatformat(format_data['points']), + bonus=bonus, + time=nice_repr(timedelta(seconds=format_data['time']), 'noday'), + ) + else: + return mark_safe('<td></td>') diff --git a/judge/contest_format/ics3u.py b/judge/contest_format/ics3u.py new file mode 100644 index 0000000000..6386b60788 --- /dev/null +++ b/judge/contest_format/ics3u.py @@ -0,0 +1,89 @@ +from django.core.exceptions import ValidationError +from django.db.models import Max, OuterRef, Subquery +from django.template.defaultfilters import floatformat +from django.urls import reverse +from django.utils.html import format_html +from django.utils.safestring import mark_safe +from django.utils.translation import gettext_lazy + +from judge.contest_format.default import DefaultContestFormat +from judge.contest_format.registry import register_contest_format + + +@register_contest_format('ics3u') +class ICS3UContestFormat(DefaultContestFormat): + name = gettext_lazy('ICS3U') + + @classmethod + def validate(cls, config): + if config is not None and (not isinstance(config, dict) or config): + raise ValidationError( + 'ICS3U contest expects no config or empty dict as config', + ) + + def __init__(self, contest, config): + super().__init__(contest, config) + + def update_participation(self, participation): + score = 0 + format_data = {} + + queryset = ( + participation.submissions.values('problem_id') + .filter( + points=Subquery( + participation.submissions.filter(problem_id=OuterRef('problem_id')) + .order_by('-points') + .values('points')[:1], + ), + ) + .annotate(disqualified=Max('is_disqualified')) + .values_list('problem_id', 'disqualified', 'points') + ) + + for problem_id, disqualified, points in queryset: + format_data[str(problem_id)] = { + 'points': points, + 'disqualified': disqualified, + } + score += points + + participation.cumtime = 0 + participation.score = score + participation.tiebreaker = 0 + participation.format_data = format_data + participation.save() + + def display_user_problem(self, participation, contest_problem): + format_data = (participation.format_data or {}).get(str(contest_problem.id)) + if format_data: + pretest = ( + 'pretest-' + if self.contest.run_pretests_only and contest_problem.is_pretested + else '' + ) + extra = ' disqualified' if format_data['disqualified'] else '' + + return format_html( + '<td class="{state}"><a href="{url}">{points}</a></td>', + state=pretest + self.best_solution_state( + format_data['points'], contest_problem.points, + ) + extra, + url=reverse( + 'contest_user_submissions', + args=[ + self.contest.key, + participation.user.user.username, + contest_problem.problem.code, + ], + ), + points=floatformat(format_data['points']), + ) + else: + return mark_safe('<td></td>') + + def display_participation_result(self, participation): + return format_html( + '<td class="user-points">{points}</td>', + points=floatformat(participation.score, -self.contest.points_precision), + ) diff --git a/judge/management/commands/generate_report.py b/judge/management/commands/generate_report.py new file mode 100644 index 0000000000..6abc7c2182 --- /dev/null +++ b/judge/management/commands/generate_report.py @@ -0,0 +1,141 @@ +import os +import shutil +import sys + +from django.conf import settings +from django.core.mail import EmailMessage +from django.core.management.base import BaseCommand +from django.template.loader import get_template + +from judge.models import Contest, ContestParticipation +from judge.pdf import ( + DefaultPdfMaker, + PhantomJSPdfMaker, + PuppeteerPDFRender, + SeleniumPDFRender, + SlimerJSPdfMaker, +) + + +def generate_scoreboard(contest, period): + problem_ids = [ + str(prob.id) for prob in contest.contest_problems.all().order_by('order') + ] + out = '' + + for registrant in contest.registrants.all().order_by('user__user__last_name'): + if period is not None and int(registrant.data['class-period']) != period: + continue + + participation = ContestParticipation.objects.filter( + contest=contest, user=registrant.user, + ).first() + if not participation: + continue # joined, but didn't participate + + row = '' + for pid in problem_ids: + if participation.format_data and pid in participation.format_data: + row += '<td>%.0f</td>\n' % participation.format_data[pid]['points'] + else: + row += '<td></td>\n' + row += '<td>%.0f</td>\n' % participation.score + + out += '<tr>\n' + out += '<th>%s</th>\n' % registrant.user.user.get_full_name() + out += row + out += '</tr>\n' + return out + + +class Command(BaseCommand): + help = 'generates a report for an ICS3U contest' + + def add_arguments(self, parser): + parser.add_argument('key', help='key of the contest to generate a report for') + parser.add_argument( + '--period', type=int, help='ics3u class period of the contest', + ) + parser.add_argument( + '--dry-run', action='store_true', help="don't actually email the report", + ) + parser.add_argument( + '-p', + '--phantomjs', + action='store_const', + const=PhantomJSPdfMaker, + default=DefaultPdfMaker, + dest='engine', + ) + parser.add_argument( + '-s', + '--slimerjs', + action='store_const', + const=SlimerJSPdfMaker, + dest='engine', + ) + parser.add_argument( + '-c', + '--chrome', + '--puppeteer', + action='store_const', + const=PuppeteerPDFRender, + dest='engine', + ) + parser.add_argument( + '-S', + '--selenium', + action='store_const', + const=SeleniumPDFRender, + dest='engine', + ) + + def handle(self, *args, **options): + try: + contest = Contest.objects.get(key=options['key']) + except Contest.DoesNotExist: + print('Bad contest code') + return + + scoreboard = generate_scoreboard(contest, options['period']) + if options['period'] is not None: + teacher = settings.DMOJ_ICS_REPORT_PERIODS[options['period']] + else: + teacher = None + with options['engine'](None, clean_up=None is None) as maker: + maker.html = ( + get_template('contest/ics3u_report.html') + .render( + { + 'contest': contest, + 'contest_problems': contest.contest_problems.all(), + 'scoreboard': scoreboard, + 'teacher': teacher, + 'math_engine': maker.math_engine, + }, + ) + .replace('"//', '"https://') + .replace("'//", "'https://") + ) + maker.template['footerTemplate'] = '<div></div>' + maker.title = contest.name + for file in ('style.css', 'pygment-github.css', 'mathjax_config.js'): + maker.load(file, os.path.join(settings.DMOJ_RESOURCES, file)) + maker.make(debug=True) + if not maker.success: + print(maker.log, file=sys.stderr) + return + shutil.move(maker.pdffile, contest.key + '.pdf') + + if options['period'] is not None and not options['dry_run']: + email = EmailMessage( + f'{contest.name} Report', + f'Dear {teacher["name"]},\n\nAttached are the results, ' + f'problems, and editorials for the {contest.name}.\n\n' + 'This is an automated email. If there are any issues, ' + 'please contact us at presidents@mcpt.ca.', + to=[teacher['email']], + ) + email.attach_file(contest.key + '.pdf') + email.send() + os.remove(contest.key + '.pdf') diff --git a/judge/pdf.py b/judge/pdf.py new file mode 100644 index 0000000000..2f67354413 --- /dev/null +++ b/judge/pdf.py @@ -0,0 +1,373 @@ +import base64 +import errno +import io +import json +import logging +import os +import shutil +import subprocess +import uuid + +from django.conf import settings +from django.utils.translation import gettext + +logger = logging.getLogger('judge.problem.pdf') + +HAS_SELENIUM = False +if settings.USE_SELENIUM: + try: + from selenium import webdriver + from selenium.common.exceptions import TimeoutException + from selenium.webdriver.common.by import By + from selenium.webdriver.support import expected_conditions as EC + from selenium.webdriver.support.ui import WebDriverWait + + HAS_SELENIUM = True + except ImportError: + logger.warning('Failed to import Selenium', exc_info=True) + +HAS_PHANTOMJS = os.access(settings.PHANTOMJS, os.X_OK) +HAS_SLIMERJS = os.access(settings.SLIMERJS, os.X_OK) + +NODE_PATH = settings.NODEJS +PUPPETEER_MODULE = settings.PUPPETEER_MODULE +HAS_PUPPETEER = os.access(NODE_PATH, os.X_OK) and os.path.isdir(PUPPETEER_MODULE) + +HAS_PDF = os.path.isdir(settings.DMOJ_PDF_PROBLEM_CACHE) and ( + HAS_PHANTOMJS or HAS_SLIMERJS or HAS_PUPPETEER or HAS_SELENIUM +) + +EXIFTOOL = settings.EXIFTOOL +HAS_EXIFTOOL = os.access(EXIFTOOL, os.X_OK) + + +class BasePdfMaker(object): + math_engine = 'jax' + title = None + + def __init__(self, dir=None, clean_up=True): + self.dir = dir or os.path.join( + settings.DMOJ_PDF_PROBLEM_TEMP_DIR, str(uuid.uuid1()), + ) + self.proc = None + self.log = None + self.htmlfile = os.path.join(self.dir, 'input.html') + self.pdffile = os.path.join(self.dir, 'output.pdf') + self.clean_up = clean_up + + def load(self, file, source): + with open(os.path.join(self.dir, file), 'w') as target, open(source) as source: + target.write(source.read()) + + def make(self, debug=False): + self._make(debug) + + if self.title and HAS_EXIFTOOL: + try: + subprocess.check_output( + [EXIFTOOL, '-Title=%s' % (self.title,), self.pdffile], + ) + except subprocess.CalledProcessError as e: + logger.error( + 'Failed to run exiftool to set title for: %s\n%s', + self.title, + e.output, + ) + + def _make(self, debug): + raise NotImplementedError() + + @property + def html(self): + with io.open(self.htmlfile, encoding='utf-8') as f: + return f.read() + + @html.setter + def html(self, data): + with io.open(self.htmlfile, 'w', encoding='utf-8') as f: + f.write(data) + + @property + def success(self): + return self.proc.returncode == 0 + + @property + def created(self): + return os.path.exists(self.pdffile) + + def __enter__(self): + try: + os.makedirs(self.dir) + except OSError as e: + if e.errno != errno.EEXIST: + raise + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + if self.clean_up: + shutil.rmtree(self.dir, ignore_errors=True) + + +class PhantomJSPdfMaker(BasePdfMaker): + template = """\ +"use strict"; +var page = require('webpage').create(); +var param = {params}; + +page.paperSize = { + format: param.paper, orientation: 'portrait', margin: '1cm', + footer: { + height: '1cm', + contents: phantom.callback(function(num, pages) { + return ('<center style="margin: 0 auto; font-family: Segoe UI; font-size: 10px">' + + param.footer.replace('[page]', num).replace('[topage]', pages) + '</center>'); + }) + } +}; + +page.onCallback = function (data) { + if (data.action === 'snapshot') { + page.render(param.output); + phantom.exit(); + } +} + +page.open(param.input, function (status) { + if (status !== 'success') { + console.log('Unable to load the address!'); + phantom.exit(1); + } else { + page.evaluate(function (zoom) { + document.documentElement.style.zoom = zoom; + }, param.zoom); + window.setTimeout(function () { + page.render(param.output); + phantom.exit(); + }, param.timeout); + } +}); +""" + + def get_render_script(self): + return self.template.replace( + '{params}', + json.dumps( + { + 'zoom': settings.PHANTOMJS_PDF_ZOOM, + 'timeout': int(settings.PHANTOMJS_PDF_TIMEOUT * 1000), + 'input': 'input.html', + 'output': 'output.pdf', + 'paper': settings.PHANTOMJS_PAPER_SIZE, + 'footer': gettext('Page [page] of [topage]'), + }, + ), + ) + + def _make(self, debug): + with io.open(os.path.join(self.dir, '_render.js'), 'w', encoding='utf-8') as f: + f.write(self.get_render_script()) + cmdline = [settings.PHANTOMJS, '_render.js'] + self.proc = subprocess.Popen( + cmdline, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.dir, + ) + self.log = self.proc.communicate()[0] + + +class SlimerJSPdfMaker(BasePdfMaker): + math_engine = 'mml' + + template = """\ +"use strict"; +try { + var param = {params}; + + var {Cc, Ci} = require('chrome'); + var prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService); + // Changing the serif font so that printed footers show up as Segoe UI. + var branch = prefs.getBranch('font.name.serif.'); + branch.setCharPref('x-western', 'Segoe UI'); + + var page = require('webpage').create(); + + page.paperSize = { + format: param.paper, orientation: 'portrait', margin: '1cm', edge: '0.5cm', + footerStr: { left: '', right: '', center: param.footer } + }; + + page.open(param.input, function (status) { + if (status !== 'success') { + console.log('Unable to load the address!'); + slimer.exit(1); + } else { + page.render(param.output, { ratio: param.zoom }); + slimer.exit(); + } + }); +} catch (e) { + console.error(e); + slimer.exit(1); +} +""" + + def get_render_script(self): + return self.template.replace( + '{params}', + json.dumps( + { + 'zoom': settings.SLIMERJS_PDF_ZOOM, + 'input': 'input.html', + 'output': 'output.pdf', + 'paper': settings.SLIMERJS_PAPER_SIZE, + 'footer': gettext('Page [page] of [topage]') + .replace('[page]', '&P') + .replace('[topage]', '&L'), + }, + ), + ) + + def _make(self, debug): + with io.open(os.path.join(self.dir, '_render.js'), 'w', encoding='utf-8') as f: + f.write(self.get_render_script()) + + env = None + firefox = settings.SLIMERJS_FIREFOX_PATH + if firefox: + env = os.environ.copy() + env['SLIMERJSLAUNCHER'] = firefox + + cmdline = [settings.SLIMERJS, '--headless', '_render.js'] + self.proc = subprocess.Popen( + cmdline, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + cwd=self.dir, + env=env, + ) + self.log = self.proc.communicate()[0] + + +class PuppeteerPDFRender(BasePdfMaker): + template = """\ +"use strict"; +const param = {params}; +const puppeteer = require('puppeteer'); + +puppeteer.launch().then(browser => Promise.resolve() + .then(async () => { + const page = await browser.newPage(); + await page.goto(param.input, { waitUntil: 'load' }); + await page.waitForSelector('.math-loaded', { timeout: 15000 }); + await page.pdf({ + path: param.output, + format: param.paper, + margin: { + top: '1cm', + bottom: '1cm', + left: '1cm', + right: '1cm', + }, + printBackground: true, + displayHeaderFooter: true, + headerTemplate: '<div></div>', + footerTemplate: '<center style="margin: 0 auto; font-family: Segoe UI; font-size: 10px">' + + param.footer.replace('[page]', '<span class="pageNumber"></span>') + .replace('[topage]', '<span class="totalPages"></span>') + + '</center>', + }); + await browser.close(); + }) + .catch(e => browser.close().then(() => {throw e})) +).catch(e => { + console.error(e); + process.exit(1); +}); +""" + + def get_render_script(self): + return self.template.replace( + '{params}', + json.dumps( + { + 'input': 'file://%s' % self.htmlfile, + 'output': self.pdffile, + 'paper': settings.PUPPETEER_PAPER_SIZE, + 'footer': gettext('Page [page] of [topage]'), + }, + ), + ) + + def _make(self, debug): + with io.open(os.path.join(self.dir, '_render.js'), 'w', encoding='utf-8') as f: + f.write(self.get_render_script()) + + env = os.environ.copy() + env['NODE_PATH'] = os.path.dirname(PUPPETEER_MODULE) + + cmdline = [NODE_PATH, '_render.js'] + self.proc = subprocess.Popen( + cmdline, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + cwd=self.dir, + env=env, + ) + self.log = self.proc.communicate()[0] + + +class SeleniumPDFRender(BasePdfMaker): + success = False + template = { + 'printBackground': True, + 'displayHeaderFooter': True, + 'headerTemplate': '<div></div>', + 'footerTemplate': '<center style="margin: 0 auto; font-family: Segoe UI; font-size: 10px">' + + gettext('Page %s of %s') % + ('<span class="pageNumber"></span>', '<span class="totalPages"></span>') + + '</center>', + } + + def get_log(self, driver): + return '\n'.join(map(str, driver.get_log('driver') + driver.get_log('browser'))) + + def _make(self, debug): + options = webdriver.ChromeOptions() + options.add_argument('--headless') + options.add_argument('--no-sandbox') # for root + options.binary_location = settings.SELENIUM_CUSTOM_CHROME_PATH + + browser = webdriver.Chrome(settings.SELENIUM_CHROMEDRIVER_PATH, options=options) + browser.get('file://%s' % self.htmlfile) + self.log = self.get_log(browser) + + try: + WebDriverWait(browser, 15).until( + EC.presence_of_element_located((By.CLASS_NAME, 'math-loaded')), + ) + except TimeoutException: + logger.error('PDF math rendering timed out') + self.log = self.get_log(browser) + '\nPDF math rendering timed out' + browser.quit() + return + response = browser.execute_cdp_cmd('Page.printToPDF', self.template) + self.log = self.get_log(browser) + if not response: + browser.quit() + return + + with open(self.pdffile, 'wb') as f: + f.write(base64.b64decode(response['data'])) + + self.success = True + browser.quit() + + +if HAS_PUPPETEER: + DefaultPdfMaker = PuppeteerPDFRender +elif HAS_SELENIUM: + DefaultPdfMaker = SeleniumPDFRender +elif HAS_SLIMERJS: + DefaultPdfMaker = SlimerJSPdfMaker +elif HAS_PHANTOMJS: + DefaultPdfMaker = PhantomJSPdfMaker +else: + DefaultPdfMaker = None diff --git a/logo.png b/logo.png index fa6fb912393e7cbbd315401e842ad2e59dfe56e5..68b62605386c8787fa6bf5da9f041c9bb78471ea 100644 GIT binary patch literal 20350 zcmce;bzD^6+cr8#ry$*>B1noz3?ZQ?DJhDyNaw%|4T?yJpdv^k2og$ncSsB%DGVJ$ z&Cp$E&G-9z-t#`^J<s{``1$OQ%-(CSUiZ4!b=}tvf1;&INyb73fj}r9KT^?!K=Af( z7YPx#(=$2~0sbR^DLvLF0ss6+UWS3+q^^&i!5|Q-Hr$05dz*?C+`Q)Tz{o?-<&_7* z!rdBT?PFv2O4!Q9>04{55d^{od90$S@0GkU<(vG%AVK&7ZDLSc`xB;p|1lT$+_g6< zt`wD-x5Zvuk4V-*cRr}j`Sv}B7kMkp#$#D3K=wNck}Vn;#zi(qrC^gx^IGNYy{VL& z6wRNgm4ZIrzk&zjd;ApfbmTcY8Wq!^?}^Dn<eT&#?piR#tW9V~q#Wk@6NiC+Yay-P zt!zlvA1T3MIi{}IIMp(ITX!k{7kI0=!qz{eLvuT-7ua9YQ9Nw5kP5PZyu)XL4MaQR z72!8&k-(cQe?pA&XRT@KZap|vVsXy;27~2aYN)8lFQD>MYxwurmbJ99$ZT3I7zp@U zev<~VK3!^eertY%%{1uSccZdso1&u;0g;%nF7o8s^4M`Dgw#SxeXebkR5Cdi`K-xA z0;CCVopJz65KSMk{OOh8^Pef<VYjG~Yiq6<tW3pw{$hfKKp63*bfDVdapa4yGdvLz z>F4wqQ5BV?S=7GjRtVM=o8y;v+FDd~<qeE_C+%?&9Tno?J^#vYp5NhYJQ)qH*c1M) zOA@M&N;1%^5Bw%bg&_l(Dg3XdAQyTR0iT4+M5vqWh<P$jI;z(jzmZMh{oso||A=?N zL6vQf&i!P=eWa+*7FapkoB?Oz$rDMgo$H<ABAc>!_(j`Vo+`AEH`(g0n=xVY;djdu z^qbK)AeGuZqzUA8pGhG(E}5ie8j-6USB&S7mz4y;47oKSZ$^<T_JBXEdfh1<J$Pr5 z`Ir&1If|UmjkR2Suak~JOelukVwOS>FYTlD3kKL<MfD{OBk;~{$o8U{iDwJCCL9Rg zUuLqu3u|esHfC@^7f4>tv6=7WZY;U(XiHSZJo)2DxRu`(b?Nqq&z1U<FmfuwOA=9k zYmcK>T1WRlOR9GOdF^hqUd4+1;M=I!37xPmm*iTpZCfl022!89L2tRC_afJF*0n}# z$3r`B=?><W%AyEzipl#fVx(e#efi#!<{S}Z%+~r*6_j`K%)7ZI1=P9gYI3bXwhY36 zte#jrJN&U6B=zw#r`yTpjFOhyFp%I8Bigwyr*A58(|z-CU&9Lxd;Tijk(O{v4I6EN zQ#TBkN@ggm^2hM9vnF}{*vm#iWFPUsi=L&?>bZGW#PrL;F)AgM^3Lj?O4iuXmtSk~ zue+2;;vK08#i{zkTqW;~N3ARStw3mELt$fA%RyyCJVL8i>-f*;nhZuv8Dd+e=>KAW z5~%M^JPyl|kwW<EB~=@bC?VnpQMdc9MpW(otY#C4X|?*K9;iQ1qYNdZX@3tJ)02p= zHMs2&y8CWP&xCw-KsVp|2_XSSM@&+?s7xJ~C>S;dGf1s9kmg5PJRH7la@9R+CtkVY z>7A=my_ycH+!@_&SfX#;Fv$a@8Bd;vLqa@9=BQ20?Q6}UJ3qW?cNZC&RPNpdQ!8f~ z^`U-X_ogo|S6alWf9`XXb^VVeA`G3%U6172^jswBLpgYS>IpIXuq&5)Lf~#PUH0N9 zSlr#6)vQ14d#A?l9sBB*ip==$Ucoj{#=v;K-eZ`=4uO8lnnO{V{(?!y#eQS`o7*vK z2jQLfQqV0OdIo#W%aA_+lHf0(G$Y5Co!e_sV2qiAiJM{tNZ*AQgJ#SM@r28ER43gk z?wg7rmvbSzB%A%BHWOMWCg*bJQWZ)-vmXtUbhAvTrN`g~_aa^j;gZGOrJ%JK(P24h zG9ewdazDBDx4|lk-93HxNOK<JTH*DaSH=uiaIGu$rs)G1;t?oVSS^7LOY}7FI;(K* zFs7g*di+L4gBx}<Bw`u+G2oWVs2OFbUg%CK9d)QUnDRDdR@5|T=cycXY+QZM)LbND zS+nd)Q+&GM$2X<YC3iFjDion4I`#9Ye5i6_t+h)!TGN9UOuLw3?}dhJ_BT1HAoCRN zzNwOmf!(fGDa{$~fl+VJZQajkCISlC-{wraVn_2!(9XYahqXrDa=FtFiI>l`otvya zooUtATk*bEvdWBG_|zFb&DA~C#z>UVal$X}p*_3nzFBMUT4SgMLuMcFcX!L`{=9Q* zgRacw?_~(pUoq+UIhu`P;gDR{c(PDt>SWSykNE@3Q<Amm3sq<;?TNYb7?W#HU9nUJ znL>LeGuM(#30}GrHv5&0;vF(sG5jDu)>5=7_$&#FPvFlSD*fe&Cf#y_&{}n`zBl-! zsl8w*qqFaZje7?}q<to<mmJx7ELB}UZxpaX=$gg^Q>`h=F@P9<2$5={`vY5+aZn(f zy#}EiG1AK4rgB#)Z>~0O@JXu;W~jl}n0}c?=&CFDdv6a?_1(M=kyvc&B*eHOdKhM^ zcjSQAK)|&}oc1fs@pRArJmfkLa!P7=0mWW6;H&%hecRmYBlnSH{FebQeG3@{z11bV zHnzPNoFT5#SLCfm!e5LVIi6<0sWLL>Q6Iz~o%c@RUAj_ztotpGKPy*!^Jj{+<#q@O z1~Z{}@U?T}P<r8la4z69;AROXn{2i$nED1K+Szls6~(^Qai?9shnRXp?S?|sM%a*_ zaV~^QX>yY{NuIt*yR4LA(3gDm+2$CP;un?V+7X?rFhr9QLaQKBQd`pz#>04Tyh4PO zV|9>fh*Qx45$tsNh895@R9U|JrRVRk!31;I=P+2M&u4kW>C_T#*Qr}Iy~;)Fn<wDb z<WqcPjz4jklaj?IXDj`i$$J=2)y{@r8S!#xfiT~=9MqB!?ToqZhCQeaNtLXQ=KdB- z)+Atq*%&YsfY_>Z?z|~~2Dx2c`X!w|O~5pV{mre%QV0jWa9HJ~36|%n{tYe9Uy;9h z9b4uNCKTTZ1h*GH97W=7Wx(V9RBPMvajDTErxMjBP#D-(U&&YO4w2rujWdVg5EnYf znj68R5);qn2STK2hdSU~k+tm74sI`KC(H(^l;~uTCUTDxYW<zl--|uv3Ieq<bimYQ z{?dmGL_Tmxi6y7*AZ7i02YUxYt@603`X?Vhta4L{Sh&DB)l2GA|6QD2m!2ODtFTF_ z>bFPV3JE4CE}%Y+f<1kDZ5hiQf)(|Z4Wj*-nq!GoecWLD%&K@H;J))HQs+$!+cHNw zXz0u2+5i%NEQjt&J-;v9X-EI%vzMx-+3Xn;JV__4kbVa=)7!lt5wLP)>X1m-7$<lC zlrot~@==4Oba7P&I*GCE!N7#js0n4iOR)elB`f7MF3SrNZ|s2^#guo0Wi^zitkOO^ zCzgcW34$F#iivK9(tJV#>wj$xCHHLr77u0q_`94`{JO~}AwLtSO8!!QE!F)>c+^Gp zf_s<NA1y^X9;Asvh!o=Ltv!8#KrJWySd1Y?b=!{VU6dpQ^&`cKE0?bFPx!kxurY0J z<P<)l8k%4*ba!c0Xnap|g1d}PsNpJCVaj(iWQDCN7uhv*L8VesEiprl`E$+IFX)C> zWd%c2={JH8#vq7BcvL|6Q5}~07;HVp>3vhdl>^#2cJX(@+$tSx25u7VmW%K8G*5bl zb~z;1nv&aL6a5?IVS=+ABl3f@1YU9`@kNiIp%otK3y3R6Cr-y(ChOERu@SJbKw#tQ zLrm{4Vw^e2Q9@otIVs9XkWsv8?8Wa^jS=L1x@$<2%aFT>L#OoYUzN4~kz(X!;zvr6 zCOIkTX8acEw6U*Yk`(E^Q~n{?O|b#22lq@adkf>Lk~S0~vN^h#yz9x%vvUpY%%qf1 z>q|Z*g-F&)R+RD}lYvc$`EeUf5W1<C!S>qkM~(ec*p%qoJBULlKb4ioJcZI$B%EMV zYGKJ{p6#K74Hp?H+WG#K_}WupWARsS)e@V-eho*>a;~FoEN9U&DvP&~Q$a@xh(r1s zm}!BL?qY<esMyx7xSOCyMu{tyi1%%EZRG$VQ$frtb8qu<IMECp8I~SHan6*>9(3zE z*lS5Fu-HI~sUC}D#r}I3iUvES;KH=<ug0t@4f7~URT9`3BnY3NNwi$*9M+VXGQoWY zJAz{f&dotTgux{5Ui42*8Lyxv@E`GqFh644)c44lN_+ej9wnd2_Uf)fC>I$%+WC=E zeC?~Er`Kp`K3&2YPg;Z_@&UXK@T#s(m!dp);7xgFQbs~`|1%=>MKEzbz7<7KLP%yI zM_#=uL1TWh9hr{7g`Ii+avds*?8vDBT!R}OF-|Fh_&w=vUqGuozK@OdzYWpSCqhoS zg4e-gr%<i9*AHAfZEdzRWrP|6Zh|hk<BENU>yph(DH@T`V)boOQ)1ZY5Z~SKG|=E_ z(BOw8FoapU@%mB(VIZeSPS??Kf{`<5Y6wh{3pDjSD!u1b%H3dBuR<_PVf(w{G>(H& zxG6IgL;#9qsG+a>74wSvO#+p;I2i3Y(eKP!$N}UaBXM0OSd*Z~El8}f*hwYEx*S@Y zCm%vQeB$6FW^{i(JcE3gkUrs=UmXeylWnhNefMM;+n^-E;u2b14o`&>nMpYyhmZq> z8I`T!UF!eIM`-Wvj>t+TbMosK-B3n6D$y%1GE%-P(EORE;^X0T!=8v_R@crvc1uaZ z`<qE?XHF$m@-blDe?q#9{*Mq^YW5a}?c7U!pvC}7pz}xyanAS$CAT#vIA3>OvGVI2 z^sEyyQQO{T<!fW-mGCogHYoqNjC~z~t&`7P{Vd#@ki)K|PE{I3glY$MUz)`{;n`vN z&$4z(|Ni}lMfcFhd+qCG%C?W0cO@X7aI1RPdy0F9@jt2Pe2U`(>MHEIZ=|`!%b7wS z<a=5ye}WYJL5h9M`X2402F2G20~ModK?yM|g`Zy@;)SFtuCqXXIxy#GB-FV{+J@$o zmpz^$`1Tm88aOKPq1lWR(XNd~`kPn588QZ54%EEzt@(|nRg*@X@97d@3Ne@DKcX4E zFPvz;qKAZR>_T&5WtV$jcYf7?H2tB8!83;okDZCCr{u_Hr(Fyn0u)Z(4o*lDHCL~v zDc78QR6@-Ar@t@V;SH^p4}?X8wDv}dA7n#Rpgs3fnWgReFMD+P1X@?K753O^{1y^) zVu%8Zg^?!xQf}I8XAYrsKCK1*I|Vnx-(fR>OMV}!Qof|Q77F=chh_>3o^4cR6OA-l zQ@Js&w+z_|rBQ7?p5la{3$$M-7Z3PsiGU5_O~pRMaF|CYq+uY&e*4h<4cUHX$=54K z>KL|Q@2q1{$EbJgXFY<R8F(9J%a9^5mZ+!V3wL>Ow(n{Wf%>$}5#y=MJ1RVmoPgBs z@EBuXQS=mU_j<p<Kkr%!kJ6QuUv9eyc%P*;92(r?7tPmk(x6jCjxK1pkg4fc5*goP z-wLdRLL%>W$S1a<eorXQe{N0YN6ykfc!7V>p|~~a#z(n#Ely@I;N&(8;^l>^RUXGs zxnk{Mgbvu%b;%RKJ&NaJUIC@S^=zWt)@0;tuj-Yd>RD_^FPrXh!Yc%BeP~Wqj*$Hi z--&#g)l*3Dze+>u{z{ScJY;*;^GLa)`sbsfTfq<fO--k5(l_BYvGe+^!*yaQQ}N!( z@Q>-;7TCqQa0WanQ>c0_2m8|<Q^`1)k@Dtlzi7gRA7eaPFQgEjy_=hoCqjEU;~ok@ zFAV1OJH;$@o$BNFIWSyHYt6q_?euJkMGZg(KAJ4=JCdIuql<=fg=3$CVL2M79klv0 z5=F;{oSImRidYR?-;_KR@@Tf2B=E|SNyt+U;x+Hx^wkw=n4vZ=Ow~VFu<W%Yep_7V zR9P|DY2}+&jN-J))idGG?!_}#&7*m*8dBa2d}h5ymKCuPe2hCWMF59y@)|3@7Is~t zG;n@blbY?-D<91R2Dd6=i{vo3pwO!d-Z={0y4f{PoD(*;lhQAz{(xgJzU77p(aAX; zxtxiu8Kg>~jWyR0HR7#jl&A_XfPW5N8iFB_NyFkK3qGC7zu4desVvf2pDWFC^)e{S zd+}y-b@aCW6d^j;b010}em*R^D<EhpHK0x;=z*6^yBodzBQF;r9o*^Lw^0kvuzmxN z7w(lU8GE_uIeI~LF%zC+w#(NWvEXF1_T^FR7wMvP_krUDt7GVo5LhJ{+g2m7Z{IgY zIhm$K&4XtUd{bApAXCVpvGEz4R>rJg=?$z)OO4r&zP5q+m3{R_Red6JsJ6x>g`?kC zPlfdz6Le*TX&rBY<n=$gb_tsnv#zJGN((h-E4JdhZrBd12QMeH$<2v<2Aetu@JP(L zj{^LvhwnnFTH=RyOo!ZU<WuCvVz<zo0-^79k3D)$agER=62Y$`nk&?=vTFGy)x$O$ zCv!vPg*DX%OU+@Vf_PNrpN?u)e7+;3xi!_7qr1%i9Hi?=zGdKNH_*&_l2?y0)ry*| zV5tQ$d5h;@$72MR+@?<!PktG)Kc(sBQ*TEhoO1EZD7Sm+S5=l)b3|$H;UnqyzF*Jj z7JMt(k1N)s5Ir|UR1d=J-VnbJZYUY9+>j7T!@nMOilWjHAyA)14M7Yen%{>gmDP}j zINd)r{Of=F1u@A-_NfnhIUW-n3yy9A=2}5j%&t=SwGE$c{-M;94-2J&W+lD{!|Ix+ zv+V2V)ynCLNhBQcaxeoYsfQ>VmI(IB*u6ixGq6L$6LH8jgx<w94C;JSnM26%swvBX zmfv!lwt>UCU!b5T*+YpQw(;`Vi(Pc!Ypa@j`VKS=Ki8|ts}xk=Ep}OsDfrfGJ=A3k zZQW>^4rSv!3#K)XtP<+8q0C)-on=ULt{zvO$ui^#U2xLPKJuk>p^+z*FvcMI^#&vR z1bpk%Wa{*Md{@MmwD(E}Nv+x)uvP~j<r{G_-uVpH4V@)4s&j*_Z)!TB?F$to@1Z@% zuS@#xMLJ$Qzke_G6h`->a)=q_KK$atgVN#O>g9sFau?R~f5+pfE?znbOf7f)xU4{N z3e*k|YCB!oLM&adg{<<a_O%<<E4JwJ721B0hB&I*Y?bn&hkc4OA1wMPI{cO7X8N-q z^vUUzpFo>($%db;pHiXZvu{ObNS2oAfB-0AmwmH2V$MRgBuRkl4>SGbyFIp8Zu%O? zC_~>8WSXP9KjzXsmt-czJpd*7iCG{{Cijmp%zW&3?o8?qdi>di9u+?u)N#=CS-0lP zlRJyhgS!@k>RKq9(39Q8O4jHLh^YfhHoFz*eBC+agw5gtJBkK{WBduR9JS=CpGgD7 z?l}r(gF;6v@7WLWZ>_#TkaZSPU5cN<lfPDCZF2QAkM);*W#tdr>}O`f^}G5$v`5w6 z_708M%w_$%XNGsQ2{4PZEw$abqwP#snH9y`EG>ySD_}?ZRU0`)BtlQZ4Axppx)>UC zSCjN#th^a@cIaz|R6IQ~&Ak0JVhhpfM<91IpWRwi&@)dUt%nT)jAUTohU!498kSvq zy^G4`JtMgcEVe;MP`m!Gr!0G#^7-@wVK0U^n_9=zrafMsC_gUnF4+v&U_3RgTo)Fv z4)2;Qer}R!Hu$jO#~mg49wP?-(0<^HhtPbnsan2Y7=!GfwfbS#d5cj!#gbkPRCatE zF&C<u_LDvMokoF^V1)wHSZ({siwUC1Z7X7gRr2QJ5d``uq3SXv+pd!dj6yq4*`1k% zubc6&eWRq5p+vF26&ohaCoiOthmq%syOb3RJ`m-aTdDRgb5${}>pIOduOqUw=t;|a z539WAUz{zA?kC;X`HeE6tPncb7dlX4Y<d7cvuU53SqN~6c-on>uobN*|K*F7tDq;# z=K;_!Yy>lDXNrO>at2T`$`)x^y1y%Gxh>K*21$!l;)%Pty;r1O{w$|psk!73qZ!kx zzy4NyqNg35tM~i!ljT!~67RFw_EWc=1J4Pa9Fcj32M<nPOCfDH)i;b+d`aTq586?( z=&dAsq2PBvtcKmHoY&eP3&J4rDLvK~RvnRMk`Bb&jVS>q$}{S^3HbLb!?#9qznX97 zSe1VtP)u%B)+s&>9ua_jiwL3G5ZEV@yl4$NeJ1f$Im_1r<>9w`6rC}tGNF_A2&t95 zq=OB}zSx+)(`X7+mGDR+x!gS>-yWE&OG;K<maIaVf$A8*xFw{$)*!1ALXsqlHO~d3 zPvB!<0G4v3A4|V7B?CDqUw4x94J4p?TIkfC<sv*7r8~y9RZlc|Q8^;@DxfG)>%cUo zo~TLTd$%vq%6+OgNqorsF?D03wX&!6Uyd(?{nqXLR?BCaw;IgKmkHecUryS?`4N4R zBR;yN3OA8cWI?sc4&QE%1Z`?cE3_qbw1sDBc|KeAO)m8&EHK*@z0+O?|Kd|TMJmsZ z*0fSfFWD?-72;#!J;a|?Oci(@BTa#u$3-%*csLzr(eS#F+}C4{m>S7BPQ!EJsP&T= z_?JxI>1PNxUYWQtpJsbvz5l|2>r5Q!1(_t-B{fsOZpF-Wcjy)>3-0=}IO3(5jYW{p z_&kTI=}s~KMU9NeALlEq*{JSkzPb#YM>#<r+SxpQQ=pIUoP35Sd+)$xLdUONw~$wG zx1rvpN6pWFzm>^!V=(G7-DJuvtTxpyL$!VY4~Jjg3^{hq=_#$4-$8BhZl~}w&hGyZ z18;Zg7UB!;zSi8Bj&vyqAlaPQeh2?j6z(x$IY+Cx;`dB00v;sC#&xWJKqiGEn03X- za{o<rZV|cpa=QnC4BAI4<Zc?Rk#^h>`OsuB{bT89exg%Mrm*Cz)JtQ?nexlY!0SOH zRQO){E51^_Y?ETkRiWBb70VQ+uf#-&n_JxY<~nKnJ4VAKAF^JF^SM&o+ap=>u{GAk zV^(DPd3Vnw(HxhNykkpgV8!_d7@-qu+3rSvtrBsNc>mdcrPlcN^5seQPja_;<o<+P z-Jbg{bSwDr?iMPHxBUCtsH{{j!QF0+$!d<|+Ve?q#MkKLt*hGd#|jNuDQI(k48&i0 zEk_;g9Qm-<|EMTt+pzT!+fY3zFWJ;Yaov{B5YyRuTj_T2cl2C-$EOLm&$BB^+=>2Y z+nnC6eTl@r<*fq)#l5#Hi!BHM*5SE@qHo?D%df38fQ~iS1<0uCP;khc(aHK9{q~xP zi>+GQhif36hNH49J(opM;ujic@QvChbknvXuY5V`yM^}e7xyl-R@Z9V!p7E>W?GfD z+T!hO*<n{+Ih%xN=WjNJL)Wan4)pYGHl3>`M}=5vzo8e2{&<~GUG9nC?%FJh(gjPT z1NxbSAzGg5y((v@__XPVT}j#Z8>3$b%*iJPEk~^W*mC;Ia>$>(l$CIgfG7L3=w7Ah zsXLKEw9@FOZ@T>M;y1eEPWFz`_v6&bwPhziD)H$6`fFRviMK=9Ujv`m3fQ|Mp_IWW zy+Wh4*X9Xh9O#0XH$r=I@JyENm8w-QU=AWT|GvBG=tBjQYz(q;H#N~5;3IBcTW;Mt zinlWob(WcST<qJCZPq<x>v;i=cWHI9Qm)GhjTdpSokjugXtCoIul}fVDbGok<T|Sq zNj}fIK`EA=cbp+Ms%#-holZ;TRuaskVFlAa%iM9*jceA}2q_T}WAXs<dIjSQ3opyw zvifLBf1Cb$b%;|3Deq1h4KTgG*Gd|kBOe)me^obem&zfjWBxCVs>N#9?;~1r+3P6X zLy8_0V0CJ))rOcx(1c)3Za?e4snP4y@k!2D49rQ<$zTn!XpLgVz6!=xayj2<8fg-E zChMRz%SUwyoE;G!3IZNR-Lw>ogSgeU{X#*koo`L<L?A&PrE{)tkaa4><M>*X(&4~? z2W={+JYN6RG|?3Y@q1SxUE6M%`(egw-A2p50gfzpVaC51o*WK9_e!}e`4`Yf^%e<Z zfKS>f8VFYdD^@H{T4&X0MP<n%cZ{SbIY$;C7CXhmKO?QR^yL|31_z3Uf4;TWx_cMg zPq)hL1o!WHfWNzohOJue@a0jEr{uT`?voYwh6{8m@kJ1;`-d4Vt84?Prad&v^d`vO z4`jb>nfo=&T8mDEK}P4yXf4=0fwnywKqu^i`vFD0;d#N}Z#lvJVBFuKAsn(#hqdnG zTjp+dfFgt$d}dV^<<SG*Q-X=~53`Wqo;-uk7OJNsKDuPM{%Iw+bv2lT!NKNRchLat z>~FsQz_(c(Z)<LQ#(9f6UqQK)D?hO|S|M%Lz4~zKi%gF!lcdly_h!!tZcz6<0*hQ? z-fdhSL_M;KAXzI&W~rWH%|Q|8-2yTU%i@S^i^aVrxJzJ}&PS&%#}v+w%iCy~v|UMC zG|or#jmUp~cPME~;eHGK=Xa+Pu!{TU1W(rlcg>4>*CFKfT1CUbG#a_3y}`|Q3TXxR zWWdUK_$v$RIxPyAuJ&zH-=cpW@!DY^`o`Mw-WR+!smEKY`Q?|wZysV~hYRJh0s<V? z+o4n!nxR9T^dD2#bYCUH;_Z{6(~1w9&F``SGMUI+DoD)R0}tZ!i7-eA0*8!~Hd7fn z(wqOJuM>R3m}P7Bs5PI?!x<~W^iRuVT9v@wv2WgsTuS5&c(q~uRD0%NEx|ROusPh- zU5Ue)4KT)6n!?TdFFD%cr!F^q@;A;IXCXEeJD`Xul4dojI*6ibu`Or6`S#C$8%qru zTReO&aj%g!d&B6xUS)psZ|G=WYVu^2-=<4V{blw9RdA~X<oWE@>KC!`&oaK9dOrgs z&Q^6|wik1(wzJ>Sly@mEStX3|Gx)Gu<(^t89WwMzma(B7pS}JLODbE~vok7296d8O zZ2}hr@(aoKj;|v%jBr7#h1H9Y`oCfUSU-G^9U62N+?DB2DufAo%C)|i>vHxd-MuFt z%IwlemfIJHaQv}&&$4^n30T*AxKk=aWKz^j6qM9>h#6zMA7O2ZHd<-ZE#!XPx;kmN z@P;z5?U&O}oH6`l>DGdj{O8)QG4zO(=V+APnDVk8rjrVTm-#f`;bV}&wCENJ<A;h@ z7PNpJ$$SF0$>jZLW^f%{rk8TqCHrMB&vwY}M#K;$M`~!aVbFGm4^l^!a?rXyyzmwN zz|VXL7JrHAcWqU_49w^`Gw*~uHA$L!lN`z;$S?d_19_Kz!85O0CJdPhddNW3<v8q~ zwyEAb!#fnNC7khE;&##Y_!&YvW$ZeYsOq*^l2$Ul(0(Tyzi42UT5!KRxx`<{+4lnO z=h=6KZLm}m8YS6r=-BG%z|nq&c5cm`G#iPcm5GyPe-onR50<jaOYYG1QP~L2de^H_ zs}tYYJB@MfN}6fa)fvAf?#SPp!%?(6ank$YAzJ4keMi$Aeo|_yTo0W6HWg+^obpPj zH~2l(<J|nfMUHaeC?OVDhjYvHp&+9*e5gz%X{Br+al>}EGLu1<T_-6r%<^i1H%1I~ z*5aqJRxq<mp|*z~Crt^^*I>)sL#OE<XxH_KN!$>We<#>%V_)AcMZ0vKN(ynFwePPI ztH-@?&4-ihu#%^!wdl@dH#2N4jd8R}nt78XSein$EMG==pPk=soZhc~9#C*<k)Ze3 zXhr`{oQx<xs7gT<K4Zgv8T?CIV&$qd>f{U~b+eO}y!lS{ouYwU!TlF&Xs72<lc|j< zHbrAigVmZ<-tB(Lwa4C=TZu-?`V0&*vH2Y8=NXl$9k>!TQS>jw6D&Cb8`s9F9M5AW zbnX`Q<~j;`uzdF6_k7)ImVeHUYpiM1kNdN(U`F``U}*REj!S#(9vQ9Nefd~q|4V6A zz&>x)V&CPTDBVM0e;8@QakuiL+6?#?d#i+@kHrJIJhf`<jQA@f$ZOd*lR6P*CpYBF zwx3~cl}&ml#VvF&a%ybE5+dh_;-n40pwj#9{3gH9YxBF#Z@k8w)TvPKrSQtxIEy`m z%6)Cp!F5RekZ=3NJ5JgCVL~&&<5^gx>j{1?IhDgi93AvDw$xS@4n--QOL?EloVE5e zs{PTMtV&9;Y*xx1e`~sSCA2W#o6g3)2jyE@k>4U|czKhQue-RH|DK>ngh5x<MM$~! zY%uFryUuUd>H~+|U({C^Kp);PTBf_rAk!|~rrYS}&nJJdtOw4b8ebc#2{;2`;qb_G z^8~#OFi!N`u_w4jm98^@9Jo);CJce+9RiPZ2mLAl5=d}=IcdZ89j*N&|LiJQ;Y`X_ zV0JDVg(TcQG63zTBu~lfM(es15&HR#6b`)57{0OR$#1oLbdYCu93aiwlbjb3qGf<~ z$PL^dA(Sdu*Pal&b+dEv-fZF+$57NDC&+`HJjK4HQdhxdmn^woe1aAo=y=47oGg0* z?PvybfL72WkJ(Jk-}3O4pHm-iB27+2f&ada#tzy`rYG6{U5J)MmdRR&G;R_uyX_M6 z(Cr>|B+fLgq^)$_$xgIP*Xy&3J5jwS8*B$18}ljFw*u}pk?{DIY9EOpEKiz2CU@Z0 ze(`b2QSZ7_`Exe@Q&i22l}CfR)u13uw^@l#qFi`i<d^>y;E<LZ(RrJL1^jcYeAK5H zJZ@FuGbk6>kEtx&-QKXtE7_G4ZuOluHU8ON-20fGJZ0FRc6g}3XcG|(i1)M_Ue}}b za&m|59ME^U>JG$QSKzTH2{!U)Iu4k|_us^jhYjWnrBXL5xsjE7nv!g(Z_W7$MAUQ) zmp?s^RkX<d=HGK6;?WiLyO|=|Jld0ABcxSdsyAp>1EQ&R{Bv!*fKn=O;m+B~mR?>t zNu0Fz>kzH!oQJvDCNy931Mfst?({t;Mp;EZix*ym5~ft^!tZYg9|=K5Gr~sY8nLKe z4epdw>wKtoP&9tLQT{B8aNzD^S-<gGoiF1EwUXZ7tf(a|({SIz(^E->XkMR+_H9G? z6+%(7NNK(jObn~j>Dc#{j82fV+Kkaa!h15OMu#%Ym}-T82@{Me2#OF9_oA(-)L#g9 z6ol=Nk*CzrKFwv7^7Hfm*xxO0bT!DBY?N)xd{UwMXPZuWaLbkPoT8O&aM%p*`VkFp zqJ-!dTt*D>jfzC=z7hvHP=OriRC61_p-bbpQ>3_IzVv-;nB&C?c%}N4VBX)=315=u zGmd2#v*=%Jp(e%~&8g44Je+A?xp<33Raz#*d^K8G%vV!0nRRVvO&JL@xZTrcsTJ&W z`o;XW@q`6|(>kl;DIW-`fV`={*rZ)&eCkt<-;-R|uEbYJSw7r9en1wrsk_<C{h3o0 z-eyNLF<BnNCiuV8_wB<eE^}p-V-)+H&z2V@7-YO%Ze;~ryxZdVkSLk!%;#<aO8Y!Z zBf=p*$@u?Z@Yj`DQ`x(ti+g|j3VM(!NoUE|jR!xQG%a}WYuqD?r9w4iKH)=qg_*q# zzX71A@oc69@kRlIuL@sRXVMW|KfTtI{H94M+x*M(HMC;@$A^k1KaJ=oQ<09&-H6L) z_!9=4SMSk%STQm!x<_uF1&`B}7{4-Ic^sl^hP;z)UNpdeE9=WiT@dzfg9J;3o1@EN z*-b&ytQ6~<J4R>rFEMP8;$$ULa?bI+7yKet33^YAR_KyntN8;*Lu2Nm=HagrPf*L~ zl~rlY0fsYwI}rY*U$p!JBGFjpd`oM(fr{3rf(j51(uAQQT8e9h!(cDqXj3-w(X4^S zY^KHn-UuV;X4jEXj_f8RnN^W~&APJcD+nXIMxOF!<Y{hN>5YR)U&9BB5nm-O-5#I% zEC2allz#g&e@<1K1id0qr?PYP^P)2<wv@?C_FMw2DtAhsX+ei&=Xnt7SBjOWo;$0U zaA1?3^|NKVy9_dfF50<`hnT0k6VKF&1WR}ehp2R%K53p)2BFJg6e_b@seqF@P6O58 zAWykAhx3>h^;`r4l%Snl$wn_0b~UZ$d2BHZ>jm%7hXH|`lZ96VVQM4{GB-Nfupjiw z#VLBHXwvHq0C%RcVvFxu2#<Q*`*&yFFi!dgA;^(Cv^oYa;a8I7{r`j6j}-R!faHcg zh7#+r8LfOF$<@DL!%zfQjf7_Z7?}|DsKcARhhf8ioVDnPp-^!%PuII6m5{}50jVcU zYIqEN8<)|3h<D`Ml2Ix&K@&C)rp8NZjiD&fpwq-bmSKF2`7es64nehMP}N2iKT|}Q zS_eqs>i!1)_TvBG@pIU~oJ?))Ee>MMPWdi!r7l%i!zeRF*|=t48yd}7>T^`!8FmY7 z&19x{pDJrLgk1lLMx=7OVnpm!J1KW{;rK?hN-)?Aw_bGn)b<QBmEMO2i?of0Ofa9s zUIXI*4mr)R3l4mY7UK>evi&{@@0H=7D|DL1z>s5}VL2~x6>!5!VJQ6FSLi&J%dC!+ zipt36<809@?_aYOro7J4#U;V-u(er<nPtY1OuKdT^tVYzjw0{t^E1eV^vBao(41T^ z(S^PV{FRm#{yJ@)T8A0T7<qIZTZit;bWRP5voj4g@|2cNrR-T!(HBr<vz;b;z`OI) zp>BhUis?cjI$7WiS@fzX@|#T(Ah++PHv@9p7~BJm=)=2W9uL@cDf2&C80rgYzgqa4 z0I;&WK+RCzeGuIV{*!@rXdAozq0OJHl<!yhLz(*~xWfd%#>2y-1_4<(TQEX6E8ixu z3-7q~zs{RV3y(H#dC;uOdB{c`8wpkpZ4=(swoy5x@Yu`I>@Sg7w85#5W7@y{195S% zSy89@@EycN{9vvBhgZi<+&AbTc2NIo&FtS(nk84uj!qK(Q>(PFudU-*M+Akz((9`+ z+im^zvMNhpDjogWFBzEIv@)S*R#2er5%M781ljO?>;u^>ZkdAKr2%0MJmVSc|LJ!? zt*4}G{}0sqze7V}I*c5M?og7EQ-{74AzSSb40?!R^QYO~<9AiD28C{A+Sajmj81q@ zF#FB@lGcVQH%3ec@Lv~T24#PJctHqaBg8(cdv{7T;XMq(#cA*<O-zb}sAPeCe~aKB z9v#fi|1TaLjNTWD`MN1J#AtvTH29uPA0IAOWd<f1*4=`e|E6if9*-H9HHJa3OXxFI ze5@s4;oY|mdbo6?aqqsN!jRzGK1!MghvKr#$YYkEM_>W99fN2X-0*}y5&Xe9h7=V& zj%?l7p5V97Cl`+<aE%4ap6>n5TR2gM6zF-HJGLhHAmSqm@8wR%)Hn8w(LXmmX@hQp z<?O`|LTt*EsoTMB{&@b_P)4{v+Zg$WO6RtBZvuX_h{0svq31i?aH~=9O<%QfGYnW1 z9YYI^8cFr`N?8Sx-3K&pTlfMNu0{c@(8JaOt8^`3thBn5TCSEU>l;sJ29TI1!lM+c z-dU#OLJMAiW-<N4Tic><H8c9?3SF3X7^DMYR2LGMoAR9i$4mdAQlw)9`9(mk+S=R- zk*Y2yhE3<E@H*FbrSecoI-qYoxV28ElMC{?1<Vir#U`9M=u^kIDhOSA27UCxJzl(> zS@w$gTX@{Hsy7mcwxL`Rw7~x1BEM2+UcM3`)_9cAawYWH<^WQcAE0Onci^uf7B3t` zjJ`DUq=~?;3xG4p=M^ms#5z7v@<%DFc=Qm}9ewHElw`?49!RHy4S%a22BP8yY|Ok$ z`;Sw+#WL8JIVQ2(3e#SnX!u9>ee==1GX66B_`H-XiYXnja~H7k=7G^`qmix93<?Fw z|2Jwl%=&*(!)&=JSsIP=3%dN_pm`cZ3S&{C1ibCP{p(*HX!|vQk?z$f{5{P>b;uP- zJ4?mYaiIhPBP75$fBF-0Kp1oy43A28dy3Yyu;ch!J@J?-PP<<k>Z04v6}jGf^@b4( zJ%h+_l%hT*7}M+jFu4=b0$aj1TV90;{$pBY8Us{AAqlDni5vCEiJ9h0Xw!ZV-lZ`p zqa2h`%o5>rNn~CPk0K+P6@DN23oG&Wn8l_A{V`?Op+rF=X;>X1Z@9kH>G(jo_*?-@ zEdz4U@#+xr=EHJW+c&%>`i{)F!^Ak~?&?N$K|~+|gtsmY32kmlly0gq*HO%}KoabQ z3JsHIp;wGBY$_w4N2%`XYwC#kYfsZP5SmB8<CyM3+^b8g>dZ?D5AS0oI)pVCYoG+` zwF2H&z`%ugSdBgtFAUn}gc;s^>(*MY`@4s-ofkW%rKqn7+I&~hA)Qf35^}BWyj^`M zh?fxi+-7N_?)Tn-8k{uQm!(Nf%&YiGn4x5P5vA>nKyA`ryeltN5xjB&DHWYk#>r&y zv|P>)r{^e)?rsE_?1Y`C;v(TGGVFm>n167uM#zQCjNoHcX!^z|B=m1kFA>D%^%s6F zfB|MOj*~*X&6yyXPl8ID3RGij-`+dAKyhZwznv`Cqc&iT204&EC%0VM%?Vyx>nxhO z9Ok_}>i@|Yt$!7qml%1<JRw*r44Xcz@_`X57ewkZfZLKhNsSC2H7BHVUfol@cU}qR znSDrzmZ$R8@J&cyc1p0l3ZOFAA7YqP%7M|Tx%RgrO=;^3oGS0mCuGhz!~FSK_&Z=s zJRd+D-Y>i3ta^IhUyJt#YSSw3*1#!jO^cSHezDEp5K3$iN{jHMl`*tObL9btb0iDr z>Oh=_kcw_GNv!YL5f0g0f56^fL;nxA=z?LROR@$*gb$zupTL28L`c!0vV7SRGFe{w zq#Z70TnAiv5Q?3NtFP18wuc|pzAt0-^&%}-gMR~|GXYfLSy((CATnDph*VU*F$SWy zIfu0rGe3lA5qxWgpN%(9<)j36FL2E`6**o0N(t^F20-W(i(}_L#7q3Mc~vco<D_Jn z9`!LeP?se^gi96_Zc|+rq=XPHvvEW?dSq>(h%@Q|8hT12Yot+&TB0rkJrEFPJUko0 zNdBB0hynasl=x)A%<Z1)_x8c48V8X|#O_pAAGBky?(E#n0O2^{CtOAoBeNZWOs)z; zNG0Ds7uV`W5D4&xN@?+X863i6M#>>5^S=KeF;3`8wH8!c4%T$Y;&?i<6ECfESrwvn z7lQZVJLZTbNF-Q$^Uo~7PWi*h3x#LPD)?3)<m_8>#ibdaJ2Ti<pRIMl`Kqp$IMpdY zbVxz1Z`cb~Oxff^>6<vqONU>hQ#{4JiKR0BfJ$`_04>8O%{0>4OM9EgMNr-(Xg&>l z4~V`E!3D_O{P#>yLR(GUbPpp-S~5i{>{NtFn@!kISpvmU>R1(HzK+g&ki^;AkfuJ$ zE^j}?`aGecp#;8U&J|7DKrw-e{<pI+kbAah(g6lYAUpkJ364{OQs{Jns?lF-lAxPJ zt5!%+)<)&;?o>2OLl6%QwQP$p3UmRlROmq=?J5J+)y)-w%%drIpDzC(7m5`kB>tLo zc28D44Zd{~3}w8;w}sW5_(Z}_jRZw%&}fB4YZ7_(zuV$Gg3o`Yyt`!wN;2TG6}n3| z8Nl%OAXm#(47k(c{LiVH`FN9Liqpq0V9mh~F!xm+w<+=E@!&aH6`wbERcKefQ3##o z$7o3Gb(%bozxeXb^3+cr`z5F5$dw_3g}Mp6=m2R%X4~|`7@l6iwn7riO4|jAXBFDU z%~V3#$;(@*M`!_Z{^3DL1tEk%Dj6z}wss*ZSP(SJ2FXZq>LO5|bG3QtyLnBvJRJRt zb_DoFkHTk*oo-pm2OUdG+Ne!b-DX2Qfc$W<x&0b{D;aW?&hexG#6#H<^W-4}J$SCZ zEV7jlY@nQ-q$-^rOuDm48w$gFiC3pCJ<U-FSqb`9|3pIp6*=lT@jA?wlR@T_4Z-`% zw>%sKTU?Mu(e)L50Z)cxr`KJiuJJ^(TLPWqkY;jM=cR%x+H%t%n)zp)22UP@Jf#c9 zEEqul07W%>AlJD3kv)d^2hY+EX&Wu-Stcn-Dk9!FQMM*m2rneEqrqyIs>u*CiMJ7C z4i&6Wei?&rN>hAW=L;jx>;uKqxWo(Y@El7pY7mSt>c%aOJ@a_^f-Sg|%XmTBv#Qd5 zNmy|wFApI|@OHhjEBuy@mlZP)PX+-XCTM7GfVzZ*-NFL{s-i;L^j}^o4UNtfz>9>1 zT?-1)Qc?K=0X_5o`z!S-%t@*p%jG~@F+vH5n#^*1TNZ;Z3jiHytW8IT*IqIkZZvOM zUQKioNsOrP8kc=YS9A5K8nb$HQR6LEAHPNeA24Xeydz;C$f3BxPSAAnynk{v@=sc1 zSeG`4zt@ut2~g?3*E@b8@WUmLJ;wK*rKPj@Lwa{*pF)}t=g9kq-wG!ak>*aX*i4<+ zLalkDT0o5Amf=DUw@^&jEufac3CcK=X2SL0zuI#rM`st=*F~i(i<g-nGP*O>`?F7j zOL+W971GpUD-}nnK&Bm?7|Ex~{$4>MGRIq(C&PXgH4>Ynlr~ULxO-2iQ`*>Yb_I14 zBjqn6*obfA<c){BAb=5PN@eopVTgp1y4;O2)KXQ^=RleS5}2+0Kk)n4Ls9y1{M8@g zcYIh2eCjFxLoqH?0v=#gMxIJVC13%yulF%T*j37Z(*8x!Ty%W76FrNgB2-sUYy9{o z?kX@Hi-;QRT#yW{XVw0Yc!hW{>Y<8f6bRo|q_271nqd5Nu3J(@)Cui_kun%EC&%IT z$>rXJh7z1nr%_V)<ejMmx99TBRp{=4h~Q;s>X20UgXCIoLSeI+Rg74oy>x{GJ`U8b z+WA0*@^524>a*bceyh$OLSq2rSzb7<R=bu5bey2D@#XcXmA^mORY%@pg{qwUzE=SV z6w9I@9#0<`*3$AXwL7V#V14@BZ>c;)>W4!xoURZ@m*Q}F_31N_v)#qrB9F!Em`5sK zsFQ2`$*r+I2-hZy<?-x?n$M0>F%C9w;ma@crAgwhCT(q`IhmaXG|wy8p}8|efp!In zu3pznhc+$h{q31sOoK>*y~MoY%8}vA&P$^$a~&uJO~`9lCC_x9i3kv#!L+`7si&n9 zFDoU`-1;I^qkT8sDhp1>v%`vZ){srCT~j^u)%$z9Z9Kb5x4mi3!)kFgRlmm?r++g8 z`nMfhY@Sm(wATr^^OTT+!S0W)h=&!&yKh3EU=#Vo3E~2^Jh6FnK3899(Z={dnrbED z%v24f97LSk=Fvclf>YWh>Lk@l%q&gEB>Gp!59_*S<%Q6;$0Ko}kT?b0RkX8aE>OTR z_!RyQc$S=W^;>mZPd==*eGXgq+Z4!+!tA4APeZy<`M-q`#E+(5x?I_c#f6hB&pJC6 zv5%2^rSt3j0rAc0aj?oYps$cjkqk+@Qk6H+lc8Hx%QNX8Yi?%>C8aSSMi;o)iz9wM zUjgwpzFEhLG>8BY;9~9WCFs5yP4*mN3xsK2Zdji@B3Pw85K>MT`Q<s_u|3Z#r^pNX zCMU4GOd1Eb!zFUX`V@4-Dh2r3rF+ACvep#~^f_Q%2WrcBq1Ds!-$KLGfch**pnqzd z+<z>bNwYF+HrTCEvR$2kvpZ=XgN!kT&<+lO5cKbfI1OBX(#D4%KLPAvmc858{lqv{ z;I0e~xMAP@kby~#;vSFT`AHxTGuLRlJiUk9^WjuH0-R{)_&hO$)#M^hI_P)UM_zS$ zPXihLV#3I=RvSt}6Z;M(=~axJGBSMQ{4$#*I2$iAY~lP-pO#IZ-3OyGC6I(N5+*5T znN&-^>5hn>d`ZCp0WveDn;r7AqQRA6*LRrE&KYg@5VwW*K!Eb?AUy$p&Yh0Ey5DD< zK>jkUfShUzx5gTl_0;o8oLbGJ>SNz=T}pkr&GOy}VTb0*z<0yme3}JAbcG-nB*QCP z|IXWeSn&huGa5`wb&?l--xN2-9Z_}5TDOYzMeb+Es!ZL=S{4P%uVFxZYRo8*SgU-J zUiU0ef=!FPyI=P{8?r0AByBKCQ6;(7^ZT1>;{#y??(`-(NCvTbS8|^Wx!l!#S8<XE z2q*U=V3k-3JD`CB0;9nXvuXy~9m^k1Q{f~TJ|J_%ySs><38jACBu}FE-RII|skFCk z9@w7N<5X*{)y9?GskJu>xv0c5>VC`Oo1c8l2ysDU1F!07rlbFM{jebcj-g`M8X;O3 z?JNzeT(l`!)*Q<Iv=N)fN~Nt-L<gwcTeo)~<#&H8(i>>7zGRen*|})`PPM4BhVDm; zg#g>D`>r>GZf2d0z}@8y>aION<pE_K5F}$;tD#k&D+Un$>W)4%AAi#m><<1nWL<5# z*W%TWk6QgDqbYn%op>6N{MjOg5AMl*FkV#|>8v(pK~DLr3G7Yl_wdav9z<9jr!zMB zTlTWAwqzLMIZ80hL-Zc?C#?TErwdYt+|{>|F7JSL(TotGosZZ2u~cArh<eBPGc-Le zzCJXBKO6N%Vg?74mcJ-!Me+J*&J_|KT?-oE^ef>h!3_P}XZ#GJ@)w>&!w>^Xn~$wU zu7wiM_ZYyaJ|2I<)SDJ93Qcj9cA`Jj;x#Ri97P%cSQ_V60{P?T2$&?2YhN5eeAX&` zf9K{YMbKee;xBkycsn@iR5}p<HRC9qK}Vi4zCFd9CUjM#2?T+|!WXd9{VP^u?V-~X z;=EsUJN8VfgjZ|VDeFoQiBn^=<B2{*VGwyoWm72Arrr#o4%ghUhN^NvNk={<U43U- zR-(8M=<LiV8?Jk0szNma3G$~XE6&NaP&Xjcqewkr8@;D?He6~zxVQHB1cgC-t!=IT zzVpLZE=Xe|H?IwEy?s8I()RK@JkEXZ+tPKbMIB<cEZjl=lV&tynezy!B^}t0W7?`G zHyM1U7v<jt0bSeA<nmHwAj10woN)5dS9rgMk-G1G_~m(}gGqUP4wavB9XWM@sDA%K zCst~t_)f{4QquQN?TDH4C>R=9o<WJ5-UHwmEuWqebV~=w;RNhpmHj4IoGe^yIqM=| zhVM$9PSI){&V#fGR|dF}2J7T&Q7nA%SGyZ<*B=1c=ZX|!|GG8ypgKgj<Hc(TsFiVk z`R?ZuUA+6^4Edgh!uOf@93OR8^?;-M4Lo!~YG&_L137zDRgL%joQnKVSbM)6I?R}N zBGq$V{%6W}I;v}JHA;(6q=^X#ehH<k0YDT)>z7YPL^bD)V`pm+ZhDGW{S2x~s^uQ< z`xZ3xBe2!nd)2;=(hoBO3q`=^19EZS1^BV?xBR!>C+kn_-YM`f`}dA(E)dzm6f5dK zNdm|b00`XyF2-9~#8rL|xB1hErM7vNG#689Kx|YRAtYoQ+w-IlaRBkcWzV}<J=rPd zfj*8{!iEh@=cQyA@_3ZtRXv4vHq~)HR7nM1$KxE>VUSY41@`6rn`1Y7KYBc<*z&|s zm&a9NWgtKWae|KO!QtVA|B6oLamqNo+%xHNO8pAsa?bW_3nrOqh-(tS+A?)fYJ4nY z|B=L@mas1kHHW@rSDFt=+Jz42mL16l)d9JS^d!J9Z#_z`ohEa_au}_=v6G<GO9l9N zjTXSqDJIPDQRkrC8}qw0%0OIh;u3NXadlcrAsuLExH_f^QWTSzddH9hBE&9Z>^y~F zqY}!jb~rdc!2#t@PgR0xXZJlUT6i#Q6MsUYW=Ln(E0<ak`N}H#0{@Y*G5Fx{a(}`9 zhL@l6T@^O~@Xn)uML$!OA*m(P*aNW+!2#qfxfnbh{w^TvKZ2@%^l9`pjh**vheG_a zfm|t*Tn+=Nt26!=IRC%ZNFEC)HyJmgxdHx_Uc1h%5OX`mHlabFe!`bF{kO1I>Tc8& zkY7a(hKrLli%-zhEku4z3x_e~|ErF|BQ?ijYaRRIX$0(uc>f!a{;5z3fj@tVntHl| z^scsi{OR^+b6Zn?e;e-5+fvOMNxh7nR$?@-(n@^2^m+sUyn45)o|cL4S!Kc@86W>6 z{kjzM5D9f7lAFZg*QAsHzczJtqCN&ziH*D01Rp|04QU;o-|NSVf!l{}_0LU~)9&FS zqJUMv>CO-?>1ksWTv>FlxJ>Hw2GfCf%>)eJNB8)_UqHr5kzC77YJp8`Hhm0EGZ&L4 zE9AA1qoWVM{?74mHa6!?oF^Pr-FQJKxWCOR_$gEhp?s|cB>~|I!k=9bqs24b-DZj@ zp={vzd9cq!`w0P_FMtMLmXud|mQV<WcIbds4Sg^*Q@|ZT!M71wX<Ghy%r5hch~d9M z@8R7|)vQsVOB!P4RRH-Q+|K94-up~DZQyzUXt4Ktm?RT7PQ&P&|MfN?)9SwQEC5kq zHE1fse>8>Acfv`Ye<)h!>cKGaj`sJf6g_}m!A%+bYfUJi`ZL@r(MnV#c_q`^YYRrZ zHS(2|v@%rHjBV>PZcTz7=l)V%>q2g_l>rox5)6M<p8?uM=aJ+qyu0>*Qwht~=H=O; z`&TJ>N>=~>0?h*%n+R};aQRdY40Sbri+SZr<j%kOf<UT?#5EkKQ&k@MLX*S%+Q4@! zfHp0Fuiev`=w*yn=4<KME~S(FLp$_<;iJmrg`n>M%wG^vTsH(>4EG#r-|P|Wuqm`O zZ1-R?qx3*;g1JoEK|U8~JTExNuLEDXU`#0yr%v5H$^4;SBWjZYClQkFm0@vZbU?3s z4X#uU$4O8BS=MDCQBjHS__dWM=m5Kye#5$V45ETt)kriDr~;?@pHxp)+AUAECw}mM z_3N-W@WRlQj{?l~N|hS4^M1qwZycfvHq~>wf2@u;4!-vk!jI*Tk;D?=Ow_&HB*<N$ z5^GXtE^GV&CL8dF0?6F3iSnk4$CVFWq-s|tXR&7(?!=1|bC}&JPTE|j__XPF2?bq~ zraYRUOg0sMcsow&wt{>7`mSX5|AFRbkb$p+04oZNwB*JF-=_U%+m-(r)9(URrP)Er zWeyNJt>gX5d5}TopUyWjzqv#}zXm)4!Y#1fs}*SgUjWzP!1yY!z$y!^R;XuRuc333 z{|9{k)27mKZCmxv!bZ=m{}P)WUi}}$W?!1<e^rC8F6dly#jZW>Mqx?^K))><_fZ|V zH@*GBFX$S-PlXYTbq60@;kRNWq3)1Kd-H%<aOc>aHNzad^XL!m9Yk%Znp>WQ{d7Fi zxmQ*T+Vx~f6yZLt@_z+f2&4Cl035HKr3~}60}v$)=WY!pZSMA4=uxrhegL_u#Ho&B z#H8AKG3!0rLCV#GS<};|&<<d#c9t@9N5%BNX@?+663*S)N#fk?x6lQTZ4=<3>SU@8 z0giw%zwb%4_<loxy?RpFkBc#j9dM*}mNNZ{k4q(r7w2wmBz5i%w96eZ_<8Jcs&Aw? zxv$sE{)x{wL2#Iv={4C~#Ni%<aU#Y6#MobGXCO)>&fTg>`rIAxPB;#bylGhq$e+a< zt7e`Ti!VlKZ`BU6zkGVm+0NR3f&Vuz=$l|^L$Uo-?HEK!#JO7?^)Pn_+(H+?IWhkj zZ>pMlmos?0*UY|aCt4=_zxM7fM6R=r<M{V~&Yay%QcYD9qoA}GNzj59F|Ex`d@YTF z5U?~9G?BF0h?HK~N}(vefcT096%lNZwy7b_g$Px!U|F&|SuBlOwVI8w3clRb*y_gY zW@gUw_aeJ=X%e%ub7r1%=KMZ4d$Z>}zu6sr|2=1BpNSpj95=qPoiq=72tTK)Pb$FS zOR+PEj4JhRvFg;jSKO=CA?YN|-vDndBvm|Z;7ADh7bloKJ<Np{Xuc^;xQ7cn5Um^L z+5_;1EX-VI5Ml=r8CB}t{?)N}SGD<kJ8ka6d8n9N(Y3)Jv&0^1bZ4F%)L?RMO}mYM zyw^kWQSd!LHi&hG&5aL_=QG+&Mr6R$yS=M>@2+Z~JMV6ElI|(sn!b~jh{4|jb~s7G z6OHa-%Q$hapYu7})^{7@O%KT~gWDXU-)<_FozBARw;D(D*hxf2oqBh5)VnLbbG4^z zCzA)jDzVS)8nrQgf&0_IoF$y<cC$ZE(ET^eyl6{XGCCMEuU@3FvC#<EddN3JvIX;P zI5z-eaUaG2nSX37Zyk&sL!>U$yXxIudUw?Wed({oUjieyDgP?{cj@bfs41fHUuEG9 z+jVs=GCb;C^=>b{+tUZQci1`UiBI=>oK#-05SkgsXJZEusT=ifZS~x{|9@kdm&urJ zfse|YG-UM-YM6_}q28^no_n{afew&`&b?q~dOc1m>t9)D+#frHNSYiCWp+w(v- zo;m}3w%6mNqRj3yrv4c_hDe>McWY*iy}PE@WE_%C+MLC?el5pKMVQTI`E*m8$cV(J z-mQr~dbj5*bO3`8^5i4Hf7WumRKnSihy5DnBITgot%bgNcTEEwV1i?Rbn`pcdc2gI zn}1@0)?DlyBJvXT?r7_`ch@}70mk#z5kMP_j2!#kc;0$6b_x->n0j|q_20XF4RnAk zH0}a^-S2s%G=7_f?x$jh5RuDM?~a^8dbjU^ZcHtPkn92G`#qOLch*C`$CzD+9YjPf zPrW-*3hUjz2RbajuEPPA_T80A3U1s!&g{w9K}6)r)Vm|0(B3U%paYEOGl#+NF6w+T zY<BN>K65m73K3a7^={P_+q;DgbbztY`i|pYFY=r+c#eH}EKENTJBNt$PQ6=AgXrDD zH~V+6PSSi3xV`9e%OLonEVTBSZrh1emU_2p2GhHRUZDdRcosI@Y0i&|KDQLhoyW6~ z?bk3DsW$a)bqun12ljD%&bIZPbluNznuA(H`e1%6%ftKij&_mJq24XI0rzg<SLn-( z6X&vgVV65U8PpoGHtsy0<%=KCFc%pu>fQ1hM(+-6pu>eH*O+hG4gTOD*O8t)Jmw1@ zGESU}9YjQmr`|24q4e&+Zn>}IVC`h`tA>4g80*QUIecX-%-pZn%tc0@dbb>g*}Fp- z=*!wk^KRe)27G5gF5-sWmxXElYl}$DsCT0odhZT(paYywciv|1-v_Q5_S!Wy@5UY4 zG)APp)Vo6$rFVxu&;b^i+>#`A1bADF^=st!9(>O@t!HBg5s|pmyF(MLcca{bnV>b7 zg~mI8Z^c-@CLYPc!gdXF5drn?kVNg>C|Bq!olke(V(tfljj^+gh<P^-T-f7TMC4-X z-NKckccTw<fJK^{laz;XZit<w(#&Q<-rYCB?CIE1M5Nr*y9Fsx@0Mbq!_r>FX>%{m zH-Oj1&Qmcj0AI+$%(o3f>@Xry4eH&#l&*J6GtiegH@>=)q@M%sLjPuQB@P_Qg56_G zKOZ}ch*Xn$w<o3T-O>&8Wo;(kPMUld_wBK>l+-g8l22wFJ03fTh>QmH?iH1~cT4-1 z*ch#+vpn5_*~fuD#m-Y6b{gZ3ENt3V)+d#SRFiu5a;nk0rM*I5$suW{&0Ea*Jn)v- zc_Mih<7-*o_@Ob?jU7frMw@yUs95h-VxTW`u=8p2g9&^F=la-rhU6KHZ)W+XM~$O- z>@XryFY4Xu^lqgF`bwR~&RrhZ5560ih@Gck3&4*p2|viX$DfEDMnnYEyJc6|fxgVS zX=5i{+)ZFF#`~!9V=_+QJd%a>A>*ktvEzt{T#9<PoT~dvxP%4Xc}*kny^h}sTo*gf zDmd^vgU7m|acCV=e~BGPM5Gt$-SQZzfxeQn<8|#cd6zji0Zq#DrjF-;7RF3BZ~SyU zQ-6ycNJOLv>fN|TcA&r90z2NErs;d|Fp1d~oUIIgXQbybPU1dy;fa(!xt?Qx9q^hW zBBh|-9j@98^h<G?uj;^NQs3&HY%#bN_t%i{N}Q{>@Y%ty0IuexpOphI0`tIGjClg{ zn4NKW&MeH4+sO=088a`$d1N9Y<)q$~=$xB3I5%&IokK*VF4VgsA|g^d{{stSZ_98; zPX7P^05x<)Sad^gZEa<4bO1wdZgypIbY)~9cWHEJAZ2=IX=W~CZ*3q`R!1OoZy-=k eM<8QwZgypIbY*fZDdQsm0000<MNUMnLSTX(;P#UM literal 27153 zcmeFYhd<lj_Xqw$?OA)2+JaiKH&H8A#NI{hy=w2-+60Xqd(_sVXpLGiYwuE}sOq4U zmj2TB=llEp6~8<l$s@V<b<eryo^zk)o^x)V!1OiANtj6h03g@adI$#qyn%mjB0Ox% zG|^5y0N{Rx=^CqR`s!j^{{Pqiw*r5+06aY4b`!wC0SNE`QWD_LI&iZA=t6+(C;%51 z_&N)G8V76*f!+!r#s~O31$>zXI*I_FN5Fj+;M*K<y#`Q_0iyf>DiQd-4&dJbD$;<d zHb7Gm;9>(t8UPMf;GsNlz5qCz15ETl%46Wy3LwY>5D@}U6@ZusP>=wAE&>g?fC&`X zcn#d81P;c4%{RbeH!$`bxLgLVR)LjQ01rDrLJZJR1HmqUlnC(d1)w4gP*VZl-vL5= zK&&so&kZm$0DPQ)k`y2Z28^_TizOh?30Up{$Vq|zDqyG%_%RQJx&mIdz}5ip3JolD z0aO$~W(4rE6qxM<tPFr?FW?9RnCk*EVnBK*P!I<&&;l@Z0G$Rf(gAHKV4@k=83J~P zfk#F_VgL~D4@7tX`VRqQ3{aZ|1R#Kt6d*MO5Ptv^Cj$^!z|S5iOa#{Y09Q+Z_AU_a z4h+-+)tLY*6HuQ6JkJA6b%5b|z|j=g9snj=f%2z-q9icg4%oqgrhMRaHLy1VfCYi> zG9WJ&c<c<kC;^<zftF{0yER~`4@d|B9yY*-x4@HNpt%5WFaeT-0E8Lfsq7etRkLLv zT;B-z_2=s*F#*mk?pZd)Z`A3-z4yTi&W$k_ohd$~CLH3QSKllP98Ae7t5O~HO1<Ny zAF=(e-7Fdy=1$8}F)`z)N4CgTi)0$gh=y~ewh2|~bd_2}B!<LW8^}oZ7yy8Cxb{O; zV@9Tv!Qe+r`)kTOd?Xw(C)F@oS_a|GmgU5ah9)nsFTbyfb6K?^)I=P2h}15!Tvw@I z>XMqPN)S=B3R{=gF*a6Ia9*!B*t}7WhBvfN+(e9p&d6Q{G0}Zuwu}0#EhKLjX;DPM z>f^e7`=Mi2xyd7*fZVccwUX)e%JUJnCKd_Txu2b9v#+}&&sgLhy9TT+l~|Pqe%?<{ zhYKL;m6eY&NY^(bM!rawY%~xnxXmAL7J0w<a3IBC9XLO0gnbB9-&J~*EbrqQZL~s9 zq?Ot%{o>8;jB>G`M}r~sYHxHw-fsQ;!-Bqgihlo(4>bjkm2NaDk?o5&Ritt+m79ni zK-Gh5)ABDA+S&}EODp>>oxN8H&HTO^82+yJo2O}$>F{H%S6yB!=O+Zd#;IpTT|Ea6 zE0J=r;RO+oC?kfqvBG@PKEe8GmB{PNz4gbhK6KK)&2wZfp4%;C)2Odn-pjBO_D=6! zy8a;l_0S#(h174Y+xS75KfJH!>vY?g1LY}r_torO@oTY9>$^p%c4=tTKP(8Fspbn* zg~)xr(3#bigz_{j=B^j}KA^VD?U3*EbVWiX$Twcf{tn?z+?)Nn+Kx69FqBaGG?QzT zWenH9Eel{~ss6D2<jZ=O3f$fQaV<?c{ClIzWJWDVy`<}QPp_c>g^mBGyfKyCXJ^rW zbt;V&+*aG&1ncg<@ZRpJH53rGj#B;23nP@dJ<(T|hRUAiP}EkdvclKhy8g_A_MdyR zzJjnCey;IiVX7`(==K^Tfc>0naGNx)M5-}&d4&lW_XqWSD8&AxVJ=(iBSpdr4qPOp zpd*%D6iw*oo$l+)AUd^`pjRZAcq6%D7v$3?lN%*v1p7<;UfvSW#0M|VS~6pQjEM0C z>PtcsYpuqFVM=l@ue3GlVSzrubjYvzZUH@p0*}(IZ2c6B+2Q(!#qLOwnV{ej61sBJ zU>g@C$-}+;FGZ^O55AntV67?Y^Sc@xV~}MKRtG;8w5KzZN%Ww<^V8Gdw=$>gM&*#l zUz`-v;oBvvZTQAy5^hnYhM1z4SOOzj>%>A>F+Hmvzor(bX?9<k136V{7Ma4tf=$QD zSgNa{Le)u-H1Mc}X%LU!Je?bCMoWG-u+lj4g(40{?33NXI4CGEy+xKBqx#7<%N;4# zzDUZfBHIvDo1{@cEPpy945N_$e2L|ryxgHj`W8KfUpcz3@Y4OD@9s^P?y5OV@!RX< z``d<{n*49fEIY?KD3v4L4;;s()4V*tFXnU5FgE&t`2{<TU!6|!sYZSLPtOJ1@0{)B zp0HcN&t*}83oqB<mV!-NFOS~U+J*B(!`2k<zD=cPeZ^9Jv4Z6&<8xJ~YB&44`;mnZ z9<2BI&R*zWpSeG}GA-I;SbAmmRu0T%JVVz$<lUs+KbnMX-e`SKLZwcEcUyT`d$B~0 zqgE1q7phkHW=`zB`6An3623zzyJ}x!i!#3W78_!oEk1S`RLr%Vy>IwOloe*Y_6BjN z=xb0QMV=0QT>nKs(aLlsqHFhTJ5cw_C%e}s3zXh&OTtTah~>HfJQ>7%cg|BM!&i+B z-J&i;_vT;OI9BGEPB!j5RiY_-zm@8TUa6cFImI)x-dL;qxOl-U!x3OTkzku9-v5*| zfOn9Xugu%{hir@DJyCAu;79a(#>?$bb5_o%!udAcjs1_d#qh<X9=*e8eiA*M<}bZ^ z3%oV&I4EGrQ-E&-sp_iRmRW2T5IaWfr=T708VRjeG3RkNyTveKR<DQdYl3%mx0PCW z@x&I7<1{pQVgtM(CuB@Y_7pVBzv56WwOr243R`s#gSURVrDQYF{Ql}N)L0_gM<JGT z(OAZkHx8GVRMmaxzN|cixLfkmQtytKUqo_}2G4U3W_EgKgXbWJ9R5PlKiY30@$zX< z-LBFYMn*UshN(hIwtfqGJFvEu22~)JuVVMiF5FB;EuLDPX|oM2KX)^zq@I#&qG})S z-V_j^H~C1WGOpiWo^43{u|S%`nn^9dqyDzBj*|~>SFWeX@JWSzGHrs}`G<l}urIY= zdkxYxo)t>opbUw3r<#cjx4SpDjg#lPIQinJB)iA!ey!}0B)Bf72s8`}94ia6?z+7n zuKTro7$;1mSBBcC%lNQ%m-KF-qr9Y)K*r6Fhy<sLhFIgD?MJ=ZM3YxrX;00_<)zeQ zek7Tu)i!ix)A(}|X<}^ZHAbozdO7a}i3h`oP0|_Dd?jSCWEWcZ#E6DhpWqt`u;3-T zaFV%AM>`uAyKT_fo6A(BVAh}BIuWVGi>E*3BbTq?2w|cjty5r@iI9scSnjJe^xI1# zAllx!`@&eMyZ3Lzot7Y-$`8YS(+gCc<3_z5^$|J!zw3$O@*k@QSAI~LG$pcpljBk! zVPYb~qUsS;W7zDmDn^dOQY@c_3C<PN;CSRV&BDCjX;+#WlP;J6$LF-n%FTFG;-6!9 z>b}W~AB!1}P7qMpfP(MVIkPge?AOuwK+2u_U=Qh9D?)v^U}mK*$XsF9IQE|ttOj&( z*>nq3ReSQ1V2rF{R66@~6R4I%`|<bBMDt$?SoWXg*K(@tJ*_mhZ<tbznRzu1DyVv_ zrS@n(prIaOhRV$tsFKu^#4xRtWbTk{J*1=Q;H}{jHQRPaa>?CKEwB0%@sLjZUmJ+w zb{WJV;rSHXMppH--hyV~E>bYc*?20bmmWuZc1@cuAoJrV4t5(6F@aHG9aYi!vakdU zafd%u7V@#i2z>VQ-K;|Q(exkNmr=%|yVKFnt>ykKJaJ5lvXVk*ZB;39{@RYw4nJoC zSDkF29eI_cBaY--`eo5OmEqw9;@-x~?Cfu@QHEjx+b@VlyP_-h+QX->jYbNq%QE;I zCljitUbTyrMZKu`V9*ifwBXnKMn&}1?R*{Ml^V?*hus8_jY;S8^61@fXf@7nD_F3} zPkRQt@|9wxD-k7+b^T#g>A>-VAJ_2Goqo$G?Ca^YPnv}cGY(6?=%@7Q-mgNn;h6W& z)z}Mbndx4AZhlB*`bH|pyZ$C(I5?g_ld1tHp0H{CTd2?$IP{_No!w5FbdohzA*vXh zVUMGX3d}8!+E-OFy)eb-hu?<{<tkmB32^83IV*=2e+9b{4a{jCrZjvQDt6gPS=xgN z<U1{pZ}4&gZdm=(6_$2!0WHz`govidpr!78-<cl<rjZJQsT3h~WH>VDUPBJque85> zRR2C0wKVawpK+IY5MZr6LNRI?2)X~O#Y4Ih;`grY+t%t3Pg;HU{pWVp$=$Ha+iOgA zTK#vCjHIuHe_9L&Jr;S%Ur(+LGBVrAIvkq6&BJM#eNZ~gcpa`3QLv0X-r#&*V|!h6 z0djOUSKXZ>ds{vJnTO^nqd0!$PVYvhxB#rnmh{a}D?7~Uv-X=3Le3PAY(CpRj{J^} z7-jHoSAc<pfQpdSfXflh-<fA2-GARkX%Q_XXD~84Juu#{9d@y?WTt!eczUO!9XdL& zC8FE~5Lchtef{Y~_Qy{+V)+DI8TYQ6D?+N@mqhK-_ir&7clmht-ATq*KQ?uLJr8X# z#5oL=kC1XERLeJ!4N#(9&DtF?Vr*x1-085p?}Gdq6-D>w#UtEd$*7@MOIjg~Z>}ao zl0NUd?6d^5h+|x8%kb^?$;*aC(?w=xALcL?8NDm8KenQdZP8a81K9;BvAr&|nx>*N z`G{bzN03c_8KL?T!TK6{)ns_<hF!ZT=9>svHSte-s&~23<K?wxq7v0-;GNn|iuAM} z+Q)R?mS`p!^Rq{;P+FFi0ld2Q=BLrX>ubFR!`Fvb9>3g9QXV96^|pWX;_g|x8rdh) zeEe7U*U`yd+K<6>vq6J0Pe+-2AsgUl|0|RcQ$~I2PHjN6H_~Oxa#+(*6Cq9(Adpm} zcC+(ylQW59U71G7J+jo0tz;WtsUh?k$9U9XTN~^*s`PItlB2tYK*{~xGRWZeGUS)b zNg*iy@^VNCmMn_c7A6o0zj6J=SKVRAW}Q#)cdBG$z==UOO@&osdyd$GY_nZtr_51U z9AjFU@y!5nKuhrDbdv+7DG~BeDBjeTF*f?t9f8ano!%|uh(^p2P~0aCGRER5W9PBk zw^_P+4GS$V%J)@oB+~{9`<#T074!P#P=l7=|L&Bf8l_Wv{POs9fYM}o-oW6ZLOd1H z#t{F)k02u8u|Z|Rt1`;>WK9m`k16hx^B~3A3S%2s@!ng9_84+1&LrA_mo=Hne-NjZ zKacoP@PGjH`#s)HfrpO-bmuL>H=Qzf0$0R{1js|pzd%%_h+tTx$w#tb`_+p$JKpW- zov8^MV1FWQh?Br&#_`)^{Tqpf(iu0LvIk#hcg_W@$@eXsCxi)VIcb!RurU48A5Qw~ zW2zU~)FP#Lc|`X2pHc+Q?o1K>yGI&JY8$-Yv~Q^ioGha5V5CE7YQdmfot<1>7v>;i z7l~NqQEz)#{=Q~;M4q%CQ#@RZ_11NMzOGWHgZPh_7d@VTG<H~UsH_K5mebj8=AIRE z&_jmmf%^tOokZCtGF9+7MO^se+df48;@W4f%-G4G{ly868(bArz@>Y3{^SzOcq6`( ziu@~i+}f-iD{|bxlw!lf1dC-B?Ry%#x=8ri^@6mLqB21ImxG570owJ*ylz0x&f+cm zq7spv#AnY%j++Xm2(dmS4x^NVq%kOe)_M>?&L)Ut9AW#ck+{lf&5r<#v;r|*q06<4 z7|`N8KsntkcFZnhw3Ccq#26FT14CQN#Nw=45Gq$~+Arc*)(lXlhP{iP992p5{%m>O z@{%A*t7p9Krqc^onXC-*-h@0;Wkkg`iY`)m-{aTrFY)yCu_L{m_%!LGUi(ZJ$cWZK z-}m#aB%E)9-(47gRxT6`5Oyfnetr5|Wn?an<huD0b%gJ(tj5iXEW;3CeC@oC5uxgc z`83!0MnCCpyrTj5Sou{@Eam9Wn%UD*6b@ZLcFyZ_3q$gVx#}Xr_r1+@5#Q|jZ|Isr zsImSkpyQ~8e|C_tNnZkUen|3_^Yc+hETxL<-jkB^wKr!wHt{Ta^YW(xAq73zx6I1o zxcgasyMl);vo*uL0lh`sE8loSx*iGL{G62ojV*dry&+J-``Y{mrR`q-CMo#rudbbm zP?A4vrtGMZm2`J&t)BOZq&MZ)(nCGvyidZ({`2Q|EzXVJ$%F*^Ip%gUOC|@W@+}z1 zPnH+|{9<|SHlg$FR61R^{g~*hsnddHH5a)29z9AnM+tLHvAyM#V=Nz%Z>yzjGMntb zS*Ley<jtn=8IdzDIX2Lk7JO7WA<hMxNkyjBW(t6Jmc-tOY9AKw?V32_M4k^y)OEME z7Amcm5VvF~Z*iA+3+*hO=$+5z<S5k1+zoXC-x$df+Xl(ba-&$Rh8ta+-zgW-Lq@W% z@Q%uyNOw#=v*^K(Lh1UL{Y4^;lsNGOnjbpn&r8b_3^y)>6>{f<N%a-JNqrp}a?f}( z^bt$sf`@RQoa_>Jx`x?6qfhvP$h%t<%+J-+8yUqPhHHCMldVn9y0bKAe?Hl)3iET< z6}fgAF%1c-)ut|4*m-BfbySe<qc+mSlsPYw8?a-z?xP2nISL8s>_#dvS>#aAjm_(5 z%<~!14_6`=^r*W}AB3Do$wq=-kO|C0wxugggpsk8gq3KAD9$Eoe#RW-KGm)3?&?#H z%=yW$@ajS)cZc~sMW)hJjq-s4K^_(Fwq7(snJ_bIYnA(D&9}oQ&`nzak#XF!m-)Bj zx6Eu?p4970|1}$mu?pCyMdjY6G{<QcpzbWUGxdcg-ZGX^=E0P#A$AXScJw;(dF@M9 z@wcB>D8HOego-*{&NICGx}%qBr5AS`D%5u+3bpgJCeQP|)+-mO@EI%$h<2uiS6+NO z7zW+IEOGNv<_q!{DA#5Oi&9xo4+Ba2t|W@04sG!A%9W1Pl@ZDWK2bi@bCPb~5Dv08 ztsRucLk+)EqQ)%=4dzcpi9hv`?oNF0zuw(Hf)RV3FPy6_|Ni!I$eVZYTmipS!326A z`35I%b^Z;eg0kl0KyLFGDq;TDosjk*?nsyft-vn10JeiHj;~8v>dD98Zy%r7pASCg zfN4Mac5^=X)Ms}>h&OgKn?U4%{vBcOZ&jYeDTnKFSEW9!-f`}<&#wkj2TjgZ{}LJJ zq@<NoHY5$C((@JG$qr-gGjEOG&TEN-at`YpZAD%VqzW48Ik-}Yn6^|03y!Mr<e`HX zdM!G3)s1qgqDVz*%;tNOKdJGc4CN1Pf_VFW#cKmwg#+<vxM7!r8!&Ab4axouMSxA> z$oYfqtkI5Y7=HinPv&*p$nR|Z;j*l3fnVG{Y|(xDAQ@IrM3{%<EIQgc`}QG>=96$d zgU`DTR}SNOfr%QI#vOHenw2ONE~PD|!p!J(EY#tu`dq+6OhK#X?c27pphUtl-5RrD z0#%+DO#z2XIqKhbkV(8zHaL_A4DT8ndSKek&l&oU70KBor2QJj70kaq=wBCO6gVR9 zDX{$#LcsQC`E5OoNJ9VAi*xs7aTp2dX{}jN&G2>`Utu>gjOS$EtIDj%S*`x7UPFyp z+5X^mUOg|{76Ik*LSu5iTK(VgO}&=VWWr#S%p#cl;#R%oR*o5ZV>Wsx?5E^O^$Q8V z+Ohi9%N^RV^T0dM8_*A4MS-T+{*JI`G7E<*t<v4nitAYv)fd^Xli29=;`=xBihIZ| zoP8=aTU6`u6bv$J^yB&)^{i#vh@X>(q_CyOzzI>BnJ--iEOXCv?`ii_Uu;)tW~$Yz zJ=4s5ozQ>AQuND@@8l+(O_8FS!i`t)n)xEi=ffxuf9p$ElKxOaDC;OZ%;=i<xupEW z+b4@2_D#(U{h@eJ)@7FS8h4!MCG&G{lWSU~!f5&}h^sSp$is|Ea6GzD-E&~_W!q}$ zuPXIimQbJ4q!*pydiP|S>7Mti`miO#HN`TwBM3d3GR04SlRx(os^$BPUNlrRFo1eI zYU=UZM!B_`tQ3{@5mX=BlPlKS09I~7>3dPjz)J$-`CMy|$^E0EBkdpp&ljg|o6Gl> z{f{P!j$jS8^LEvIpY5CK{noJ*ekv(mx!i#+86j}{Q-qV6I>pn5nWbWy+yV~ORSA#{ zU1?kA4kM7&<Mp}jMt)DHZ3B@8aWrz^92zF(A?LZ}TpV;Q*7{ST|CuBU^vQEu9g*$C zrp}k6hV``r%U0(fUWb<>=i*q;KdAjjqMpk$QY?qfm^>El5Fh?7p2w**sK9Stq-YR+ zU>qh|O9r)gwo$<5X+@#Kzm*oxTt;a{cU~R{Lbk)j6WRKRt)wNvr*4E+Ul-zCm5}Y{ zdPueiJS#JnPv@>UI`N<8;;Uhpb@}u1uT<vl?}ob%!pxardX!Qs{FMGjgEeI4uZCm} zI9DwVD5W&Yk%ZZ^hl6LWOY<_-_IT#ZG}Zme8A<R`-IkjE6LjlhIofaH>!YJm%k|!` zUZDMVX{?=Ql6d)YjLCr>1oB6JHNyimRQYEQ-s^?4*z;Ex`Ds)ZJv#E~G*hC5UOj@z zeu*T~;bU?6gOg7{S=rxJjubI{x83U2y0|7&;Uc*D#CTzw8ML1}-D$=YTVkp#?tMt4 zlew^6c^BKLCHAE$p}IGX##=A8WJSl#YuO*PUlcXz>IG#wsVa7{_QgF(i%M92N}$Gn z|L2jO$K>eH%$HG|zoa@no%xbP&?|RW`lhDj>QvpSYN?o#CPT|`Jm}Slpygz9YzaX< z@3MDn$<%MxCS2&1(2bMjMmDkh8)>n}HZ-eix*qbiTujv~A1NL<>^vnnSgzt?N@vyb z@Obp;*JoW%8%p`qcDF_|)|_`blZ=H<A{<OV>#Lhi{8|GNpVSA;KXN*eS{JyvqYXN< zNjl!r<wiH{cS;6HJg+KobU2DwwJ`8#%u2X65l1ZDWF_R!uM@4xzR7-4GShmdLhsd| z%uTyCJ@+Mp{i-Tj!^-0Q(2R)gRFzarUfORr4=ZJEbah&6wH9Quc7D12UF$si(pyY* z>zU8GB|M2+!jaMO(JC1?x@XVLgY6^`EH>Yd{~VdOV5*d3$l+K)HF2o6F2IT}C?qW1 z_Kw!{M}u3Va?ZT*=vyi7YBRS+IZ9J+DKS4=adQiGD~~ZwrX?|r<E%7|uT@REtvUXs zPZBrmod)k&7K-1|b|Z5{kmbyG+IJeCb3gBt7Mr7g%saR2sHI;9*7%WK{KM_D&8qBH z!dHYjlbTfvr*<TU@rqWvA@1eq07j2DFn9oS&e|FH)t|e*fRRgtL)%Hex|$W$>Yq() zvDf%$U(%A<A_?(R&haBDcjHR!-27Rqzqcbz^ZOypCfw38vFaz8<40}ors_^(TLQrn zy*fC{fX4M>%P<L6Z9yLr#|jBbZNdI$`AS;J>CN@Lx&?z!B_WgkbnXk6(YGC14h9z$ z)j_TPFNh6?O<UXgo<6Q{%$gElqRG>8j<4wK5Tuc^l$6+Y!xQ}M<|dxAerNP;xR(2k z+fk_b5dsomO}hHb4k~}?#97~DulrmTKDntOZ&Wj=QLv|Lej1mz)oFAK<ZQr4-wJAZ z8zA1zc$@c(Bvk!wYi)a$Pm=v{S&VmEGbg+>e{^6paZ69;G%meO-qqz3z};iONVAvq zk+aD4)9ZJwezn9Seq%$U3hNf_R1@Arjt)dQTYn}x&nP_aZEPi=@jMrW&?VH|{b?Xa z_QKezOOh{Sy@XPy5*#wk_@2gd`ayRZq#euY1-{~~ui>%?g%$2>;j%cbb%OnsXqUkR z%MklrgyqC7uGH<=ozrgmRznqe9dwMtsEQbEYtCb~xO8Dfy}8qb^jg<iIb8g67qatY zT<qLj$UOgS-#Nh!5Pihbly(pQXa5)zo(Lq;=akkG#T=W69oC8+X42U~?Vd@=g!eaY zea~+_lvHZ{nTq5IE@@-<0%jct7Eb0sMi#fu)t+nW{(Er9f?O|4ZgAA26K+fJ^L`~G zUS;|1-o^vVP&O%HaU7@@IcX4=o0H<AZ7w5TBl-eUoyQZ@Iw!Yu=M(N~NS^6!De+Ic zVa8YXu)i-N7@E$L)87{kNW7w_r_W!&=)ja$N9VlauLm70CoG9bKS_aAdkCbID)VN` zqt0d3E~yqXrRFh{t$x|Wn5))rUPvj^Mb(?SICNvowc(cNdP@G_&;&1g?XU(;)AP9N z38JLa_b_D(sNhJe-z(x#;?~wYQ>CXWHwZelE|O!u>=&J23VLCw*u#7R(xuMq8(>kX z)Zwr+Zhfo*<P`ysx^3xFHOC~@x;l|AzGi!L_&Raj48JKYHt~QLP=vD=ToQS0D&o1@ zkutu*hy8x#Lg96yn`{lG+<QaODw=I-s``ZwK9iNFS$@%hG_{ROlu!Q(pN+G=ez4vh z4J_V17DM!wUoeCwNIkAmJAH1v*VSlmFV?iE!dhO)(U>GRU}`xLo2bnAri8TT{6*(? z@M5fz<M=IZQ2DH@ql?_fX0Vbx4Si`vx_uCg5aTrNkEU33A@=$>0I}L@+2ANp%93JB zmK)biIuWdk?^9vHTi{sP{&oD;k^Pd^%h(CR`cW+DgrzPXVft>Aahx@v;=7TN`L7hI z(s(&@ay3)Dpw<>Q$47D>y~UM|LpeVByE=NYEe_U*A>z>#^w?PwsGbh(rA5mPLU_E$ z66F%w$kxp3)K;M^8}_^4y)q9DGc}eGShDe37@aEXy!X2KogSk!pP86MO*ak?+C`3O zhdO6$#~**oRU%Tabi3x{%}tO{1aXjSFH?gin&OL|WlBceCfz7sL9NQEjV0p+_afTM zzHU1~t}}deVQ4H%r)Trm-endGT%S|~n>gW6Ga(9M<Z?xKQur4z+evtn_lUTmU8xuC zBc@?D%5}r$HV;WX*jLKiz7MNs6}2VM=R;U$7?a$|7I*v9NQbwRtabL1Y1l7ug^cx* z<%+>c?!t?^h>MEEF^=H2?}I^ODxP6?g~*cSp0ANDdDabEs*}E`<XArWG}_zCen~In z$pQq0=rC6Bz>=kRlq`Qy`FAnSGIzz9UxO_}?jIAKI;NZ^%Ed)khH$ewG%>TZoW^Xj zTRzJp47#(yRPhC-NoAoyYQ?cKAF{;e-|J>CwwT>FMb%Fl#QlB_BKEOan$4yZx6REE zBQzN=m$SlH5v{_ijS$$cAmzxP-wIhE_GfY3jjZDmuum~nWqs$^*~;W!z~s{$w_0V7 zw8|$8dYH;oF#^-1ML~PMcW^we{{E4Bys0Yj5}k2EoODQB$2D1-Se^B|`uhih6!lyE z9;Z;4rs){fk}9hOf@QxnUFF1iPt~0vMW`k*2&Q>=!ojtj3#R#<U#Ra+TL(P7e<o`~ zuc!WQU1hz4YeRVkumAo1$7-k1>HT(Up1xB1xA;NE_r)ZN$}^6IFzSSACyyPQG{sYz zYB!t7>MGaA=l;+g*MS>A(zp)OVT@KK?D>W|J!a(@-r{N<Ovi_&@aABGx5DBtn-k2H z_OCDE<zD5HO+)J{Kd%({e`bH2+ZO1-{8oVf64zMqqqxKs?B_R1j90Sx`jgQaA*v#s zo{3qNrD4+~XF+2{1zD7TCHwN|sw}<(3#f~!L5UtLu~2@zr-#{xoLD>VbEh~pmzytB z)m@JxT*2sLM@#yVYyIR^k@WNp_6reAKcR_oBvVc=`uI}|ax!`KYg*!H6Z-|uKE3MF zEI8?7RNZwwdh-*N$JY3G2{Be_PstM+YL&&fu_KPSp8k_QkZa|h!>rM%SY23H9!Dr$ zLuqNHHOE_TQHOdP_PopBrzTD+OADlA6AE=<m_zk8moxStQ%9~PYKM5xC8u#@|40^D zazhIQ<CVC|q|qSzcDr(QoDY30n9MN|+t9+4%YPyKwvZV;S_^T%(0bZWY~tfYrp;vB zAF10m(a5pXkew}y=g<g}W@y-U7UdQ%KW<9%_ff^pYk}4QkKdHoB>ISp>1p;6?5CMt zn|sQZ^F!traf=X)A^}fpJbD#}C(EG6Ez5mtT&ozbEtK}NA~Uo+2mK3xJ_@`$Vw<qa zqwzs1#jA2vxtx335oDW`V{Xt^Pt`lAB@wfTN1Li2pJP4?d!C%bSgh9u)(VouEl}|! zA9<|yq;Ck;hr<I`X<K1mo?f&g)Y>;OJmCRlUot(tL_efAdM<!lFRyoFgI}*oyFnLA zZSfZNAddRUNrgFiRkOs;$BxWZN;T#jNZtEM6_m&+Qrd7DxSMq0wL4+`yGVXIR$QLk z>}e{5i^>Gq6L<p%4{la;{fZTy%6~zHG!{~uBZa!lkJ!c;hZ`A?XC^OB(uR{k-TBm7 zX`silPZi1QdFyMUPGgKm??I<g6g)4oIaY~y@_ORn!7eHd)%9fuSs1i=G^mZ7Y>)ud zX2vf?1lQBM=}cN2qYcM}o~S47u!7nQKo`7K%+JDl?!fV$f+Xpnr?N>qvY?)N<S}ck zv9!_sV2C@_NIqnO+=(a&GSO7EYO3`@?5Cen)wPj8I1X|%BI%J5(%MF<T1xF0VMMu= z84I%&fhyi{Lf==Lqr?o|=U)<}giL3MYhIFSEx}IIKrDic-E=Ui?TS@Stu6bEX4xu# zeo24HP07f)`RSWa`zwR0MoiuHzA&5HzT2V#ib9IuY2oU{FfB<*%@qJH5Bg~!<FPxo z*JJjxmdRHS2hR*xK}1+i_m4*RQOyX{EJkL@joe#$lEtjvHsZS&b9eub_7Y~zcXEMj zbHR7=B+ulJ_Eidw@1iuV6;b`?sdt_6i%{q^6RGsijhP$r4FyKw(9+m&HeqZQhw-wj z|Nf>#BxAL0?Bdda>$=)89yF3nI=%Towf(Og#p$n%*xwYVjF&5(Y*k?ro9DvSO38~q z4?xUaF>@ympyY8y*JoK${r6+JY#nxN<G47#`h4K{nOrmqYY3D~cqJjF`Iw^W2fqnz zY%aZeDC6wwca-|S@?(F~>mOc@b||DBa>}@=+^ybDUgS9#KTTK+N3P>a)17@Y{df_J zcWS>=iv8q&@L|_0p-2E^f>SSbFzy`(`{)f#kIhX&oM~a~Zt2Ae%rG%|2OI~lBYTQ9 za}@9BhdqI--z6&X%BZs^NpJ@(N#p5<C2JbVip4ShmdCqrd27Bs=fE}%m2o@22NjBg zLDd4dT_Em?)!T_hkAEDV3Qj!KH4%T5mr|eh$4TK;tnWfNGK>xGHJu$8v&e-EBhf#m zaf&>jwuxaZ9Ej0VA)5xBOouVy^66DA>T7MeWqd>sDbiHW{nC{=qFY`VH`C;BUKV}i zK_y;k%Q_JjhOb|!R0>%WXAgWS8@IT}fi$Qm_BE3H+ydrfZEHi~SUqKAGP~#0Z!)YG zUA-trB&jW#yh0DBLs}B@38lattR~Fg4#^RCvN~{ZMbq<C1o_T8BE#t5pPmi((m;+( zXa#J@`I;(VUb~(NUsVZCXcAiNCWJ|v;&OTOj9eM2gt2K@se}XgF-NzX{K#muEV(_) zR1CSsYE7hUsl&!@%@?F45t?SozFI1FP7oP}T|RIseS2y$r*&l|nQ@@R(9bY+dLhJn zJibWvdK0Qwt!=W!0qie|;0rrdU9N5}w?IODO6+mE=>ER(!o07Hn^LtD<d`}@rT_wR zWK66X(!=jGHIX6SwU|_CQV+>5P|)#+jw?E?o_mTzb&R0+^q9!2deOso{=`45m9vX- z=tne}vDlEmf&E=YP&A7^rg~9^$i|bR(vX2j(V(7L=E&}xxAzxu!k!*MgYuA}sUbF# z5}%s{KlURkai`cb)rwR>zsB3C`djIOcg96DxJS0QN2F@2kE1A<lnXY69dc;dxKMnd zq+*uOfrt!i-)PJeZfqB33`CBrM5YYrMSHMBiniY`K4(fCby2D7knLn)H&&}R*sU5n z%zWJwM6}9I;7)}rRoN<i^PRC+q8Oga9*BKPkmFpY`go`6&Af<_zyT*LfT_-qXt8sX z=X_Fmw@L|VNsK<5=BTbwIpiP_iqEad#AdPs=I<73lP$X6akchC-df}k^KI#%x2T|4 zBk-3?0FN5Ek{6#V-MnZ*JirxC!(q-GKzy97c*8rS%>t5mfQt^8LI=jpasJyP+m-Lb z`o&pr)<yv@H5KPK3#n1zl=@*$;qM`Jxw6R59Gy83Bk*p;JHf*@*>q=jQ)ZdUXYZyA z_6#4sv3K09SlXuz!-u>9C(koOdigt9u|s3Wg~wHaZKoIksu(|-cE*%~oho+{uLKxg z0Ffd)ElLf|uv<k!;Doh-UtV|c&V7CfiPRRV*2m<M@Eap3&};{ff>m6FtJz{w324P+ zOcHZ<T1?311b%shPIQpXY%%%1lYt5)%&8wd>QXuMAenwLpzg?6N7oa%Q#(R7XY_4B zF;Sgtk-ZxPPJ_&<9_k0QZg6xaLNbT6tr%NRKB#}2#Uq=;`!>r!w@<cO<O|11lv1hd zmo*n8+A=_+d=0De2U(uok2RndRUzHU?JLG5XaV6e^lPDCP`N*%m{%kRPj>L1-?8q@ zLx*&8)4WbWh>2R<{l&=@&7{^wC)|LBnerm$UlrlKNSK3>q|e5rN{Mnu27KO0wjrAm z{<S+X#F_L_ryJx5PIPAvOp=|erV2}j;QJcd(y56%4Rw9<rol5J|9Ws?H#B$tbU=NB zUxEfwG8G$zk4~ozyDNO1fNq%5PS*U3c%&3>hP~`Swjk4eh);4u12KDsSAvVSrEQ2! zT^2=bKu3pitqFJ;N)aEGhq9VtQ<LCzB#=*qcoGT(U^S40zr;P{txHn#%WqyGqPekG zBy8t`Ya?@Cpvm!I9sWf^@HBJbO$i113GFo?92V0i+U}tATyb<jfxsg^U`(7It0E~w zSFr?r@b6wS$lsbd58rnlY3V0%_skpYAGtqr+e~;cI;y-=AxRsC1Nky_Td3wLok%~d zekta>d_WnK?nXBCXmxzD-g)XICUx1cjuE0aeT&6!5t5}rRj0IS+r(UU>5^C!MbAD@ zwDW_!K~*)7F+MtX`u3HIGfrZ|P6Y#_)$p}Jy!l-`_?<Q-u2W~vet_X;#hiGS?9xds zVS+#CoXNT~tu5cCj|h?}%HF|#uC6ZY=p|s?nGK0&5A0c6K~aTeL+l1sD-YvhukLD{ zIIBEX;}ofl5q?HV*sq4pqjLAS2x3aO)kYKUmX94JCF_6<qpcXTqz$7h&uZt%MTS(Z z_$B_y_u4yVjsk;l8dB{zd@9=$RM!$prp0mm8LRPE4np@j6;i>Mkh=P{m5D4AZS~Xx z8CPaju+tD;UD+<#_)1+_&kf%K2kCCP1@g&7{M4GWoejH@8ai{gJTFkkNnh^Ro(vC6 z@KdZ=23k9n5U*4-$M;XlJ%6I6ia7z9L#|iOSm3{B!h{EA(9FyJOJvhQOc53j@lmbo zy_#U6T311<`x@9FPwQFzC^J5I5g?>8K72v-9+tY^@2*XP^k5~8@@GnTX~Y{YyLm=Z zB7xO+1}GAYCnn3PDIpWAP;ySNxgY{X;S#+NSMFhgyg;rI5Sq*zzKgqeZ(^A2ZKO;N zcFP~uL1hl@F~+KgQfIj|>}OJmwn^co6E(e9oe$XGWXG;%3}YtiYkJ!m1{9;wbDrbY zo>B93U`g6*l2Z%y+Mfc&>BAwY*bt`Vw!V+Ef$PD(v+}gegeZ^cOy*jZ10PyulFJDF zG4jvK<jLpEc;A^R>St4WkGf}fOT}oJDNuVXsQbl4=xN$QoKJl=`k$N_M20x}233$d zRIlqmwP)?l1G1MeSMr1?@2ELyNSRR$$tlxJx2ULc9G)J6oqkUxR2Dyt)NWX@pZ|=H zsKh>Mjshzye@yseas88LYm~pO-l{0X-Z)W|VPx7^PS^BN0z@`mQNAn)UPBPWjD=#N zpQFAv>xIdf%A&oU0X@B#H*zK^KnhlO9}(pe<tv6@E1$FSoe4<eGvZZ<DI*(q2HFXC z_yT?#I4fMy&RD3UMc5a%|Lj<gN2p=VuGnD|g((jFQ_g?~OT3T0Mg@NDnGo<2ei%7! z?R48{NHeaWkM7zn+|OkSewmjxVvENVli6yfam$q^&-Hsyau(*wgAkVZ8^o1RTB9pe z+>!CU?(tjPleTP})f7eNsm+m)PKp`+iYa=cpQ7Q|9S_AsP<;B6_}vXL5&_tOfg&8T z8P?ff5;!wgG2ji3z>KxeT~rO#Q_kJa*P^41uB!Ui@?-<hw4$t$5J@GP<|6}?4b^qx z+GqIqgW5TPZfCK*wV6xCn9IlDQlTUdD2S$n0;TWVQj^7BImh08;M8#EOxRjH2~x=( z(6RQ}VO+Or?vV_yBZWzvg&1>&g%-LNyB;S&%m`C>O$2Z+S1r%if9F}+1I&ZOsXXVF z4)%pI@WxJIW<B-HnC~<N#xrTE{y-VNz}`^=&KwfMds;{R&voeHI7vZxg_chI1QSkc zb%pPVrwHJX$2m&DoP`qfCBln|(XvSXSjX)usLIXmvuY%N+#Hj0CMkPIF~o5vUrWdY z7aJE?l~%xb5x0*ne%&8WtC)jyS0@Q@EDZ=%f;y?dZ=}OF0hB88Nk)>Dlo3zWw66|t zViKgLeyvgwkz`cEu$g0~o|hH2KPaS*ykbB!W1qi+VgQ}p-E2=0P!)=^T87t9f%%FQ zUqKEWF@I>hE!6VLmxqN|_|F6o`eNbML?~R$#~~s4I_kxYK$(3V%pYQ~(A4EWVbj1m zyGWmU>g6t93>2e)i|RCXoC=~6sF?cgiy>-A_~|3FFNRr!9BMdDX=goo$lpPvkAmj4 zz8vH)gYnAaqIA;4g8xD5@lH;UF|ntx^?WkK0CK?TIJJaTm9FU>VU%Xxz`-C7UOT@y z1DJu)F^Uo^>=AzLra|7oX|j<!zc?+pfZ5SINmt2fd5DL!o_Zb9{qZhFfdI9UCT6DM z%<uGgnCB~ur!#mbCmD1`fM^yS-K0RRfQ)boPO6};^1C?&{NlJ^1{O!}I9+_F<zWuB zI_ga-83ehLZQ|6#=ra!vtXAy?Idtl&H{mh}9;c@q0nK7HbO@yiU8Q^NPXq={hB^LL z=t?3iSsV*h4s0=Gaq`C%#>B#wgu!X(DdTZ#S6z2zM3_+x*(nGO4dL+}>%z)_>Kr}r zC(47@P@Jyn=Y4xQ%o+(2XM$`^hh|Mw%>~Nrp*$NB3U0`X-(^A^IRYwV3Bf@~6mGDB zX5O9Bc=7oTPyi)DA1uTnUI2dKJ4VpJ-HLMxs+fuxFLsktJD|aM#><n`<*49neiwBr zjhPa`F6sn&inqJ6P=MHYm{p!%oB+)5Oh0R)cFMbZFQ9?@8`Y+v3d)B)0Of{<GC`t% zU<ExauO#_f2<naM0ek@mEXcob|I}PP?~dsps}-n&7Too0gIzom%(aujVc3wsz=|9E zymo3Y>&VqRX37H@dY6K~92ycGr^Z%0rOdvt_=f;&2S1>bL0BUN2Gz%~tID5CiaIz5 z8;{UMb?xNb8WT4wTmN8ndZ}_?cJO$-PZJf<jR=%9fi$v_7bs|=f;j@(WLdy0{Ni`@ zkGe_(V!gf+);_PCvg0`O2v9<hfW!&BnM5m!1yu7g8G)|8hp4Tro(XGwlsjf|K$29M z%^)x4U+CJ*1VvG@2NWKWpk5$Dfzye55<bCqO>p_w6@6g5n;j`&JdS{;ZUD*)i6Ye$ z8s~q&Xh3%fB|JFDgeDhZK;m>@8$FNllk%xYG7rE4%3b~>CdC*_Q$w&Y9)*<_>Noqs zKxf=k8NU(Xic^MQy*YjLQxTJqMA_V(S4zlGdT`TpeO7(N6z<!^C^gblk9zC{Ma<?C z15V*ZLuUqrB?=2NsbFy`W%`e_^l7#J=0^jYe+-XOST12TB;eXY;VdkGdcG|fuluu! z;WwU{_#f-<P6STw90B>V^x$A4XUPw+ga7Vl3z!+xF&yYZ?iK2xILA9h_1HV&z>{}d zuE~WSG*>@ulg;a)DSOy=tciM^)iZaG67?O4%IJQ{UfcRe!9*8HF*SWZFC!#h8)cv6 z<^X3G&jB-~gl8LG_2e1VL69$=S0JnjK5V;Ubdz+Sx)GrKF%PpC!DD&G4^rXyE&r~D zQ&SHE7$l?yr5&$}1RrU!-z3q~ufXx0^_@=N@@1?10OgXSBytH*AgB3k*Z;}<!{UE3 zYl(&;Cz5mv|BrAAXXTFo!CKfAr-z05L^m0C1rCxwQCB<{7nO~iP#MD9GlRE1fbOgR zyROO2{rnvgMTVjcP(X|tIm=ORq!owurq(^6{Zd*Wj`u_;7d*_q@Kz#riUjjOlbW&5 zTW_DbA<PQi<Gl5VJ2nb=M2aGvZp-Q^0yk!Jb2<%oO<^kJo<6s*N-9v#;&wKwAp#5O zGK`<sOnGwWP7&IL`VcPJpM-qPBNWfpb%xc@gI)elm05w#AE&}QQ{0u+GiN4Iu~h+- zP7Uk<4YG7#6Qo7V$Iky&d+GmdOcUNvIVC*a32tIPbHOZfgsN-oe=^m#r=I+uq9+<D zok|mRJr<b3@*r_WZQ-*)v+a#R?#{h_Gq$ORIsa#Z5;0T8n5jhE|FPDtJbV`_D_$N0 z#^@&Mnk~?QJ^0Un#pwUcd-jf*oTzlPvD~6<DoC6PT>Gq%-AEh7To?HeljMWS8%aP) zdQ5(6Ct6fWf*;_G7dy`+V?Erc3M=S;yc630<DDQkr-NK0M-@%2WvywUp1_h9eO&GR zglGo-GjIs&yd35a9r%q@m)e0M=A#<x_D+z8K!K>YP`!1Bx9H-o;{SGe4;#1zejrrG zm5L;P4;D=I<Mmk1-*viM$Mrh{Y{h;ic*Zgwp^Y*tKgRy0KzpPew5Rr;#_Ph&p(yKd z32AAS14&FDk%^tS|AC_A!&*8;IT05E<48q)RJ2M>eGfVK40Ohf9RH8~oT`q%%5xSn zp7v63rdmzq5rE1=hSESEz@;K4pFfb}`XBRuslESDPb$ko9YqX#Y${U8mEV-qe#Yc< zOMueR;~Q7dKq;$QXh-MGgh*3jFltB(Le%8{VJ}Fq<sC<hs>PZ%N;RuzATVi41`E^e z-&sq3kRa1pk)gQYH=<ZXe+qs9qksKmp8uUs`2$)*XAZ=S1fQxijuUhN{q|)>l_Qi; z^+~mh;Q`aQwS#w}E^i_jUG<t(<5OBRF0|o(qK4YR!vNU?C>DKqB)S<`7sEM_u>08U z2@773AqT%eUg1KWN2TQ4#uQ;-%72LBmY(j0iv>F-Jf3+UK2}K&Nu(BqQ@-kfxudS& zxM#&wEsUBex}rk~dqMO&hf@Q`!a8GsFygV%fgmWhk2r93ln6Nh#n7r92slpZWrY@k zKcnv~&$+Rb-&uwon2Z;DruDFbTMQ3u>aN4HGr|cQZf$F(&a!$|83XVU`S2Q`VOuF} z-tQeH`uIx#rVj`8p7DQf-C1?XOkcLdtQ610?$XGa72z#D+8H~=jyaEOs8!ctB+P$+ z{j!Z*BSGn;i!rFwq=7B&)`g+$-gd(z?l;&HAdH-avFE3>9wP81td62V>G*a==KG~w z-8CZw&6MTlmL^LK&i2G$$s|X0FiPi7Cp9E9V-V`>0Z+sZK2aU(p|F(?>6bZvRsIha z-zjRKY^h$oW6UiiKsh0=NRI0`%fy;#HOn*Hd7PY8vFE*r7JRHD$|VhwII?1N5tv73 z9Oz(9l5`n5G|m3`xpbK3nZn)-DNNHy7bT5#Gi!Ui<5QJW`gN5dseXs#b(PQ5QDYnd z?f(vOxA&dgv9+4|2czf{Y|-X<3V2raAgp7IJd5ce>d?H7tDb41Tfzynn2mtDf)Is; zinoN|GyYDhW1@rYX&K2+q;*`+bkJ^DSN&^ylvx(~=zDd;Ec2;;jgOhJdrcjEly%j# zwx>(9rH7I(r}+G(KF#q`kvPa)hkt<u;x*0I1#zW!l2T)xId>m@k(sZ?svnIxNtg?A z&Rmoj|8w8zu^Q`W%vKr}&9L>je<$99XU1puT~uq7ov@X!&ht#BOWT=vxlUH(8X3ye zxdnT0%mMG?l~cGW(hNA)sbR(|rUbKk=1+pe5cEc_qKoK=k%U&-V;DXBkY~J8I$SbQ zmno4zm32tkkT>Bl0DG7Ezmt2>zw<s;X1c|}Bz^lh5G%HNNsW0}t5%b{)+nA3W_X}e z7at*?M(p^9vo8L;c1oD&X6PhHE<u3*Om;DrU<DjYD})6rLgdvw2p_87J7I1NS)V93 z5XY(u>OC%}fIUPBQ61Y~xG&xTi@*=P>Tb@hChwe$bJyK$Vk32|qx=^#J+GXLhyBKY z9u2K2F}vGggY&y!Gt_-+GL#ShIsKy24_;9muQZh}j&zBb|Dr6ZaovhJ=eo#`U~Fo7 zeT;zQXZ+OHDav)#ItC|_@~9s&G>dyM<tr|y$Et_!XYu(|VJYDL@+gU7Vh_5-%rK(^ z11h=UKRa?nUNv*Mu)ldmGYNSw7?0o3|GzP&3_jS$(3NV@)*#IVx9AV?qOC0LH8Xfj z8mxRwf?_6VO1RE6RM&NloWvIL)k%cnrg{$e_*4$ONcst1Xl}hn?KE7geEDubGMzLv za=<68R+kUnD1R*-E}(WXrVK_Hxu`|@5Mq5-V9}MfJW-@R%2gSZ)`S>ue<L*MJTBz~ zu@6Fm@u}QhqWlRGURTY@)Q#IQy%ZW~B-{9_UhWP;lA>Q8@D->X%9Auf=5?a;?5+GL zMJq*yFTCY)wpp-2HTu-~p9LjB?sFZbW2^8(m(Jk8zZ&!5g^)e0%lwzquwcdJG`M@; zhy_x*?1VFIFusz`I$=ZWUigm}dtC(KC9u`#n)2psyz)#s<^MBgL}nv#f5I!2-sz?4 zzodv0)ir6Nd)A`61~`y%_swJR!0Py{#U%KlA~xIbTaE_u6&uCotZlv~vst$Ov+~D3 z$$R9pma_=ll{aC%F!E>293#mMowlczNRkg;RA=mNV@VRXsV-WT>e%~Y0UvCDO@2*y zj7lYaJ?;8lxu#C`et4EWbP0Z_Jzng75ln-%&pL_;_bdI;0hZM<mb6%l#_Z<=*mQWp zjMVR597rZM+~%&w>1D#ZbbfRnuLew@G^>&mmIfK2a(BO2p@7U9xhm!uh2cBelU;}> zwSBW?%P|s8Jiyva$D085&S#K3EqxD0Qhb>K@6jOw?pi%sOEPrs)Gf1AyzYIH^n0m@ z&YU)w5((imJB+#c69m!%ik2If@NlK@CHXfw0`0>#kRt~J;e^wJhsqDBnIEDBh)O&t z&IO6Qs^<2zlpHZkr0N}hS=#+fq!tDoSA8nzS@v_5fO4IGd0c!gIZ84|-9O~X-&h?T zCOElEl;MYhL_uIe?Al^Ci4vZ+v!#%ugT<X>D%8j`P+=ywco;a5En$x7KxGSy5eli0 z)GTXyg~?UM1hsX{>Z(cdN4OgLhwgY4s|y7-1Ka`Xq}Hx}Z#g=uac@*(bo8bp+nB9( zPM=6pl(3f(;sZZ4<j!r2MtJI?l7<--a@q__o*>{VXc3O{zZ>zhzXTcseFg-dop3MC z6{#G~(^1i?J~1~eW}<XaIC~R3v8}Bob_cGdr6raK#A-o6yn#5XzA!2xA~IDssRvq5 zxHzQ{&!=R>qatofE|K50CM;*ej%`<#p4_Y(`(8hj@e1Gy>3+kW+n4SUmZ%HfO5fQn zGALFetd(DFxuGwHK3NebVr$9OJ{I@Yv!b5h{>l}ipwpKhx8Qo=(G_Pjr28T8p6VVW zYTwFQ^DfGXJZ_Zv1M(QZEXD6cU_Ew0`mLK_oI19nfMq3Hv}o#w=ABf559h2hiS3O& zl*Oi0wH8c76nuXW`Eu4P3X~{rSnN*gutD)QUhVf2_gC=?N+0Nw%VB1E&R62zJEY*r z9NasJ>2E)C%WO?FJG09;F;Lfr+=-tz2J2|Ed9%MMoN5=K8DvkDY4VRZ5_v4yOyvvZ z)i1hxhxxBYjqFnvIcQD&lqS`xe(`IZS}KO#2I8H-;t<K9@A@lQZq(wwYHfLl!dl9K z?>|yjNPNSxY-~t<8@OyWcLFCH#udsci8Hc7m7XLnM5^>%#4c2x9N&@`V;Y_;B>Q%s z6ig_T@stx&Q{;x`MEZ7rO<DNk>3clb+{_nJ!lU09;Vbb~9h~{eNMb^X67?zlj!a=o zmdyVXO((M0C4<)_b`3+oX$|pu7moG{ndl8P(Hmr<x8Z2H#OpXX^=H>I1)S=L*G@Ru zAIU_UW}t~03&})p!pUAIUK_xv6T6nN;N&YLPEW(Z_6EpADQL1aWFpTIIM@Z^v@IK) zy0dE;23{`{uk~=OcT31bmtxUm<*$*6(sSWhtBF?wc#UD#;%W{~?-8%(;8a%%$xJ_h z!)`Lu{C#k$7l_wi!D&<^yQbfPQz`NK5)PG@NM@??f`j)wnd!;(aH#XdYbiKQVb^vC zIC(3HlYb=~Y56HKljj+5IT;``U3dzPv~m`4dKJ9JvTN%AUVkE9yWvC`pOL99g43VK zRJDuXL`lT!9q<~)uFcg2oOTnhFW^AF7s*tG>%i&2Dl*mCGB{8J@%jjyn!DI_^Z};> z9^y1V7LJp!fXsCU+|H1>8r*Q4*iFPKupFFz$F8R{c-0cGjc}ZuWUjw01GlmZWUl>i zoV~>B6Y#o&UC$u!dYgE?0jD`mCff)B6=bsGaGC|g>nM12VAm5C0#0?rYg-wdCCNkP zn&X9tvt%yMPjHs<LgKX#oVvK!b@c%!cPjCUgQLXFB69_<KuD&a%;nz*M>$Bm>Jz|e zD7(I?;B}68U4)Z7Q%ELzAA;T?lWqDGPI8WTT?DVO?D~d**AK*NS~i?xZ7P{;+fxv< zd?uM}W+t4&mrA@Uz-tV<zQ{J<v~m{l%7tUBdyUNY9E5#MX1g>4juA(^(lfv*I+EQ$ zC-6E;ye`5iGHS_e+kFt`J4I&Oyb@0F2JuP;uivm6=?Gq56R&N{;0)#G$#f^6!9g<J z;aE6BY$5S_54=XQ8|evNYl+)Oa0K_?$#l;{lgnhf>25f}ZsN8Sye6?53I(r)#Opga zf%hFUoqshnSv!kNm*a&Kd_%lyz^gC2vHQVmC-GXc2o7+R%=Z^)w4cm(6b^7Yop`+h zUM<*-O$M)LiQ7-GzYoZKsi&dQ%2YDnd$7OniQ7K#`YpS$!L7h4p^|ug3ETT9K;}z> zX77>tJV~&<^Tg{?0yu@luqL<-y!I2XKqG9fu7u22lMT(>i^+UTa$$3g9^w@bUVT_o z+yPz%#O-U?+v;g#0dpb2T(W>|U%}pv6Sq3>8q1pEG4OIfNxV*ZVQ2Y?WC6*L;$^ac z`lYZl??U4Bq#L|OuqJ5-UT+b%eXz09HDm#^N+HGibh3b_55UHrC2m>Z70R0Ce(;)0 z+}?+MZJAA0uoIHRlNHovz`iaLw*v5bh&9b<@XAglUaOYDuCgza6{N0&B#WLTEBMj} zyNWF&UekQw6~&sy)f~Le5w|4Rl=n|$3ExASzmg@qkpP?e2XVUyUZY&BiKc+pLE`o$ zZ0Z%Vgw1Y9<E|x3_zP_6JaLNyuTHF~?g1~~G~(sSgDtHfYsiH}?~*lq4O?33AzrCI z@EXaQ>VXLGdWX2JfgSDkkR>!gss^$I&k@+sQR0>bUJ<vlCK~`=1;ni~8}>6doh)I= zQb?6oLYCk^2>WqY61Qi;>o(SO4}(|2CE|7vwsWPBtl@1)_BL6=rVX&23gY&+1n`>5 zn(i@h+ezFm!*25G$r|c2Ala5gvWC?4u$$+J+mGPZk8$V?URQ{lXDRGu-379UpCH}0 zWD%DdVJ~?e;+6?seHo8#;C70*y$xH**hLnx%MIxgW|KuMUIbg&N!)6{?Fq)C7r3Pm zx70G&NZDDkiaO|^j;!Kr8Em9HmAD-Tw=s-MJMhXQe!F2G?!S{&EPyT+kX8KM4g2_< z_$>vmP{!vWa63%g=D<GQCab8<hc5D~$tvE4eN+**Dsbz@_;dib?}=X~?4r&?R&fkE zIZ9UHDS%yM62BsF8^-uV_6M&Wn~2+6u!)4tWEGXM&`E41S;giA*u+KRwrK}=wGC&S z?gzIIiCf75*h3sy#^=z@=VTdiu!rT<#4QKh9%8%(fm<%|+XH*}kgVdf1n9<ln5^Or z*uxs)_b#|~V7y$>;Fa(iajW;i781!KJoBKVeIBxidf0+5k+@w*0I&X$j9Y7PJ4XDH zU<U`tD&Byu-XN<u06X{x@!JD#Ef~LBz%AcH+&+UHl#)ekngLxk7LrAj!VY#3H%~se z4P^Yn+kx9z;`b?Rpp-0P4|JA77O@sK@GkLt9^691nSgHKc7*u-88&c$tl@9VptEIv zBWpMS8)zVYyTR=VCSnY@#jYZ5{yf+~B3Z&-=<WxygnHP(`T%j8whY|*F(LPY+h2&^ ze%QbpWCc}T=+1kdtl$mUz+1#G9^CF`Vy1%ITH;so6s#|fEFf?N2DlO+3y6dDty@C; zO2Mr?6Vo#S+~yF!qp-e&&1AldFvLYN-{u5Z-z&uLEVxDVWP&Du+iv2wDg)M6=OMEd zu7e>CtRk~{3SfPUwh_O*;MRwU>JDzcdgAvrY~V*S+Zh<-44Lgm*uZh(SMLM2j!e|J zR^awF@k=a&^(9;+b6qHdLCP+Wxh^Ka`pOcC-%)UDHI51E3U2uU;`c3Vz<Vq}X4(kD zY$P)Uj(K4Ne<gl_d~my+iR%G=mx<pgH|(IUlFT#53*($6^VH|U4%`=r-^<`Pk%@Cf zgWEw8up72;dODdUa1sW}^pja$JOo=fLIUEzZHS9$&;s1tuMxi*H*CS1Rzl`@ABK9L z%#ogw09$ZBP5dsn!R=9|#be<290~XVHc|Q#nPJ-@7;5=UGDA%!Y~lzBcoX~{W18Fz zZaWHz-zhh2qCB2V@Ei>G9GM^|7B=BNMf|p9fZGJ7O?UA73klc@+t`>&Mtj-^gZWO8 z(N^t-ZG27w;=!*Y(`Il8xGfD3zs(7-jTv*uU?*U>6J)T%d9V$44e|4=2e&SRnMR$! z?;8^E5$waA;wK|L4-;G_BYEO|u#Y4X&;WkFVOos_zg!ZqH~}_NcZrPSUkwwiokhl} z&xMV+Ye>Mm;1|WTifjvhwIpCS?Bw)xGR*5R#b3xUFCK!O93cTOdBLq+B-88(@GBw# z7ksc2Z_y?)M(SypVr42Bqhv(_?8JA01RMdssZ6`Ont|K0R1)w#?4|T2GQ=NYk~A_z zO(yImjRe$}fm^G)m;_V6Zw(2kjD@|F$CCkSvSAYUVlqHZEbJvVkp!FpzfMes(crhT zkOaH{yV;mZx|<8r6p-##?S|bPCjo^k!7qx*5FQGC@g!i{O4v=~9Mai0Fwx7Tv%`6? zn?<Q4;1%!-jbu`^2fxO25^xl@<4*CDo@SN8MC;Q@Po8)mZ0BtfklqM>W0@S|LclMF z1Z-Ld`>DG`I@$?S?Iax~=E8o~%_jkGfnUftCdqx^w>CfmvS34}8%Q^)D`BcdPm*q4 zJOmqhiv)Pqg5P*1%PkNvodozxVME@cO{9|#V6yK?CnYNqU_+UH67Y8j7|5i#7yLdY z5ii4*N?#&fY<9zB?po4CO(tyVMG~<O{Dw1m?u39jBqA5KR31-y$c5?NB|YTC!j|Gl z#Fr3oCzB^;6!^uFh*~%7X=5r$_Z=*tfuvit8}{VhOd@i@@1__g(L)e$m_+;pn`%5y zk}X*Z3&<}a$qwhiroJZ;RS@tflc{Gj@H;^w>N8+d?i4>s^&>3dZIa3ppADPZl1L(Q z!LM0QCe`f_aF|4_fo;`YB8loVU<q3)NutDD*j6!#nC%6>PE4*_Am9XvnBNH7I^96> zd<={DiR8I_2)319O(Nz(KnEt-0PypELLwHxzPv^ANs?V|SVY1nBuUAN1lU&tiJ0vL zzX43Pkq~f@gyh1;N^41uI#|XA4@psz2^%XQA#)+%-<WK!{@~}`MItt5!^X<vNrnZm zkOd?|PAqK9S3@FZd%>^2i%It|1Z*TB@4?nSnn{{f&wz!@s3y&3egs=vK|<z2z#UA! zaUtO6ttAmN55d+N&y!ZiU@6B)tHXJ)wRMFg;uA0Ubs5KW@Hhm-k&uh9H+PDkG)de7 zONp%{O+4}0u(xw0Bo_i&Gd+xmfPgt9!t*I?uI>_PkpzoLA}tbgVRIWiBw{NBG#kNm zF$DtZNXTby*xcy`5;r>m7UMlk;w~S8&1Kh;kPQ&fiRoh)L|i5zZ^HJH=93`LJXp>? z4+$zs^TO_4AR!G9(TnM%4+LZeNW}aZu)We+5_1j~bdJQ-WWx4l6q1NQCIk#+dKnE7 zACi!7V1MQDBw|w|ENERJiO7kC{Y@t!=O7}A>E><-SUQV@9E1aWG?V!4fhFxBeltIU z1AIh6((@qT?r^4?e}jnkNl0Y|9H8+$@wyZXODcbrcpc7z17utxA^Rbs2h&evC<HWC zlaP2gfjh-deD=bk_7WdYd^Vh5KM9$?4gx|WnU3y+h+-1rzXC_7yF@&yys#+mR^pME z3rE-&AR)&fq9fB&SbqrEl1M^oeQ<=+4b*gjXJA=h1*qvRAA%$JULqm&84xfejOpt4 z5b-^U*#n12nomvj7A)){HC0KP7tU~u#C!`8W0}5Uq9MS&n1n1@4To4;OHEVw6fEq( zDr%aVOgKblItkhAhJff8rn9LK5l3P^%Z5Xg$5WHM084v;nj|L{4&k0nVsas3EYn*| zG(@~eVqSn_Y)qvayHEy8^DU$sTeTOCah$|lhKT4Grn{*Skr^N%C8cnT8FT1{Hp1dI z(hbd-0moQhO+x&uA)-CgU&}TSagoGSx#1Y@6hB?xm$1BKx;{^QHXI{i4vEQvi0Bw* zfQKPsT_K5i4-QgyiLNJb5|)?gr|U_~g@ZgtVzwQEh~G0Kv}^+r$4ShlwQ!If3+Ots zU<2>dbu_GmgOpa2m=zEa9m5RqFhuxHk(keXaFV3?bS>Ks!3LJkq-&{8^TI)VyGYDJ zA4J^2jM1_UM4TW&$KWVyYv~%^ge^Qr*HDuQM=2&jb0MNl3^T~X5b`pK2|No&DT}A8 zdfEqD@SUQo%87-eZ19tq1_-%>86{>2MC6r_nC)BOEC*BR*F3qfi8>Gc+N!;9me_?P zrerBZM8`10jD?UNNl+FXX2u-)l^<anKhm$vnE{7+iv%5mknYSlVQnEI_7Vw-gTuIw z`RSJ~CcrilF48agkGbJ6CrHqxScqunVg|YgLVh4YiOb<Mb+6LD@bB@$M!b9c^e<km zgVQ`!Pl75SWF#|EWM7Ezo+Uw-y>OakYv$8``|=8G=E|4!-{!Ab2B%4Qkpw*tA-!G9 zP(2`|G@S&!3FpZu`t!mil(_ZSYS_@~V_Oqx$-+MuWx#n}AVEvkLdaxhtnj-bq?iPy zKLbTE$dz;wv<5;3gfoMUhLG~@B<Sf3D2gF6E|8#wWe^g@4A%!ja!J&OP!vO)BT)qq z@*p$bK#2K}L?uB{4Dd0D%7KuGVax=#L&%|NBxu`GD2ndZ7LuUU<q&coGegf12>F0S z)h>gg=qz?IiTW5qLLOnJcnCrg=8&j!P!yg0i9~JnLdc`c9D}1FWOX`;`Uez6S09k5 zC2Jw1&0uDd?hvzvL{)zUMbXif5)ySBV(w&SafL#Nua-nD+yO<=&7un=YF9Rd^mZ}R zOoo`ubQ0Czg`()h+d!gborIW)%tQ}D%#S4OIVg%wj+3xs5Yva5X-ou!l+}=^S#?kp zUF7;n)Mg)qMD${&`VGYF^OLC5d?<<zW;{uv0vjOaab~W&nnTP^61FQAiXvTXEeU%Y zVwyj|Om+vvEL%vzzVJd(B=deq!cLV#%vfeNS8s@^3y`qqpeT}^Az^`e5EJTRri+50 zS4dc3E)+$oTt5jbhM>{R0=hzsua<<R=0Q;;S~`t{EiQwY+nE(S5&|)qOGwz_3@C~; zJ8DQ+$!dt{(vw-jzeCUqB<`{siXusNGKqT=f*xkp5Y`T263&vicqob_`$^nZH^j6J zV;0c^g7UYKxIaQsq<E9W&71*2lbL1ofuNsAoIehVBEeigiA#c@q0Bl)gh0?2ByQVk zD2isKt4Q2;5EL?kS;!L*v^<f-U04o9(denak+@4MA?RUdC9d8OR1hF>Rpn3=O=3SG zasE08>K(=`Wl#hJ6_W<j-B1(_+zq6`8VHIQ#4Kh!1i7n7gDfbD2Kz~a^KJ-woLSAd zXb8%mNgAAiq6k|<8cdr3LDA!w<=g{N6{LaZ2oy!o$E3wxh#JYPC%g|ty+s<N=R#40 z%$-FV?1!j6;mm?Ygg{X2X3}8WS5OoIR|-jk&C4Jtq#v`SCm<?w6KRl`2Swqww4OAW zUkXtVGi!3)3sE1F7JqAmqHt=wKw2DusNpVVQNx-+)LW#*;+0SoE~ht>7FiJ0Y8bPu zM<J^0Gt%Pl7AOjbjM=2cu5yU##;hx>FGS_dBrTpVgQ7H9`B~CpT0TVe4r3NJFan}Z zcu0!|Hx#9b++UCuo`Vn-(Scdo{SfvFY4VmAiqa$rIiyK3ggwNpEi4qG+*?VL_q|Y* zCh+bjP0qR@s$C4TxIqyRwXU8t*$G9tG4Jc7N#!Akiil#C*BZh$EFn!^fuh_{F=>+i zDTLk6tgmG|2>UB(vj&QC1II|4A_!|2!)%~KGYEU1v^fq%xvmt_W<P{Q3}UwM5QJrK zC2d}SqFl$Dq|F>3gmq)~;2I8L>ncf`_n;`(^c-n(=@5k78^&y6ObCSSD<N%;Ls72b zYtp9r83+q`jM>KTA?|b1Xb%+Ss#cIjA4A+&W*?D#AZ|Ztv<8ZD6-P;<c!+y2lG#Yl z<`9;hOd7onMfsJZq|s$JgpHcSY~>z^%UDbr?e{`ae!;twG}^oa;zlx?nF4Wnsie{C zUMR}HNXR0M>hmG)c4jx@`a|5j64EHg4Mq7M?zc#zC3O(jb{w;vTbe=K=cH9b85HHe z_`V>GJi8$-Vi2>Te}@Leq}7)hP?Y}^n@n1*fd-wK9l36UIPZs~)hDN+C_h_SMOrQJ zLfnHcW=oUWKwRu>(rWQKC<+>DNUN%Hh`VVLv#B1?VEHN1>eZ!Cf?oc1((360(4Ysi zt;eCk`c%>?@hd1n?n*srRi6h9?q~KD))yK)Q%G7B&V>@x3bv6}^Y=l6d&8KGJ=O&p z#LXhDW_=4Kh#g5Mt^6mTLC9mw);dCqBGSy00wrjzAnm?~7WXil8xJjxl6G&op#&v& z7HPK!TKtCD-Ocwx1MfxBu3;IJAQU^Dw0j3y3=d<rH)0et$i7V4RV{}Sbe{Tzw43gR z2F*t>2j~GUmTe{NE@eUqGOJ%D?W$s-K|~Mc2=_yajL%5B!Z;{FC3h8RSGx#WJj$HG zbsMx;UPIdXS3n6OX@1gf;UQ=-!NnY6QZ%$^e2pZ?%7zjo+^>@amu5hVA$Kvyh-wBc zme!L5FYbU66t;Xr5<IyUT0}%K2k8t=u52R-Hs?VJ0!wR1f>kG>$sNo|!aG5ex@wYO z)d?t$H+LFIu&EB3+#b#xCFWje61RjT@PF-v;%MG80g|9(E;Q-ek~z$Xo1n?Tbdur2 zSSSt_yMSa!KLJhJJi;6&su?udIE!Sc&4=Pxd9@^ie=jtN7|k5$4ro&`i)2VGfZ|Yf z^(2FTH?$ecoGAQ0Xmcb$GR%6;3&nxFXZ$2XAPL(1hB;H%-O%PA0g|F&5fsPC_=2SH zd;o2RhcSnm6b)^D@{km-J_E&JzS>Swc)o`=(LI@CMYV!9X&#cI`eP`L@<9nn;rS!9 zX*GyB*gepwC_r-L#6oe5@^?rM&mW;tN9Je`L8EU2BuDL1C=RiHG07457#ekB&K5ZZ z8vQVf<k*x3#SxMUNe=(#(5P!9bGVq{(CDLCB*}suP;4*b97*C&f<|}W%pC85w$Nx} zI!SV20~DLP@-#`3z7ZPrpTvSduP)GNZV5>;D<uJnjd|0SkR(eELZdFjSWuW80gd9S zNtVk8pxD;BWRhjmTxb+AnFWcd(5h}5$&wfc#ikBENwTbZ7FxAu!6N)|Xmzrlq{)ee zVnbW9NSf4VpjB%YJR+w+tF@O%nhVcDv7LPjNt()1Xw}ulf=Ji|Xf@*$NfU_oL9vzW z6hBF`Js(<4xS0i&aiP%az%G)fHWP}Cto@ASdFd%=6?!WRGLH;_R*UA4Jk@Wyq1c4` zxoVPUYX-E69>Idnu;$Pz_A*ISwH}HslpZFDrk6vjE(2K*`fV#{<$j+eN-xfaVtMWr zB_z?sY-rW&4=gBkgl66pl4;jhP%LisCnQs`7n<G4g47ex?jN&AqV!@P6bs8<v4kY@ ze*o<|vtSk88rq$hPcqeBfnr(vULu(a=R&*tS@4Ry586FbPcj9vGN4#eM!cV7O5FhM zeiO-pn5!$a%Rfa@RVG2PptwsU)%K;(uB(d$wXg@F-GRd-*Yp`sEGGYDlB;Stw7czQ z7UWvq4eiR#kzDgrd{8XJomNP4EhvX}!w0jVH?B9d^ByJ1c5Q%S8K2gYT%I*vXcu}b zQ`n?-kYH~$$>mwl2*nbf%JGm~B}tH=?IfoBY{U>qu%VtLD@^f0F<o}rDv~VqSx68) zf+_#0*G-The>2H;YAzI$y}OxYTbvIG+Kge!f9cf*5^VW~q??`(#YBxcB;AWUAi=0% zO!*%Jn?r)^zmRmBj&6Zsl8k>=lXUTJNYK0kQ~pJV=8$3cCX(*SG&d9zBqSx0bS3|Q z3|$5><rkv5K!&egBl&77pct;8mgKwi3}omsh$;U^R0w2PS4BEV&V*v9wbMxla}Gg< zkl!-pS4M|G2H!iR1ONN$pcrP|I|0(cejj8AnaGr@nA{3d6fGeg%#U9V#SkltH<1pO zd<!X>^<c_X^=Jhto=qe@Ogj?`MR&2sXObQ&_d$wQJ(zM0zYT#D>*kOyo?KA|MOVI} zMAF6CryxbhWTsrx=nzQZF7}WvUMq4#(M>|dcG86>J{wYm{DCRgF}e%nI5Ca%vAxI* zMHdMbHKdPK8zD!RD5hN3EzKcE-Y(L~_98bF=@KexNGG4=L5?m_Ou2y$%^^qG`=pl( zMQ$ikB~+Xuz2q!|9L)zY<%R~1f+R`vNiP?Q+)$)Rs5nJ>ss0I)j2g(4Cg{}$l4RD9 zZl3<242l%x-(MizEG~s4Hw|M-lk|#)B<1m>pZb(VP&CU(t0ev8#6prGW0=xJBicfi zjj5!c!uUognjA=(M*5k#7qYY+!IUPO)Elxi&LJHw$yp0USYCWJ>F97iWa&MLDI9LS z8?t2oGe9~Dd{+lWNL@pKbmTwghAemA$`mexAA~e@m87d(MdeU9`6>>Rt`c)0&4VqO z!YS-`kY;%U=__&10Vo^}rPPzYzBmnOx`r`@o9jNv^YJ#)SINapC{2`kv4r%s>T}3* zpNlC1!dpO|8D~jvvx}BNxglRgGU=@<5Axg}$rK^sPe7i8v=Y+W%&bx<*R{0xNzz+- ziW~BDW{R+TT0x%DU8KJ`71>a(!5x?EA>A#`ggnhUGDU-lT_8`{D*@79<*_^{SF!YH zCFw8lwh!_&|1DEA88!qGJ^M5nz_ay8ER<h}J+jq91~~O8B#Iu$6pea@LZb3wKN(@u zf℘|8_EK8yO*x6$^<%M=(XRTL(a<eKll^Q)e2X{A|XVg=CD)&p@ULw=zY7o4Z1$ zvXpc($n3P`2y%;(l09UMS;aocG&F`OQn((6RGFWVQT)kCTM)F$;}$F-qtsr3RIOc1 zk)?YCWb&;^C≪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 diff --git a/resources/favicon.ico b/resources/favicon.ico index 2ad9b3cbb3bd6d524471ce000e6c7244e6109bd6..cf6652ade0e1e9c190c2eded92e3f945c36adfb6 100644 GIT binary patch literal 22382 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 Gr2Q{@^i75U literal 15086 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 Uw&`21M#1hDW6`(<7aC~)2U`xa;Q#;t diff --git a/resources/icons/android-chrome-144x144.png b/resources/icons/android-chrome-144x144.png index 51435d6b4c7fa9bdb4477d3f539acba7b396780d..77b7a4960b66b8901fe3b6a33682206b3f1e769f 100644 GIT binary patch literal 3737 zcmXw52{=^k7r$f1z8l%Ii^!HWGh=HoW6d<SM3!Vr#Mm-QvS+985wb?Ir)*Kkl92Ez zAxmZ7vJcJwj=ul%+<V^hp7(do?|06<_jzvYB~t@t20jJ=0GP2DG!9&oDK{Myv_qL3 zao_@T)iKclfSM%6BS&g*5Ankp=mM1k0*l~=-Unmj2V%4-H{>VPG!+0qflJ1CJ!ALV zYHIalKpV6dE|j0xI?#gGAr(?xy-rT95%kFb0B*^^g+nOn5DGdLhX4|coCK8)0mK0W zMLvm;0p0({HUB#M0E*&3PVf*)kpoHv)q|7tznBB?^aQXEMSu}9paj|z0A)+@p-2)8 zaR5aeL6Q5wf5E>;hbJk!0E&W#fB*yu2Ie9_og_d5JUuuOumd1S|7RqFKI}vlg-icG zA^-^jNMPb$M$m^K5B_Tt3?fLtNk?E=N|rW75+#TrgK_BJX&}H+kRX&19Z-P-0YD{( zC+tVy+`xh`P!Gicb15xTQ8bf4<xtdLZF}G(PZ;+>4U}fVmQe?Q#$PV5><$%0!#-4V z6Q;9CqfMeh?LjrcQee8edOZl(hH1ZNvmIcyA_E$O%$6hoxdYYO2j@T;4)QylVHbxj z$lJwXe<I^AFJgwl5R^fXOq`@QX*=a{S3K59CM!fDE=M2$eEO=Y|Gf{OU%`D-Te-?v zIt%38hoV5bEtn42MTBUiuJQ}KT)_gZ!A0d4puAK;;&W~<W5v?%3?`mu({uR!!D>c| zrKSqS`&1}H#b=+H@h;Mtb*J3csV@#QTWnD4qExDNlq+9yx-QZhbhFxeNu?F=`T9yF z=kfW)iQKo6%P-@(g;c4D5ect3<(?%Fm?U)9==`%G7ONHxr$+eoJbuD`vFK5z%LeDm zOL%?0F_<L_g^n@dY-ICdMeaw7Jn)f9*@bFVa(Oz+{L{&1*TH5-X10|CKafTO&h#?S z4EsaBuBvq7$c6DO)gSunH=v572?n)B_K&n{zgdr;N*uQAH*;9Pqh`i$y>8kv`9hr) zJDB;%M#sunGG%9d)qYnX=8YjbuJ?koY%<@ygiYp)?vsqsuJS*KsVfhvq~oVOHD>$g zn63mNIh~erlxo@^LNKaRMxXTh(#`9=ejzU1UJ#Ue^5-4a>>SSTecHjso~{38LwQSQ z@~cR$80{mm+_nP0BHyvAAwEyFwu^ZNbv~yRdVT#>kWmGG<cC<a4nFAXYEEDfXZNZ0 ze;HUbC5I=mn9`|Y=+i{llC>S3f+$_A157pZ24b6~gvVJyKXG-uW{v|9z_*C{VsVj9 zJkEq!6+*Rk3SqkLA~EScwbDN@wK`C_6FPGoNXq?rtc*bHw6epB&(XX4mmnCI3>eS! zEgVvP!Fu*^$aW+*^{9UmyD;Yo{TN0+r7SnH+|eK<AK`e|uFswknE+|I?aO`6QoVQ3 zQqk^}p}0hMYm|&xfK*p6_j-{v%}siavQ+lBtdc5eYhrFJn`dxoXchX_ByO{J))ta` z)5QwRr$$|7nKY3v;k>50@ajXy%^0VCPC?`=Q&$Ze)+H%n?DY>v&FTb{l1ffdet@#h zNUBAY7Wtc`%9HdvUUoYFG|ZkW)Ml&?g^h;XT(_#v+$ghn_0cv;>)X`z_+Nf|vp;0B zUp0An++g~%v7GycVLeB3f)=qqOI$gSeIHih7^!!QM<9KLrDbADVT02TDdO=gzWs@6 zeovgrJ2>OA(}?N_X`<UPA3ArIxFu|9Y$AFo^etU7lyiIIim^ZKHaYk}=X8aT-i5j_ zxo>oAD^>ywrz;8-x7IP+ehqduY&;>Uh1<W;5{15kR?@4CDZX_`p}LwW24dc;W!k38 zo0j<LQdy>^{@OG>S>2`HtN#p%<M=J3MnuB1Ck@Lt_MTr>HpJ>IS<-1ea<Z+Qnmtb5 ze3tGTcZY?@ytvSPHEtD!Ib9_rCHQCy&_i*TeV)l^{l}@9v#fiWmg-snL~k-|#Plg} zoY}p$wY&|Td@mSoDe9kciIt|sVYq>>jK7g-Co6rC$cSr>zz^wh!W){k<y{;^o9UUZ zKbkj$3HQh_D1=P%^tdHF(Hdplo<lv$nKX0}=9%1^%PZPPMXtuH7d78GF5TIRf4zp3 zb{+I%SbYFE7?H04rc53RpHt<blcZGp0``Bg20A*|q~F%_e-|&UZhPN8e&&qEOfB^m zA@>o1qZc{6DTl$+)hGDGrKt|x;H$yfmIQ9L$!M}@dZ&qpqK}cO+w#_9x!f(XA=GcC zcq<Ztt~<Ww_KhKn^&b4Y8$GnCngu$7i+DB599fsIxWHh0@wMPKSFg|It-@^6Y2tQh zu{W~^9dJ$c&07yDdWV!lHw%g$_FUGg6}V&mxz|#edb-N-Fk4Lm%gR2RQq)o9rq0Xw zm|X&%RpM%&CXPZU8>Che6rZ4-o0*krc}nc=WhgY>Ey`Q%7Q2V&@HyYgMxF~@vV~L~ zUBtzB`$zn1*49$;XY9t5;Z0Ng^OwI)3ipb=D%2`lwF-T7o<67~!zp;aH2^z&5j~gE z_A+gfQ?hmNlA4u%gOG)#yXyokhh2Tl0<!jKCh18Z`5=&cF~PU!h?RJh2aWl;L~@m| zaD<m__4w`%T7B9ZJDyHr#imLppYsmf&Oz?pnpj?MAz+*s9>#QimJgM0{e5Smx!ZJ? z(1O~?rk-zp26x|Ndq<0T)Z;B^uPu%K^Lw9q`|Q0~!Uni9YQ-uC-F4wvh~hsM9sYi> zBA)=I|HJ0KN&HE}qOHkJO-t$&^MN?QUy?Tr&bs#&Wad2H8ZrB-5~L1Mj2W<dr~hHi z=(I6d*aID{rGa6Z%pmuDpP@lZcxa7bvnL2|Ml1U|SYvbvOD$iw*X2t`gVd?m(WhIN z;PX=~rv!7g8441i6%w8ISu|L!gyR<o@*ydsAvt{=+;nVq>Qyh9jzbX%(MoKh8YQil z?mc|p!QW#<us&#=C@A!bGaw_4XJ%ODMGo2gj(d2l(uL8ZR(j4!T16Whw0y!#VRu>Y z-jm`I+YuSREp(*T>r8b?>yyO({d@e<LdSfUT8+0dA>!YH*yBrS+hS#esQn2=PrfTs zWA-mRi}aRy#0vQ_NGIqQ*52DC)@kD}?e@itehes9NSfQqlngHcWFuT9BEGRSJdvf+ zHRxCE!@fN2<!xmRO@COPA89#Yg2^M1>6KUPvy!9A^K(bmfcrLFko)@&Z{TcQk6l?c z-Y?*t)B;6+kB@WaJEgD_fpDtMms}88NDZHk-s?)b&bqD$8<;qeaYUC|9}mp>K6}dc z6Bu=_@h`r(>b5Pwv(7zV%Y?~{&YPQGO(uzv5=Zy5hT-A<+7gAFN{6o(7Sy{6J7J9X zi80K2x3eDuU(`G|(NQ)G;@^<jAM09i)m#`KiMk-^F?vfVedX#Bvd%7iM_aep1JO4v zLFCZZ9e<4GGj%Gn+rJ(L6Pcku&l%!LwJdK;lWL1Ya=}l-+Y-IJHIjvuS6?uiJx|uE zIG73c?5MAh1^CjxJ4~;fgKk+=LhPVTG|ER|ayiQvKJEHWJomo3sKokgy^p`D&(w4~ zr@5VGX}K|e0N*qqgt|pDv{~4u|5l1tZg0DcDrH8)Ra4_5{{r5Yo4wL6h9RA_;(gXH zcCFMoc&k&>1Tnf4`j}&=h;K_zKYB4EblD;YiH#tdWK{`jS@l1Zv_*0Gw2CfQt41k0 zC)u_~yV?qLV7a)4D%q`hGd@0Wtx8zDuHnYVhs`;!8Le!ZAZ}{j&#Pf^C9R-QF4ukE z_TiJNMez>L<z125pi1-n8$vnX<`%<zH@ef_6T9tvjMU$}H4ms$%<W^Scx}!*E$fq^ zW`^rzWDPI~q9aDB!QS|)jnQ@ULa!vwoZG8By7;ble$*iobD+>4EOV1Ri(d2(p6%$@ z6$jPkGz`Z$taX-DB9XkHD5kBTR7-sgJ0|s6%Ao+;RFI>~ujD@v2#F;Y-pwCc#b5Ud z*Obb`bbVn?{K-r_s8Q8-W`fl_|Ij(LF`B$CNc4Ppcz?Xtu*<rZLmjxP-`Ghd9?rw_ zsloh?R`pWXaATC+yX?=i>FuI%d`9#F0ob$-xfdfJjfEmgH)uG#v$G8DZhUZ$EbCQF zZ+(kl#HD3dkIbLp|L}w1Pw&M14;9mM!Td(vk^%GWBQN4F-$C4F^Sl=SuaKKWXU3$| z`4Hu4iC9cs;h^#1#MuD7cc(KKX>M7G8%L4GRm$Oz+YW1qcA|<bDl6^X#!cvV4e$hW z#}Bba;?*@KoZJW+ew@#){_n~!J@SIz>b-owM;qogUA`KDe~iB}T3s8tt|xB9X`mu2 z!(VQg*0&KoDmdq_d3AJFp=rr&d#3#HDf>B`$%IEo#ur${Fkv|CjChh~X638draa>f zGlS}Xhiynf6|3vcRmFbQgPFlDc!EgYWD;+MY(mbj+jB9TGIFE1!BS?)H4eti@~szM zKVFw|KTY)$7|});U(uNu;a~pQylB&$5}=s<6<wg8GAUbf;q^5;ZUq?=Uf=2rN6q5k z-$Ovdy$^mRSJ$|$)g7gtPN}-b|FpNZ?wL#^xTeVHDwvC2)f*smPm0W^ERX>=@1Rw& zrp`$4SJvtd-kN}O3>5b9^}gYL(?ysN?BgQr?n7_}fS{bYEhf6#mQqrEW*_>oKX3q4 zj8V>+5iSNdO5=pWh0$Tk9oL~^b$H<q<0Czt{hb1xv>(DS`G#`95;r?xOIPI)NC9B= LOwpCP4&na;Dq^c3 delta 2665 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 Obvf1U5lB8I5%E8}0_ubS diff --git a/resources/icons/android-chrome-192x192.png b/resources/icons/android-chrome-192x192.png index 43887cc4e1e3067a76de66ceb9b90c27661491b4..2c111297b3f50d5ce5ed6822494291c40371d105 100644 GIT binary patch literal 4625 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 HddB}BG2>M1 delta 3527 zcmV;&4LI_VB-tF0Nq^@600rj(r0BKz0001oP)t-sOlffd00000000000000000000 z00000000000000000000000000000000000|J?uu1OVK>0L7~S_}2i@wE#Oa02vhk zM?L^lNC5oW01piSAsqlTEdXU#0Bl_Ver*7Zc>v|c0CQvj^MBI-DkK2x%>cKb0Hu!r zTu%U#e*m0^0Irt+W20L}0000FbW%=J04-#&7mL;P>I#`sLc@LtgT|5o01VwpL_t(| z+T9)5f~q=9Q8pb1SwuitRTT06zwgd+=GY}IZK*ov=5@x>wAqs;lZke4r%S_J%vP4= zIJW26j$>J?*?+<`mQ#1~yTP3r=F0In;H*sJm!dIWnk(BA0^eE~^WSyyZ>Hr*g0)!w zlACaine8coJu}>YclSRyy!0NXrsItUdog|0;ai?2uwFn)^LNM72#)z&u{2){QvPnA zCu!OhMVF>YzTXW~((_Q5o1E?Yr>^S5AX^iV1?Rp>Pk;XFQQ&O<RP>u@&4p;w7bhkP z&mbg&LHqmi+^z+oJ(qh1FBlKr{u?ZL;%l&$gy0&(66x)sybJHXSt~&U<1l*|9W4Rs z*%h1h2nY__r_s@T1|0q+T91V25<lk>fa6cXwHDZPlyG&Hy6py&+I|<TwL#EP%P+KA z7gI|3q<>t}Z#TDVRi;T2=XsnYX<1!w8?Kbyq?9<)XyYwO)fF>|Ckn4c%&;4Fad8cq zOcRp4U~3~Il6>|TcnindA@&FT$@p+S!oR<e63Ns<{)F`L58(HMI`KtqPd}+a209*y zC1x5JVNQ^Lz5#ci%No#m4XMA7u#>FO@^p$zPk+Cn%*=ImOVpfz<OVEO;g{e{weEjU zGjCgM)%}=lMT@2oxAUA)w$U3dehP~EgTf!@iunb_4M$ul*l)V_@Aulb|E*Fe6fV9V z4DkK$N$zd5Z2$9QN|KPmtqu(E{l~;dqI&0PgI!Iqa~qGxV2bU(BQ)rF?`ee-As!;k zw12RtW93hYpHN$P+My$^xEd!-=h*(Q#PM&v2f+4>f8{zxqq!@#_=!sIK|qLUOc+^m zRt0MR__*!1Ie8C*(}s<~Ox6A*_J7%V4}{$f``8V|;9bK0N7uyYCp&l#h65%pdh}0A zB>{@@?=kTn4k^Y6wSq8pQ3JZdbZ_oG0e^DL&OXR9G8(<=Fw<x6Jq7ltag?DNZ6V75 zF{*!qt@k9@qQWSO<=6n#V0%<KZl1P(0)rO$urrs@0DkzA^QSNfeF<$~Fa+px_y2)G zz!0WOaRMq(`Lp+)40}`-b;3l15YQfx$H&}zI^^j0_kxn>4Q7BW^<Dr;2D1UryMM7@ z4R-Ke0teVTu!K1HgrI+szI`zAyOE|t#Innf9~%N3>?2zUr0q{e;60GGO*bGBG5Od8 zZ|^8=|L<4<Xz7zUMIaqBg1&Pblt2pp7bAoo$*)u*2YJ^-_I${QLwuOC0{7`6p$|BN ztY{8gKnxoq!oWy>gen>tF~@TL6@M(i4JgG=7zvPz%31|@01NH~q~i$4^J*A@T4^za zh*I7ayh9>1+K<*iqxB)8kv1F;-*q4_Ozq6jD?~xjAgQ4h9G9tt{ksfl6hkO6j6kdy zYH6V>Fql?QI+BAw)d-A$s!3i#SFj=?DUb*XROA1C2JJsnUM_$H(Uc)WV}H<%kOZ*) zrcsZXLS%?ZQr8A#c%Ytufvr*X6ixu>659n?co&W40Nf5n0-fsX-MJvzg5L2A5aI2J z4A>Py;Hti!-vY{H22xM}XGkQWf)LQNU;xpO0kCj3CXUiU2y`PB+-3k98vq4ebx`bw zKMo-<Dzbe8tb-XqL5-fzoqr$%PI``{p=sz1prByP*I=h|RBFd>02+FueBrC88CP6t zu3-R_6dk$7M|~+oO}Z=Pm|1`f$_G_rc8jGn8Ap%BUv)Qp403=t{zQo80O<xonl?=R zVJ~FJH}ca^NK*%ZQ8*_u8l@lwA&8bRW%o1!J<Kg-Ajsu45GPp@EPrqoltHMTYU{0- zCWG|Ywr+(rT>?n>Zzi}W<^QgB^d)Sy=#ukHcy@d#CkmJOH01vk3@z>yxIRr8H%Whm zVuo~Bk0obGkLOI&+LtDn0%rF?+Gh_+AC?)gT=Tn)wAX(C?BpqC2=#*AD;&4Nm|;u* z9sTQ}QHXrSfIKiT9)JFOC=r(hw(Ls!6FWSb-6`;TWUat8ApMAD78B*+`#*%DJ~l1v z6P8mMU`mStrP$5i5BQUd9h!%)Dv{5h)A=q13_<evtF+cC(bFr<#m<Ki0*v@V&@^W} zjj48kQ+fGRT0@U*_)bU(L|0ry2vuS{TnxWwIQAzhJX-H-fq!ROg%}rCh!|P|LTD!# zY~>s!b=FNL^1HK`k=`Q~wL#N%%UwliBdU;b&#tBMG!Q8o2&wd9{ZJ@`Oqc+XqxYCx zCS*vQAB(_Q$T5zP_}q-9FrF0MMUO=w+6l?g-QBTY(I#3Y8!*ucosb#7ziTp!w!aGb z^p`%k2q}X6?tfJ}w8N0fMm=@HO(^s8W3l+o9f4HH9ZRyu?mtU}oU-(8OV~7ZbN$J@ z4v&x8{W0Xfh7v_!D3|4*I?jtc#gpG$%E4E3G0p1s#HTfsP+5$BDlQv6n{UnnF8~>G z##ct*TPq~hxf!?jDiIGkf(R&(5b5KmN^J2#@Tp|p5`QEiSte!@RKLl@3BE5*3JD;P zi6zA-7mN6C8GI!jTm%VT8UZmyCcqXPayllXV(h>fJCG?+j>-*OR1F20WF=xsNE&m4 zQ1dD1I%aLqn3FW8hu|>817m7XL34UR$D&5$_XMo%5y?u>p^<ed`C=j)X|4(7RdAQm zpq<55^?w7okUmqdBtJq<y>wWGqml*t^R$WyS2(O99oS-r?1Wo=G-_1<a9~S1w8%Uk z3EOnD8>a@)(4u^BmtjZ1VcUk02~e>ndN8;vA6}PomODlu?52PLBfKu1;26*`WZsSu zQ19jM7&u^4Da9m~R{dFsQG+ROu&`20@<~4NfPd+QXWhx#jI1OdlxCGInPw^A@5<#Z zL%qp9En=lv6%yU#-5&W=!lJK8ic*=0ZiP|<98N3+{8PE?H#&?8cBz4Uu?Mbzn?bvi zX`{+K5WF&rJ?20Sfq20dTLFgxiA{+on(T5Lg@UI+1xzfFGtKO9CoM#&f+v-dv%mYl ziGR7jY)APlC@*SYYbK}YPq0$EXIuRkacqwx{d{iGpL*FP$AhoLRJG`3bIUH33tu@^ z6AeKbelX6@=N7)ImL8`Z4>)B9rBqZhQs0mhLX@DPjfAn)NL6ic$~=Y{t^(@P&<6xy z`TdZ9^Vt`W0a7^U{QHn38Y;g>lrfSAE`QZUP_N<NVP<1IfIwc6NjyREYatOjC`#+W z4-Gy+LE>|{VBNyEaBF153LJK9hXr;4srQAJXINXPbb|FeP?QR^yF!#0^BETW5KhEr zDx+Z$$`++rC8ur@!W97f0R-ZL=!@n8@q!cbz5)@KM(io#h{vEl9+Aj6fx{CnN`J-L zU0tEOr5=MK&v6lD7KueMyQ63d1I6_y7HAiIj>~uuEg0fL+IaHG4k3q7&>IUO4uIaI zk9v}RR|yBf*hnqt2bADxn);gp{80%*qW6y|ZA7C6i1y0{ngWb%%kZrd1~--n3V&K| z_52IKu3)Rw7~{~k2VMU~EAQdP7=Mh`B+&y~6AtQ_2s}trpuH2q$HDGZ`)4(WaV6XH z++Kyi4W<L*Uulq3!7&2s|J<UA)g&y6U%<dBO~Nof?i8c2dH_p0i??ZGHp+W823XP= zwGWs7_f~}%5p91(v&crSStQo36RY0%N7{Ab4O1~M_8)1OinpxALLu!_q<`t?mbG}( zU@Ulbe1b+xBUbEPynp#C+csAk+BOq|Tk!PI?U{|UvFwdR<LuY9F2`d`>aEN1=J7-+ zO7t)?BAUlz^s|y2NrR7{siotYD$@VV$(_j$q~Q)wIF|bNuX%t1i9t%la6`?UpnrtL z&=8SK>kyGEk$-A53=ttQ*ng5)y0-k~V_c{~I#gX;qXPw>9xc~v8l*#wGV172Mq^Px zd#k`vYkSl%re82jYV0^Hd>k2LoR`uy_|Q17h#2QJelp*D#g}*A%uq`k+Og0;wUvee zl@A$d2Twz#^y5s=Y{z$!a#=$K&w@h*;dhu>Pjb`yL=#X`L37?%$A6MN*0JP`btLO6 zY>m@F)dp*JKZ7;9ufdw!=N%g=Gh%5So(_yQO*Oq`{n|e5sxEX7PJaW2%W7)T05nU} zK3tYD-Z$4V-WRAXdeDsJe|*3)d&G6EI^r6BK|g!ssC3ql@mhY!c>RJQ<6rT2=9u@J z_?Y+G%f`HaNmQHZ7k?K0W`L`s&&S-X-`l1;c?QhcD11InPpkeMP<TYaxvx^*Lv(vF zpF9iZ3wzL0+2=``c16*pX_D^;9cbHp-uAx;iNy<Q;JiO~``;+6bZviSxRaN_)YNbd z_F_7D9k|PxJ!<!}r8{{sxP~eYzhU=33fi<}cW;?*zh(D-Bs}Z#eI<AkzGW`wlivvL z)G$|EzIIloF?A=u8{FyAFc-6xWjW5ro!E|JS*zK?G?tIp`hVzs7tFAyZoreG5pT3s Bb!h+q diff --git a/resources/icons/android-chrome-256x256.png b/resources/icons/android-chrome-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..6758ac5c6be9e643642a409aa0cc025f1090ea76 GIT binary patch literal 6035 zcmZ`-by!nx*go567>#s?ATUyD#6W3~?rs#MB&CMn4^$B8loBMAa-f8Sk`mIT#3Tgi zjuHEYe&3(pb<TOu^WN|C-1q&w=j__9J=4FZ4kckC0RRB1sd3j306@491Q0=RH;?z` z#<&}vo3gGl0MsUuUO3=iuRbzVR{^TNv;4tLh<!9H9svMh;`Idz@nPWu00^M3W2~xk z-&b0?PFfoEcdRopsgRQT-x!Br!14%08y1km0>Ix>0f+oMrKIZ4!SZMSH<gpC|A%7% zlQWR~DR7;MOE`tVj{!v-0|p|04qPMG0Z1MLz)u1Abq*dJ1Gx^4aXEk4P5{M!0R{{| z!{tEaFM$6QJ%h+&0nO`G9K&@oTtWhc1J7^_fILnY2cBQMmBm1=4M<DlT>W#Ra0XF0 z0Tgf^aG5wxTrCz5{7Zr>SGYFzm+%bd9Dw6oU0fShytaDX2yS|95(^;ym0WiL#&Q0m z!r=-yOJ`vC-v<Bo^|$?ND&SfgM~mC5zbe<OICUJub@^XioXQyp=kt0ia3udc<Cd;# zLD%G1Kn*vZ<NY=BuXo(GKyY%`Y^S(>aXf$7{w7QOYaa*V*l>G@dssMod-y6R5XA`+ zlVd!^KLl#M6qbj0${kd;xF?Q_d&w+iWa@6;u4|!o{7C1D8>{Kun`s=4MT)G1UcY1T zu@}n5@%(#FuI0e;h9YmyzzXeD_HP+{GFgJ<Z`V5A%G$?MKEy-FN}(PIr1eo);1qSl zN{=B*gB0e`Tu&bgr09v3_}+Y#$R2^Bb032mPm&pGiIv@vsH~uWn8)PbL1~LqjORcu z5oxK3zq1$2F@Y7%lISgv=<edHY~$ZqB~)J|)^4P6uBUbTNbA}|VO@2@<2}9SI)R$f z?dmwrCuwY<D@2+vIHIDsV}tk-8fjh3U<Hvpac%+`sjQEK`QkSTRIP<yBe`QOh4WGU zQoOhi$Y+1Udqx1JXg(WaFgTEPf`<nJQ(hcn%9mHSezET#Lh5+0R&-hE9puA1YHxGx zsM}64BiA`kU%B!3FqV#65$=61D`GP=5pPVFrFO|ID=rDtV@HTOCJ>CI=m-DEy(O)x zE%)KTUvrx*b+SLeqI-_0Ey~Ynu_8!P(HIsR>RCAS&3tYCef`3hn2f<`_(wWY8Wr#A zQCF>ye4Yn3UQm)gpX}#?#myIox&sjlTig1(%D=caH^v4t&g&4>x%)3sdzk=0y{CCs z**N&e=Ifv^+8(-|sXz^uBDS<OJi=RL(L6jA&T)7k7EndH>TOm~Q5+XpCbiu3TL$h; zdlk`VONaArO6y2G6>6dwvP{>Ry3EBJ@FN~X`u6<zM0)ekV15wXdts-!8RhLd|6L;) z^-8O)Q4B({+>`AbnSU`{G`p<W9n`4j=VjpDn%L&~d{9YL)b*i~gElv*+IjD!%g^-X zvu-*irL#Z2Qm_*ZXyB^!ig@6s46=;gXwLtPcbLQ#iI@Bqj+|^7JbAY*gi`t>MnGyQ zJCg^%h)bJ|ca7bpYOQ$XfUTF%r9ewLtoj_ZWTP*m;VM9iVN}0rrO&dSmwNVP@`?*J zV2arekm#Lj`yleB|M#BASiCL+4=Mv65?_EV`NabB4$bovYI-+d6qYw;7a2#9(VthH z62Fq|((0J~{?k=nUM?)B2W?kuAs)0xG-(!DL)bQCQN`c{#t0(<ctxj$77v7`r)@3D zf_10#u+Ac4`Cm#oriEN}q@ZKk*t;nO{lC9_>?RNCE9&wtR>aInlQhrX?)Wj?k8;@) z?=s2wKIDZDOZ@5WQmJ8TNPP&@XeIS8RW3%NxI8rFVq%mvpIb|n2CZQgxCI68)Dw#8 z7xqX0IDyhr{cNatZ>#O(%6iPZHy#$x^Lp8D^OuE~cBqT)9ye><yEzT&RxGx!sNv&1 zvu+aaP2bphf*N4s`N{A2k7}}xOs$VrCGzKUmo4yRXR^%kXzC~0SXX-%(JwpLs;aBH zSuvJYq)0~W{zdCn`_ur7&Lde>D_~AE(ed-cSS5S<w=XtMh$c|G*oElk?@py(OUcI# zBbmY&FMfT$Pw-ZF?QAzvrhp+PwEk&Fr9)LZVEP1h3hNl8Yj>E(#4cgc$Wg}&Iw;|t z-5E<T5R1?~{gnl>AD=z?5~j>|dXe(qOIyMaw$Xc$1Z(Y<hS1$x>YuKpnJ^x7BT>eE zp(b14Zei666Shw8;Y>?gAd-RU?GC&>h%n>>ge0)V>go?+;j^M(N=N{aWR9?3)M<4w zG!G%yY;~1M+7&ro)o`;ro38{u4j$!0*bq8oL)RQ(MHo@MvXU7hUp@5loAUZ@p#HJL zV-sIv509rc0ft!wxnYgN;bTvPDdMOYA1@*6g)KocM0iE;wFzV#7P+z-R(s4697Hxw z(oU@t`W?H?;C9BiM&c%BPFi32QCSdZx8CLZ@4;SsYU7HVUc>!@G|`_A3N1lIbj|mp ze$PAOlFbGkY6w0P?AL(-Nvk^y6@#E`^8O*j5TDv+lw|=OQrEGAiZtp<Vm5owvF2m< zM@wl|?q64A6Rl2Gm9Z;sKR=6y$VAs`B$*edknEnGi5rKK^k&pt$Wt&Fm#nsKLKcz1 zmB2DlmlsF^9mt$b(^p`r%>fl(7rSYUsH`WGP)a4eXth`lOb&X0Z=Wo*KYgYD-$Kwg zeI?l(M<Fm%>bOvn3{=ZR^Nq3ACTN`Lr?@>o>8w6N5{A`5?NOSsXJIGs73%yp+IM8u zZe(go1`_oRxSv*-0!<gRea4(Oy|z!f$(Oy7Lah8VLiE!T*~j7#89g3_2i_!TGO)93 z=~1<_Po9&|muZqRwQt15&?s2q8w_=C^wSuvZ!uX(XGyuyn?4UrZ>wZe)~u<o@dS^E z?-?<o{nNd<T2)aOaIh0uO19YxNzUO4_NXCbm^_ow{d2P2Q*~|`&dkl~FX)3da9%q6 zG5LLEbX0`@Hov@bBcmr_kr=UkqL<%PW#-w^I0v)U&`<}<IYo>l$F9DT$|o_em>=Ku zpzSNk%LbNl>D5k-a^zC#ES)ZI*+kTsDBZ^rpKJSs<md%$(#2cH4e~zzxWyqI_A+<% zRehpYbX-j7Zn-g(s9X=NeMvOeUb?|DPqXK~7Pw6vhB+79N<L3dNm;zpk?wCrqbaxS zE@qgI2)$g>f_}?q^k@<$Cbdydo%p5NrtHvXBCAqCv$pRVoAUY1@XE`U(r_C(#?TXT z!`Fz|4R3)UMg8RuZg<rWLem%o%kOAB1W#h9Dg+G{Q2}2Ye)`~d&nx4wkC-$CJdqz{ zkMWNvrA))g%5{O!#FwvW180~sHJLfH!?4QSDz|8WBX0jin-M*huZ1X`V@mPkUvx3X ze8>@R;#fsmKgN?J?K+LV)6fhm!z{p5NhKpOj^{Z=_wl1Mr7veeyk9eVA_~8rFFXgZ z3h3MPkyT~opNFvccW=G+rJ$^e^tjvmlU#>40wFJyUw!F)SHlHNdr5SAzlC&P;1Sz- ztWT$s3ms9p4zgllUrJ~-E-rA4K1CzWxh|lRM2yx2kKyoBXUuy8-(~*vl<iYi(vj>B zaH4Wuq;6Y@oqj~BDt0J(`rf(oig0%M60|F>K90tIVu6}UlBM)4taaZbel?uBu+MPR z#;2~F&6m~y%!09^oaLLt=PgMOehNYI4tx&2;j}T(r5#rtM};0+5I4jOS!MPI)_*>F z?hC3(9fGAxSy?nK>@Lv6wZ&1QCl?;iD7Nmkru7e&u!kS-+Svla)tQS%r8!mk)rv+o zk5QXmX>q~IU=<8IqO8d(5H-HIf41RLsz>)}qk;rjtNW^ruvRKuBSxkmZ()w`+f@;) zmvRs^M?rE#3rLhkU%PD^U?47gYZnRV;Ej(hd;_kk$U$^RLE=d1eEn!-!PQNFVE4%T z9Ri_`4Z^-91j-MH<JPg=X8xezKX@@m+H#;ZXYe8>05V*TN4qvff#d?;=QI$&#}_c* zjM6&VAVR!q&%cs+9MJsDd~AI@rtQ{n^-TZ-PSZUp^nG`(n^uGgz;D+?kG6Qkl>ZmH z8gsZoii~Y9*>~NaK1%wa2EzHZ=hOcp9_d^B`H5BAJkGDNjZ5w$c-L~fblZ3}9Qb49 z52kb3G|GeqogQvbAn&2STI6YNqPnaxPyne`P?05)P}ulfy^RWZMI2_>k<)8<KpY!! z2Y3~6;IUa-57vCmTOac!6P64Dp?9K;R5UAjv5qZQY9J)Hz6m#JTDF|&r5XsJY1qwk zSMhix_9mhOKoS|}rakSSfqP;SAOOd3F;96*ylz_*FilxzbZnzemlDAZs^QZ2HDN@0 z&<SCn_yycieoyU=dr!;{nMo0$;Dnf~>LJoMBule%OC;)0-pv%h;w0s^FF+kP^0K0f zMXG#GT@YkoG;p}%yNgL6C`f4MwI<r7$w^&tXz=#S85%iaCU55k+u85yED!`b`{YEQ zS^gqzidX^#BhU=;S7&cNq2>N4{fA=tgMktiq#=0UW6h?k>FmK7<(LGbf~Noj9$O@- zom(kAA4~C?G!H-u^0``iX!u$T9VBaf*^S3>iSLPhwvpNxwev)2?2wrjsPj+C+W+=l zoS&^Aa@9cx7$#XBFA*s;LB;+MKu#cUtiR1L=<HJ5BtZ)9iuqBjW0pYeA1I7$wx|&t zKEf|}3JFUSZNSs8@!TlgRib7*QC9u0HS9*5`oeuMP%)r2y5^P$sSy684GhoolEG=V zfeL&$NQNEc#=RB>mAlJv2)^8W<NKmb?k@l49q3aVB$WMPOM>>s2AOV9?srOt3B5v- zA85qfFNI+wkxS0Hk2(|OA9AQSD+k51quBM%83BNJcFmWmoS>nCz2l=g0X_h8+e*8~ zaDy;IqQBM(p!pK=lE+g*l*|^8n)L!9NvEuc>;oOAi8pqHXGDMjmDg-e$n;@hdQ|R$ zA)ElcotSlC>x5GBJY^av)Z7jv18n2kZnLf3n1J01%xVSYaMW6Sa08TM0_3Jj_-NG{ zn$?SM7I#ydwuODG0%^3Q@@dv?t$JDmGe1-RuxGfh0__S>G9*j$ssscagN8-<0VgnS zh{o)#DkYH-5TG%aa`#AGP2(ki(4x0)YV{~wW&n!wR6I;Wd9+`G5w|Eg&{RUQ<bXh< z$jN2CkSsMI@EXM%FO<qcicFo%SI16<C%*x`qF$PzuU5+Bmt_O`okVlQt`Zle9<l?) zn=NF`=9$N?+Am2E$$_2vrm&Mlb`HlWFF+$X6jm5L3!kzXs9*)TGYSvQ5S1@v(!e}N zTLE*e&a%RgEdrg(ga2-H3e>s<0hZeNR4Iny5=MLp`mGMN;o!B-MLhKXa|~wzFKyiC z-2W_Rt&i&UZ%<DAgdj0ZiG7N~m5Pt{FOJ@hmBRR^-Tx?+YFE-LhhWtnwj_bZr{?SC z9&8+9?*jVLRuXK$sH;a;F3|gPYho5A#fDt`dAoD#_?9dXW~*znwbxDO1Zwb0X?n0y zIm8GeI~5*F&uPoQ&vNN~5p{p0&yGNR+Rvs-E^&k2h4!)<Bi59A$aHidcyh#IW!~e) ztlX+i)|39rAvH0m<FdhZZ}n)zE|O#FbMt3k#ywkc-`~EcM`Kplm@eEe`?pI8#Gb8+ zOS0idu|4}Y*<BXn@pD|R!~=@*FgLUDtfkaDx;v9+ob6cipAfgIz&eP7IrE;J<wi8s z$3)FPf#o2FMxw)FBp#nPuN_|H+}zxk%dzR5BNy!bV_Qgp6vBroxm?anYVm4r{l<O@ zs?^i9Hn@mz-RIAuRO4tCW1?iH>jH?YK_CY$`#PlVI(pid`U%2V-&n|$a?jv>ks(#j z;^EFTwo**Wy?1AJu4Q9(kZ`DHE*IrC)DpTK(sLtcx8CvTYIuwL6^USH-8z(c6C0au zuDBvnbUfhbHpG1fZg5IkX{~;C<QKVa6Dn&rwJ5=<M@;#P>0#@;fCG^!<86=dfE!IO zM+m!j9Sgm;mX8#F7_OxYBc(8@J8-+q$pbfU=I{pfwzV&+hOdHN^iQf8rOrmWr=DL$ zJP?*IU$ju&9;TZUMqj)>?V3CoeQl<fcG5?ONVa#X8izpxjaW6G+Rbvkzc^p}R&No8 zF>Y{aZDT%R=jW8k=TZwM(`y_(G;n$0@cEp;g#;}*e<ilK3NeqS2ycalj+ZrBQ}WM3 zj>PeS1pB96A7uR)G5h)N_Cq;pfz`c4j&9|Uok(h!a$NKXL`-e}WK#E&=cI~mutpw0 zP<XZUy)+BKUw$Dhxw=T8^!swesagOT4^Sw<YNM@J4@==as-};K&}F0Z3l^$Xd{FoI zMiE-fh9KM6UUhz5;&?7?9dFa6OfCK>X_Z#p(%^T^0jCB-pQ36=YZe<ftk4))n+NW9 zTGDutyt}&xP3CTZDK&e!ZWA%jq<i7af;dM)l~U#SN=LW0iZfh{;C-os1$Ye{_zonw zJEQo`rb@h8U+K$-_V?}H`1W{M6Nvle=`#4`S7I@~-_FGLx;m#8!zCHbWaM@6(^9#~ zyvXuVw;)DDKX9%P)Hs@JV1p!Jp5wHCCe46=gREO;U0&H-Sj0awu>b>{v$rAcgB;4q z&GOvG$|lbqc6fsi90O(at%xs_88aOi@zj0Wgg}7aT`^HVvW7eTF>WR7zj6u8r<{q= z(!0C1mom57F~si(Al2Z&!eh&H0F3_iu*tlQQjE4P-9W+WR7k7jQdk>s7ZyBv^5MH= ztv6S8yQAyKY>K4?xNK{9Ab-yNr~6sVjr|n%13SJr8F%|p;F5KMu9e9@{!N4W)eR<4 zRf{NV^630Gns&m28QEePZ2oa1(Qnyc&M49N57=9Jz$Z?Kn5`(_YWVTs#3#K=8$R72 zDJU!<0-zex4%vfQs(-tnd;&bPE5e)NPzk<S;9w_MRsbc%?w`d!J-G^TZBJBl-HnPT zpC>Hht*np+V`(OeQ}FRMX^G6j_@U%Ghejs7I=9BDCbVeaB^WG|*tf01XnN;?j#KAa zRms3?p|@}@GXO%%zHaYJ+$>R}d3mT!8FWn16wie+yI5>$e8=>zAqn(|M{xbMM5v}X z7Oc>!{cuXw?BsiN)9+!Gk8LStJjEK-S*=}y$p@D?eXy8pv&OVy?Z>XkjMI*z4%1xy zIjSVvH6=xND&Ls20#DS1Yd=R0@d+D*c6lN{rJJ+;P=Cn%Flw3vg>NcU!xG+>|D%V= z!BN616b~K2G2jRFv34wafNqy{rJ1F*k;K2z-qjTs;_1nLv60F!bhlTp>?-d;dlF<! z<!Ac3w-1R%J8IDLX$|7d7>spqAd`;2nplrqCwl@yBE8Hiq5eHIX@(q9(a4+gJLQFE zHpe8RvkNdZ=pV|`T&eE0#Qr8<*`@niAK02yjX5H<@I>w2lz>w|yMqfP;oX1cY>^M* zbC+I6P&gcd1qIiht$%nAW8Cp(A-#E8g!{J2ijt@qaB0MJy%%`=vYq6};cQZ*_Ct*J zhH;RNsu`l7d4hEtmQYrF6TJ1_voM^;WPRfC&chd>9!c}VKK(jI36q6<>nVFlrl!Zk za@2a0H!I}ovfpN<e;f{1IwzMurJxOXs$m;jPKEmu&+M_Wxxb-95QmSSx9fdR7Y_dr z9~X}MKK@Ps5S+WTPe$Zx%Fo}Y*FT`SVhBLENnuW;G~6`WDYOt8j=M<74rd5A%9x{n ndc3!Dpp&JOupg;Wpalcg>8bqpRc@!@Bmhm-dv~i;?4SG(1o9g6 literal 0 HcmV?d00001 diff --git a/resources/icons/android-chrome-36x36.png b/resources/icons/android-chrome-36x36.png index fae7332cd8a046a5e9c988b840dd68a5f09ec0c6..04f3b6cad4ae76f45d4fe64124bb88694041f307 100644 GIT binary patch delta 1290 zcmX9+2~bm46n#Gn0cjMa0TQ-qt(}Z44P%y)gf(F?hyp=CHo=M_l!8H!sAQ%UVU&zg z5CK^<prvS78WqqgXn|HOYXzkO#i9j7BFGZ*6G&g;%>8%HJNMo5&%OV*6Ut04cu0_? zJpn>~Kw=t-;h<O!lX*)AJRn{IY!*wwW;f{ofQ%uyD3+@OU&AWA#$YHkI4+8CG=@gC zfrLDhsZe9sI^d%hgaNo}3>N|o?&HxF#j@d14cyeg6_r4Q7zzf!U_jm5boy;5gu=33 zLf@=3;=RXvqd?yYnIU432Ir~+`jQ%Ez(EnV#&8qPpus?_*MynHf`)DxvI5S-V%>%~ z(y<bfI<OtZNH`BS#zZ+*%n*2}-nG9Du;D0y&Oa>!Hx<+c93|dciT7H-d30|G6VR?h z-N(eRJ<c@{L~O5Gz`5VFNSw!ep}<Y=2E%@3BGA7Z$DSeZUz-Tv-1E>n)?f%>Pe2Cl z4B`B1BG6*l5*=Vn80)E5#sav^kD*53s^RBg!`<jNf#IxRxeC(ZYDyZ1(Ntxf&ZRd( z)8#f9ZuG`Qta}YP4bF6hBC4W@7I7X+IQOd*k&JS5=#$_<Vn{VPt=#%pltaY|hMP<+ ztgt?oL@i387Jf@D%#+xpcLD(N(t`s-z+n5D@fu|p1^Lv9yx&BlP4@lu&7=P`sPL?* zDxYyq>NoaP?5Lvy+VXtpPUt?j1^Vo}s~VIgJD=%88gX*IFMbi9b^KXo;$m>p(q7)$ zvQc-7wz!8tJRNUq$1EzmAQ!D{i_-cPIIYrFb5iH|C8<2gYTVq-&Kva|{^nisu6uXe zT4NqI|DNP{0-7>O^@|VzfSBnY1lMtB761&>pXVuLJ(WIFg;6}s2y+N^fJn!DZ-ggB z?l>ar+C;yu8awg+zUpXfdy2S0awy^a0#`YHveZ81(s1wW0aZqE-iSBi{lilqew=l7 zoWwZ4h0knVx8-DpeA>E*KndY&xGZiXx5)V_p!nyvC%e4cMT8}1q`p>a8D6?Iccaxc z@Yc4x4yhYFjPH9Y{R{g!dEAm}+87`$#s>BqHI-5J+l?!~*nf{=ix;=}m-O?TuGDuO zowaefY)LA6VoM&GYT}H$M+zABA84B;7fH3!&C_z1x%}q7Y~Mu}^NAmYcM`^S<ZeyW zM*HNCTw?a23rQKMbZdNe{gciQy+2PUE1N@m!rye9!CWg@r;f-Ql6T)YFgp4rN%6q= zV)LDO(KZ!QvbuvBAjqQ0c16~d_NwuxN{hU@h3kTnBG*rGPS%*Ng!g-0+gMR4;ZH`$ z%%hLDonP$p9KY~KIa2&qW@TnsT9?yTIWhHOcls6E{ye8mA?d=<W^CMm@AYW4<BNoS zpnz(Jm&FZFZISsoSOncgYd;fC^+qkf6jB#g!!nc&`KaCF+?2_^^5IiUxmH<^a(fuH z<pYftofnZR>6uoe`|F<{EZ<ox=~kPzgwD(jAx=TT{(+;o<+^@;&^8`cR<m}4)%s_J z_@I*X-8mO~BtLLxDlsOkI;Q^b>|f?`Xg*4xcJtT#k->T;Etc!~Ks=x=2u{qpy4(Ip z0XO#Lbdfg5H<nx$Q+#)QbOW)ARyk>3t=(kSta*1D{##*UVR(9QTxMYu_M86!z<5M5 delta 802 zcmbQmeSm#}Lp{Ul0G|+7pUgrAa>4(*Af112GngANe7MNqYQymMECW9;!|$669PA9A zFEebN%kcdggPat@{7#0Ws~L3E7?_zD`l=aJ6&TLfZ(-QClwre6hPwwC?9CXi>|i*% ziNVK-A;gm*J(8gyfgvZB;rR)M_#lSXVumGs424My2SwuDffkCC1o;IsaEQ)Siex@} z<Jg;@E=#h~m;Lg1yN+4$6i}YCz$3Dlfq_vPgc*Ck`#oh~V3PK9aSX9I-5c_<YOw*2 zN_b=aowr#B8g_EJdz`qqW%v94DcNTNXFa*S_FuxxiK_kXK~oxiuSb8q{`z&y-F3@P z1y|2}$xxO!sl|HZg>?P?8RonOm*-42h+C?*K=-}EV$On7N8dlT>-y%-cvd&TNGj== z)}|(&|8E>-6@TN^GFtJN(e3cTWj`7kXR_WD+ahNg^zmT*PwRJY=6>d15qpeN=bVns zjH5poC$nvKN&BoW(fFvW&HQA4Thp(Yv;z?dW%s6XWther&pEPb^BFavhjT?!64e~6 ziWc*?9`2a&xzt^`UGE;Z+FSP03YU8azMec15~;kj`0cKbM@8pLUtIf5ukh_dA5F7U zVwTg7&)?fnYqg?7%c6e%w&y1U+QTC>U-ik~Zti6IX06txEXHws`t9Qh%e6jl&^)>J zduPusHD^8Mnfd+?V<J^VJOe_iwuy9!bibWCk;Qe2PE|m!@%nx01$RELUv@jsD`5J% zr>zqc1%5wT>v>)L-p8{y%+IAh)DGE`Y_UgDWJ#vOG2J(D4nY?tYnpi#*6ZFbJW}X( zlg%vU+WAWcO%Wnz^$xhIJo)$`l8wJ6k!|Xtxn)ZqtP<?kd~tngh)&kwNk$W_>{(JT z$=&lx)v)@0rN%!`-D<z!-ThCclYV}7%ZPqe)&Dbi`xLuh@x^j%XMb)v+d9wa#pB<N ziJ^xZ18sSFe)Sc72?+{3`1#`J!-{I+#~-FGJtyA1bJwjJ>Gpa?LA4aV!(~<KleJm% E0b?svbpQYW diff --git a/resources/icons/android-chrome-384x384.png b/resources/icons/android-chrome-384x384.png new file mode 100644 index 0000000000000000000000000000000000000000..0b514550cf6fe6f273a7071d0200e5d0da20de83 GIT binary patch literal 8694 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 B3xfav literal 0 HcmV?d00001 diff --git a/resources/icons/android-chrome-48x48.png b/resources/icons/android-chrome-48x48.png index a2dda7b48e0c7683892401ff937983ba1b6adac3..d341facb26a5d0ff8b1a664e2c77384c56e44196 100644 GIT binary patch delta 1711 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 HAs_f3yuBck delta 1045 zcmbu3`8(SO9DqNLxJr45bDGCobHvg{TXj`BI`ok^LP?)hh(38R8bM3*sIOKXF>P5? zOja|hHu6jvLc1PuMDd8TaUU~dZQN~;y4L*-d!Ofhp7+OBbhKW*fPjE{f)6DLK;g!J zD*Oa*3jv@$z%Tf`Ukvk8{vQsfK|ThGif}Lmsw!ZC0dWKDO~R}YOblW4DNvChVA5b) z0%3l@L7<EcT1Vh-5nLbu*$2*@fvhCpX2P%lCSL$67FNaJf``WiP*(!<Fu>bG$FJ~y z2;TKVVLF`F@GAcFtDhW1B15z;>b<OB*C?@nr8{i0CD8H<HYwhE=o)|$%Gc{$uus?B zi#Z5u{<vngfg0}~$JCXlsTOH?iM4hZv2^~OWs&EsD)UPB;Eq-6n;J4Q#3OnapDGoz zIO$T44=0U0vqUS^uJilhp=!?Zw1<zSH!!(^t80ROH*J@+!<LPDOC$+xx7IIMn9T;P zMpeWzLy(T;Ms`3pgD5vlPy4(>n=+4#wHZwMHe?3af(!1NycreOo-(cPc$3cV{oyl} zi_fgJb=Dmal-4B&`H89hJkfWkqua751*hl@p?~5lJfF2fn5%Tkp+=Jiwadw@12^Tx z3PWKXIxyK-vu^MhBp^!(Ig3+C8Mnj?LyfC1TX7X^RZjc9O?hSFjFLeGLfzOlM}Mi` z&o!DD;G{~wx)XMHiDa{E$5%dadzG_k<|T;T<Ob~2Y<{B|f)^$55y0p9IR1jnt3|Cg z^m!%^r0%%YER`zZ!fRz4<jRE%+p&F#@~bX><Md_qxreQz+}~lY$KhsoM{HZvf|+$* zXJ`?2`^al`^X^FImOA1jwvE?F{gGb4<v+*XIzvj@z)B2dFL3vJBPFGqSWz=A>*)Z^ z?jVLw^=$gK%T#Mvq9*yro|J)R=yVcRc3ZLodvBu!A9ItMD`z@K%rP<#@kEBh0jf8+ zK*wgQnqe7a^wNK~Eh9hZxSySL=z&C!8zS$q9FB<}_kBb}_DCUT3rW1lkVbZ(t=V`< z+A#@6TYQRXXY3^kU%a#2*Fa|15<JV>^a}UFpH$@*Q<h9j^w$*@%06%_Q>;S6*?-yZ zp#P{l?Tjxk!)D>Cq$6_<tTBIudQPK{`A70ZGEJsf^B@|nS8=(Art96O8$yhr&_~p9 zCayxOWF+7ENz<Rt;~Yn#9r;CxC4=<naXKdMO3e7{<l0B~1sA6C-?sPd2(KS5i3k*H zqTEXh{cPHlV%uNDJLzpe<XP0>(UsDG{Dpw2yq|Zfoxi5a$C_kgR<vbZ_v@`&>oReK ve~O2D1b4=G*&{S(PFS01YOum=y0=CpVOkF~_LSVu{`ST~@;!kws>1je?tRW} diff --git a/resources/icons/android-chrome-512x512.png b/resources/icons/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..726ff9980c3013caaec592f7fb918c9d6d8fda71 GIT binary patch literal 11542 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 Jmnm8X{~vp38hro& literal 0 HcmV?d00001 diff --git a/resources/icons/android-chrome-72x72.png b/resources/icons/android-chrome-72x72.png index 61011b6eaba1e61fb75598081453d3592cc09239..2400c0fdd873273068d511c9d43570d8e6b10395 100644 GIT binary patch delta 2255 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 MhNl79!_vq81y=MEivR!s delta 1468 zcmbu3`#%$U06@Q!P?u2dB`%dmPb#f6vTQW0nJ~mqqN|&E)x7f9CbZQG(-fjIOvOC6 zLTf3NVJmrEr6rWdDD%je<aYmtdp@7@`J5lm(E1+rECd;>iE{QO0-$8|pAa)7dn*8d z>*nH#ayfhMSN?xiB;cn6EWHCTOCak2`*s24RbZVuP*Vk7<f8y(3%ct8p9Po{5Pkv} z=z{qkFe(Izp+H;%3aH?)71(74OgDi*9B5*LPtO6?0Z<}A)G5#}0Hv8A#23)xK}{Zb zSq|d$XV(2%){XXX#ev06yfR|>+nT80A!?OzdxJidQR|+=fQy^}P%c3qL3)yXnmIn> zK@V)S90_!SoX9|FGrd0Wb|<gM8=<Bt2&K;3P`jP^(YcEwx6Is`q2qixwRj#8&g(`d z?w@=b$2=+Yo5J-RWs&ATlGvq7GDQjc%lP-Aet&Fa)^c%p<LlUo`VEI35&B%b%A5l7 zD>LYS7ofSYO17t06$GD24zGO&rv@XR*I~T-Gv$269?8L3`S99zOLfuhP8{-^J@=1o z8)5KdNi7E;+Xno6L@hY!U_0@e-wvB{>qY8?FxN#2R-DVJ@F>|SS?aQ{vW25e@`Nlq zw8!UY&1C{y_<fFHbIUAZe`SjImXtG}GQOywdv3l@O%UnOBzST;Lu{O`DM`%ko1>8o zJ7hAJgn?=NO8K}31~+-F%2g0JlAKmuMP`1t$7G{k+=i1}b*@SfxfnYp!7z>qn>B{& zs(Fq<Q(D`O{3r%muMCHIVfR!Y7GsI0A*wjl*>;B{{RxQCW>=$;fZNaDpP{n7I_NRI zG|?p!a}I>;VR%aVm$SnQwvdGW5PYMerhcTDn1u?x2^~vAVE*jehw^JRRwA`wrS|Xw zq`+XG5+|3HbNZYH$%!JT<jx^D{G+oeJKhVuEfI&4vRy8uZ@U*<#Jmh;JL|szF7KO1 z3Gd@J`v&yo35#9Y^UO|SX<f%6b)?XwJHkh`c(OMmx?3r2X~U!@{m?M(oABcHHj~gh zLqmz?flX>Yoa~OMa)OU&r=Pu!WlQR=g~r`8BITVi%(#VE(}8+aa#+FTDks*Mv#qs3 z^^2$7C06`h$w7jbJ&R@<-H%q;oe)B^KRy{W*vo6k2-JSG)TZ^*akY2k%+~psTFuYn zd;7_+X9ui3Qna;`)U^q>*ypUD$d-HaYzr-du4cs>4fZ*oy{@NN>^wN&6EnCarZKmH z65_W}%f{&ZL+S8i)~N5NrsH~QDp&I1#5`D~`z4G&srYxda?euK(bc-i{nsMhd91NN z9>-e#bPK|-N4-FfHf|WnkBW<FyI;6tz5nn8Sv-G(&=6j#v4<F*1#iz^*HYNPw>%w4 z9~`~%Hlqo1cR+kP(bfEi@fM<D;EI-nJ!5>oEKLVj;>PQ^yS<ZcM!9K@GDTy)2>ZBV ze5*Ux27^a$EUNpht4>tws9Pjzr<GKfp5J@VD2%-|vDfffn0KF6IJe4^d3;NIcAX=c zp75YGDm~j3!{IMfS%j<__keVj`(3X+Q?Y>Qe|z5lxjc8dx+2u6Q{_UD15Hq7Uhwrk z`c>%zWQfJ%rq%=4b<|_4%>~z`H!L<8PbxRB1Z*!*z-kDWXkiuaayqr!_P6Z5OZh?z zzV-%-_e$*zao2OJq>BrY<q>n`1`pH8Z!--XQ%4dmK7m~w8J^}(`w+^yqR-lTGc~QM zr+!8Ru1sqiBNFYej$_JZ+`7PYt3c|8gM}>0=N1mMn8(WKq*&P!acaAC`K3EI9%l8K z8Vt1*4#wk&Fag=$&dRp(pMcE;{4gEbkH@-dO=X#{j_Vh)Z<=2=3$4laYPQ7Oc+Sh* zs9Tl1Poy8P#N5N$`cyzuP>%=C)kc_}=)Fct@RidinpYreZF3AerBd<rS+&T20f;cL At^fc4 diff --git a/resources/icons/android-chrome-96x96.png b/resources/icons/android-chrome-96x96.png index 8c04515a78c5c5a0c638af42b184f06490fbb1e8..ec37f0869a92fc53b8abacb752dc4ee709b0c5ab 100644 GIT binary patch delta 2717 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 B_jv#S delta 1892 zcmbu(`9Bl>1HkcjTW&@X?UQ3P$4ca?t%x!#e6&w)V#H{UM5tVIKZI${T!n;2STc7$ zwKT*cS5l)|e9W0+eB}Cm{)g}Dr{|9^hHQcq^)h)40La>bA)e?706-ny+Rn_H6#O6m z&-OXsAQbF=0d9C81q0%uVDb%+KMKN#V5S>5S^@qD(AEII$O8a-9voK$TjSta7Dx;M zk5a%;6JXVVm_U#d2hcj8HV?2HKwB9YZwIo{;0hK{qrgo9@O1_+i@;V$|CRq{Wkavp z*n+CzE|(4S9VsYB->W}!$tH1L2_u-_VbK79pz~$yMY|i5Y!_a5^*NdFYL_a90Sp;; zlsKqTD$9T^?_YP+r5-#i_@ypvQ=6ECjQqWUt+7u_=1z8S7SksM6Po|3`to>_^>*ya zN4jwdEJuan^GXTrjpn7E>DHgM=?r7dM{b+ZN*{*r^LdL^t!%q!?!9AfY@?<1$Cw{s zy4N@8#evioE9;ww0~FHiyPvKc@*+n>x{0wXV*ByKC^>QwE!<qcrq1*Zs^UR=c5e;G zgtHv<bG3c6A>QFUll9|O-TFWOQr5<Nn;||?;>^=%mYPS&_7}Yv&yD&Idt~~$ebG(H zC$G40J6iHT3&$f;$?xI|_h@At0hh>>2F~(?^Unjmi}{ZZDGa`BwshOf^d-|GSL;Y6 z)9yZ>yE<PB=&TIY<FzNIQhV9@3}*HtY4^easfhLW8_UY`JIo;h#!_O4Ua>{URrlEX z3T7toewi=cX@4CQxr(BE+;a^r%dQ%!ggU%~@h(2$8TZ6&+z9m0kihL@gWRZnBDH+N z!&c*#6B50G;*z$R-E8U(`49_j=@oL}Tg|MGUR<2YcHHKzPw%B0lb;DwPaU~M5?%>} zF0OHDyGrUNiczzYX@*TrW&3KsU>U1O40RuSM3|@TW#TwZYM`Mc(5}&oCjQBC!rnns zs7q5s|564dB}(B;s!eGuBBroyfv6@7XvQWF(n_gn;?VMRV+47Vpw?3R^MZsf>Vbxs zk?^usn3=NbdMvhc4suE)HSUSK`t9$zT4Y8BOtD7@&Ixgey-;Z?r}1*o$jF0`JV_Nu z@s1u73YWUr7jVl$lHNCF_Br)T_z#&1`<{YIJ2#2H_-*!nIBiqEa>5|iipwoj#HXsx zp<LrNk1#{=z2w%0GNFL#UHET*IZF-7+X%n%Z`TyzyaUs3dMu;g{J9u>8hPfaNcyt8 zkkHb_yp*kuAc5c|pYDFd)a6nUfoiK-weX`1>cJ#~Go$xkqFFT<WWMODei@u_Mfl9< zH?6!Oo$QGtX4^Q#@w;g}Q-NRiJ?txO_v8I3R6~&$;&;fM*m<g>7|OGFrBTlFyy!<9 z+;vq664xyYYkJKqJIoTEZGz<ET67WiEXvM3q|^NQhfH;d>Vniawx0I4xCm%SE{iuu zEy<9bo|kercb^fteGtow@aRG2jK(A>>B8Z$w?@rliaR}5ud({fW#kgF)1okptBjT| z2pa~-4l5Bfu`m}>qv359MVCr64N2`Rj(_)zZ*IMp{a`X~$~)3{FzvJ1`;jLG2un$^ zd_LoR+h`;iDOXEHC3a~NEMc*DE{BP$hDjxzy>iqvABt4@k$y8!D9I-tKJJh4(^Ij` zeJ+=KE!|gMsZ_<-Cr49fIQ~+IQBtmbTQOP3wxE3aD$~{-tNtorH#M=MPUghjQ^Gsv zv|I;FlEfF#uD@kI54t^0pnIq%&3AnKK2-ANBi+z|dCTZS?8QRKn+5*$1q;Fgiln^z z&<uTVpHQ!+oi4SE%MRi%lx-E)b)t1(zgALC9uvHPoGxZ~$9EbAdRkdHs6FrM5<p3i zSM;*(Vsr@`PIxzXBLs1Ju6Ji#S;Wv<L8AGnzK8dWywk}O#MTMiRf~kD8N}Y@Eu^(V zOCmS44j0ombVqA70ZQQYRv#MeuUJ+U=t(vsRmQ@czE0X5K@e4QY??y~D4KrNC2fNu z<A<w9wNF9}9Dg=-*>U_Isn9#p`6^@<cI$c={9cxBc=uUpyz-KjXt0+yUUF5{6k@t{ zNuF`Iu7gIu@m-GVW<8M~<|5Jp&%zZc=LL@5%`q^|iqd<^KUYyTl^Y~A{GlMkG;;;v z?`<dZa=_pz&PpQLz0|1vZ$UGuG#9^G<%Rbye}9tM;Wzoz>1-$FG^VmNNvFu=l@d3e z^XA5MNf`uhghSyLr>2PO9I15nasS)l#ogd{v6tSiCDYZUe^<=JK0#lnRm=+>&-+2` z>DXPM&MK?w6YaD^`-!_h^V8rXL>d(B$JEpG!9Vm!b4vG5|Dzp^Y0<@eBGs>yn+Fbf z>r>1rJbEZXK2M8B&#BLBc8)0bBvsD|w9?#+mKc;u?&R0k=QL0(j>qoE>q4d0V;}aA z6T6Lfp1D-A&6naI2!`)iK--sN^nY!a7$KT#_}^Lk{|-yb-;d#Q3xdddYf91n<@OZz KKtMK2H0XbD8f^Ih diff --git a/resources/icons/apple-touch-icon-114x114.png b/resources/icons/apple-touch-icon-114x114.png deleted file mode 100644 index f82aacb80fb651b0132fe741078f7810fb726f76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2088 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 SLN%2D0000<MNUMnLSTa2kj=3G diff --git a/resources/icons/apple-touch-icon-120x120.png b/resources/icons/apple-touch-icon-120x120.png deleted file mode 100644 index 940cfeab0c179353a2c69b6dcdd8144a6b9636af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2208 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 diff --git a/resources/icons/apple-touch-icon-144x144.png b/resources/icons/apple-touch-icon-144x144.png deleted file mode 100644 index 0783d5aca838ca202adfb44a1761c52d539c7061..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2506 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 Ubn-$ql>h($07*qoM6N<$f?~Fm1poj5 diff --git a/resources/icons/apple-touch-icon-152x152.png b/resources/icons/apple-touch-icon-152x152.png deleted file mode 100644 index ab93b214831d02246e9756c39bceaebef926cced..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2692 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 diff --git a/resources/icons/apple-touch-icon-180x180.png b/resources/icons/apple-touch-icon-180x180.png deleted file mode 100644 index 0d1fbd55b89033b459916cc2ebe5fd10a7b3fe8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3285 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 T@<KJ000000NkvXXu0mjfP?toS diff --git a/resources/icons/apple-touch-icon-57x57.png b/resources/icons/apple-touch-icon-57x57.png deleted file mode 100644 index 388a27377b95c8b2b924fa63bf5aede01c8d32ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1201 zcmV;i1Wx;jP)<h;3K|Lk000e1NJLTq0021v0021%0{{R3yT)_300004XF*Lt006O% z3;baP00001b5ch_0Itp)=>Px#u24)=MF0Q*QAPkLA^=H00QlDc{MrBz4FLb$0RR90 z{@eik{QM0K4FduI1q1-}(*PM68CzRhWmo_o8vyIe0Fr(HG%WzKngE@M05UQ%8WsSV zgaCkU04yvl#l^+WvjD}b0C8df-@yQ&ivYo=0IHJ!@z4OFp`p^!(%;|T`uh6Vy8wlS zg^70ngmM5UCnx8~0BUM#ySux%xVXW=!T0y~d1(M=XJ@*h09H!?HZcx2^oU*n00TZr zL_t(Y$K96Mda5uGfCosJMi3MzShOncxLZBv^!=agBw>*tE?+M@H%iFQOlHf#+fN04 z0hyjRot|rf<@P$8bNVXT`s!Fv6|3{rdVx$Ad$HTrwQ+yjA8WcT9`}p%8F?P?eP%bD zV<GdfYYO)Cki7imd-RCp%sl5wr1SOT<vzLM3eA}Ez3V{J+kAIh*Mc>FrZLysTiqj< zE`Z?+74M3N-Xs1o-vDrz&E%4MbjuKD9@NE~A+jC!^0J9sxnNJSZ#RgrWnzQ7x+O0? z01gg6pjkeK90eF$Zb<Ic9pco4dty!zxxvRedFBQ&9Nq^xIz*-coK-R%fa#-OHT8QW z<hyDx-(kWaRmcTEjHozgC*n$XiklE)fJK#T?LntFQ;h36oOHU%+6<`<`&Nbg0*H{P zanwW(5;aC1#R%Y3Av<6av8H5>Oj$LXc-)8yohzAI(7kSI=l+o7hq5L<*99vrNgk3A z*X8-P(rjCLNLHt}Ezi5g5a6>UH(<{($lr~S(3#MG;N(H*nNfnH{B3}98#X1`0Uc4x zjg+d`@Z09;hC?v^F|opOvo%CLJE$ak*+OP)R@Rgz3I9nFO0(k5&6O&8CF#N#Y3_t6 zE7}NQ$Vl<Prn##aj=?QS3;H;Rf~4j4QV1<baIg<nN!qYQzf5f7Pv|3Y3W%T|{xQl@ z@No-vqt4t<T7bfAhJmJ5tg5qm&LSN~nayNWTUXCn^=&40NQ6SJmV|coMa{R>cxDm{ zjWm+6jg>l3<EiA3kiJBwFqOak%9~maDS0chK}MgwgD!(h$JbZ2yj5!jGzpTpuo|fb zcWR|ppNS+L5kgajl_uBvbd>tcdIBwaf;Z%vNM_<#{9WtUo)D`&f%hS=(udjsV@Vdr zcEVUthBOp?XwZ7p`;3Ee^G}8(sP(?4etRpPkB6InD|<YB+T*El)8pUXj<4J+{f2wx z>0RdW<`OmDWl!!;jo+V9^Zl9K*}MC9wn*RRJNr5(&`E7hnDC@JJeU)>!M(e)N$_ws z;chxs=OJgFHzOzZp3Fm!X0XBeXLH}+`P?Vc|8z5Jo?0)@x1W{y_A~vpbNnmv9|~J( z0APebbpQYWS9(-fbW&k=AaHVTW@&6?Aar?fWguyAbYlPjc%0+%3<z;nC@9KL%gjmT zQUC)Z3oc^|6C)E#lN19JAVh#P!(;;^vs56<*wo0x%)}hT2g`s+ph_+P>K74o@<KJ0 P00000NkvXXu0mjf+UPHY diff --git a/resources/icons/apple-touch-icon-60x60.png b/resources/icons/apple-touch-icon-60x60.png deleted file mode 100644 index a09734c0165e9c03bf2811080732da3da11dd49b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1287 zcmV+i1^D`jP)<h;3K|Lk000e1NJLTq002Ay002A)0{{R34I(K(00004XF*Lt006O% z3;baP00001b5ch_0Itp)=>Px#u~1A@MF0Q*^wa?S+W_y+00aX8{@eguPyqkk0RR90 z``G{-7y$Cp05~xKCLsWQYyc7x5>-k7VN?JgA0L8o0QuJd5)S}BHvq@104^v1adB}u zIXU3M0JXKX2?zk4hyc*g(2#uqxSs%LSpWzK2t+#ovzq{FYHF;N0LseB_xJaQbpYGj z+jL|Aq>cdCy8xM)nL<KB!KVNs9RM;iGT7MI=g9#6{{F<o#4au_&awd9+}suyeFp#l z1CdEYK~zY`<yYC3nm`aO)*3)i5OKv_$6d!!XD0vuVX1Bw=~f(*oV+CUBGP?NSKV6r z0xy4H@Na=n`}rZL>UuRe%=f2X0T0>%2o|&l&w($!PJ*zbn(x;lJNeh?UA_k|-q}{y z8#$PoGupTuzW4^boa+F(-$copK6~F@J_4UU=>)&awrjJxIjvNtW__ly|6P-oKG)^o zMU@<8r#k&eztW{geHOzTIbZ!K1NSBXCT(-P21wSZv-dTCN$)=RgRpfv;njvaX1~&s zN9d1x;1l^gL{xkzv9W?UB+u8k;N?3%SF1p&RnGkE&*cqxPVo}91rMx6yi?q58NATJ zbx^6mL#u@7xS%gY@P(XyLloj|SuDSn;LDgYMzwYkz&)xB;#qVuDK0S(;+(3bCxAPk zchM1Z)JVW$&TR*~I&_NQ0YBK2A`BTelwQ_(aDxK44bVhKt}9;SUAfjAY-WTf-~e32 zzRWG}t)~38kLW^h1)l&s#3)_$c7Dtswg#fH<&Uwy%Yup!HvsD#yayPemi5sYRgJgC zih>ST%vDdbjC0mw4vql!Ihd-;!C6)aJiFG`g$)C5;5ZDeV$Nph0L*jn0c^y2y0+pZ zV`z+qDxx|Z8R?5vwgJ(GLk<pL%5#6^n4d2ETzNMcJwXnxLJe`6EFG`AMYHgj?3l9d zsOI1aE0L@xYQwJ(!?1``EwsLdwJRw;Ozwjjp{;R$rzS2~sP6jXR$-(`;G)~PxlRIB zTxmgaTOcee!(GTSMlA27vXuxEQk7WTWKkOi%TY5HmZVe(MUwU{^Vxb$er9@cNh%Vt zJejfjpfis)XWc6Hj9i}77@KQju%<OQh9aqR)>Kd6OK1$aCC40VoGI4$oIH<9TT&hd z8h6^@{F@xCYIznEc^D*PDCfJiBWJCzbR@8Jbz6loWQt=*9)R)IFpRY1Dh5r2_`v{V zqt_Hhuc>Ua$E{)(^K?6UFC9Mg$At>Z4~rW&L;ts~n<zx>2>L+2=!o#z6BnIv@1o;Z zER9etdT`BYWmoLWI=S4#ap~nACYSq<d$M9N;b)i03gX!)l@*DgsWIVFzawar$ATu6 zQg63XYT8$rlsZ0=QWQ7SjwT<z&TPd+oWGhmxrlrJ@lZatnM^cq<)it%d}OY3&FgLi z;mRj=XYhpHE|biEU96|n@y~?GgnuTi|Bp|jr|c&ntaWf(;Bk-u0038dR9JLUVRs;K za&Km7Y-J#Hd2nSQX>fF7004NL<MIp$aaJfO%1_J8N##-i10xGAV+#`_6HAj60}~)b xfHcEo10%CkAj{a)$i&RV9K;99fJmT9E&%Em5p?oGHI)DW002ovPDHLkV1hg6M@Rqw diff --git a/resources/icons/apple-touch-icon-72x72.png b/resources/icons/apple-touch-icon-72x72.png deleted file mode 100644 index 34b31aff47aae62de233ef2f3fedac1b8e4120bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1496 zcmV;}1t<E6P)<h;3K|Lk000e1NJLTq002k;002k`0{{R3VlzW^00004XF*Lt006O% z3;baP00001b5ch_0Itp)=>Px#x=>71MF0Q*3=04q835Y70RG(o1OovT5&-}I|Nq?p z{o4T5xB&b6`#3l_I57ZNOaORj0O7*`fp7q3SO7FF0FiwFsF48l(*QCuGThwU2L}fc z5fS>?0Lrfb#;gFgod8}^03jhEigy69v9Yd~0O`p9b7KI`vH+lp07X0iD<uGJZEc*K zoV=m{rKP3t@bH3yg2BPTPDB8ig#gFL$E~fcJ~jX(BqV)(eT9XEUS3{XTU*V|&C1Hk z5f2D4`G=(d00db{L_t(o!|hmWccL&5MMTR}KoC$+RD89ywf5ca{{P>#lL=r*pkmvP zJLhy|NpdrDGc%b%y80!N{sa9C=ze+l4Cj;acrp(^56k=S0Yz_NPpU{Se2XpxGVV;N zR?Iu&0wCjdPM668cQn-<N1u+|flS}M-WqLz{)D)~^1Et9y1s`4;ZrLh;|BQ{awt^v zA>pleW1I(yOoVZ8ouY5;!OpUF1AD70_{tfgQqeh}hY3vcHe`u58}wP8`{_(0?-OF+ z<l$?e<rpT}F-#8@vUq0lB7mWI4UgmJuYjI`fzFI*^VqLH{{AD;YSsbspPPXmK%YJ_ ztLsUPVv$owV4v|r6Ho;F^vSeQNBTlKBeE4BO`>`r1Kg)W^jSz}#Dz&4*eo<^fr$SQ ze%8`iSreY%_ofc$FA#0R1XpSy3z%pF;ZGtEG0cN=A8|{LHp-EE4LrpjYg`F*3!@2; z$n#8HTy=QHb)X4sxaEP2S4kRz{|M(k#mG>mf){{4LA1OY9MByY44Xd+Y>Y50w2?6I z2x@{#cN~z33I(D+`&1**CHeuXWLAM980pq}(3)~o;}bq)75IrNKyP3)7*G?Z0}3># ziC{1qC_PkwLfl|>np8r*P@oraMB1yWU)n~2?t5t2Y1^)n<x6D>lrMkDlx{gG1#f{f zx@UlvxIihXz6LYZ%>dIXB^w_H8+ff=mvk$*!IA+wAQyTiDq+pa1?UxdUV#g)9Ti>S z6hk^1@y-B!;@a)WGF$=c0$;|oyOG_1!ayD`r)?4Sg8>RLcx=Y9LKH24_3)3Pl<!L0 zYz$440fPH*%5ZJ7H;|^$zmwREYe4AC8K4Q;yDKJSs;a3C0s~nwZ-=~27@#pmxmAYt zaj_4GSyc>TU9evq%LHLzRv0$}QKC{miA&YsCr<qIx|#t5AkMT?A>&O8b*5fV7#2<A z$Ue!iJS=5c8;2a(-0`3Ctfu7L0AWXASUi5-Aqx&-!jKZj1WAi6eq3}&K16c51Io1P zQoe(0Zh{yhe9+RkcW9PfbvngUHDAeM(B^3*t=<#)$)}hw5UE?)Dn%nIX+%hDfJ3hj zRojsNC3(Om>}^$(*hs4Ns;M?BjvXns3NOgcq}qs5x2SA~IQcy^%8~YGlD~Kz^;{D2 zN}MYx2Y{q0e(%h6RCht{Rtl32!3C7nuIfZ}7i4i|vrgBasZL35$5ChOnGx3Nu52tK zrhE~RGPqXNIlx;Isiuf%ENdDhYb<NZLTk~s&|23QS{IjoSySmpi&2uu{5HjC(p-$T zE{}=R>tB?|S65G@U{6RDZT+ZVZ`DF<Nvvd~g;=(1YW%vU#&6lw6m3?531pvE)RNP^ zM(>jrZC2j+NqOU^vW=g5QR7EiQLKfA`VU)C(j3!P-Q$~M{j%m5+x6F9Y1e=60|I6J zVDg_d%tQ2zZzK4T<^98?A6d+g_wRmW`Ts@h*Ma^4Df5u3r;rd|00012dQ@0+Qek%> zaB^>EX>4U6ba`-PAZc)PV*mhnoa6Eg2ys>@D9TUE%t_@^00ScnE@KN5BNI!L6ay0= yM1VBIWCJ6!R3OXP)X2ol#2my2%YaCrN-hBE7ZG&wLN%2D0000<MNUMnLSTZu6`Lmj diff --git a/resources/icons/apple-touch-icon-76x76.png b/resources/icons/apple-touch-icon-76x76.png deleted file mode 100644 index c27a9c97a66ddde9b6cb113bbb0eb9e12188c7ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1500 zcmV<21ta>2P)<h;3K|Lk000e1NJLTq002w?002w~0{{R3@JXQ=00004XF*Lt006O% z3;baP00001b5ch_0Itp)=>Px#u~1A@MF0Q*v6=u%KmZU90RG$n1OxyI2>}29|Nq?p z{o4Qy4Grte04yc|yP^OZ7XY4#0F#rGnS}uE&HzzH0F;0LsF465901n20D^G<aBy%k zGBUBTv3hC%jClaXs{jQB1x7|j&9VSbPfs~90C8df@zDV1$N>4+0J*ujhI9bm!2sLa z+sDVpbYuYd`1nIQ0H2?qJ3Bk=?d|*f`z9tP85tSU($d4J0LQEVWmo`SQ2<)F0cijL z1ZGJ@K~z}7?O17>nlKO!XTb|a1QcBFYgbp@i*En_59>_AohWGc+4e){i;=*a%*;DS zLVkRqkpE!+G}!CDJDk3~H%R0CZ944kU+)Hc=}sG@D2-|N<sPu@d_qJrnQw0e3r6v` zu6%F?Qd=502ic9Eje=XiKF;(by>C4ld3m(@8iU){1$!P+1zSDa;KlB>sItT7T3}C9 z!<J;SuQ#658}G(F$=k38=77SDo@#&v=t0GyP-+w|wAA$4B8*fD=P2mepc3qaD#~m8 zrs=z!FI~ThQ)?N)PZeNYd})X4H<!AQ8u}7VY3^{x-K$_Hd|N^VErnbX#lpoTT<dfN zEP&;d2)8AZYa*kr5iB<eE`mLQ?RCVOb;xz;%n%Ls)_A%A_6(fRP{+1Tszh(2rl82^ zSqwIWmv)Gyk!sNpZ3ly)5bOg;Ap^Z;I;kT%XljCKCm$j(h(`tZ)hydfZZj$Sqyt`9 zgA>jIumI*A-~{K#v0<VZW6r0*5C?t(9t^DC0wsH#KFc`7m)wj6ib9-@IIt~Df+uaB ztNj?P&$Aa49l-Cl3^r#Q<CiCk7;M2$9oW|9C9oH8We=<`@T41qxdM+isnsSgMKB0( z9Rk=FF^VNNQ^Y<W45Ot1pMXuNZPaY_PPRvybc|-UpNu@NN^LnWfW0=TZ=&o2do@nJ znPHMpXUQt#m7OgFk!(SPzUIO9@EmGKSa4ySp9xLirbNfBfoZ5Y$A(a4;Afu)>oPlM z4x=ecH6E}UIaE!g=TS1~bF1KLH!&JXV_b&Xk=j^W#l^#TT<RemhT1QWLV>KZ7op0? zNwkyH{=gY8i<GpqsfHcVL1Y_d`ZS9<k8*RG2YaK+Nclj?!4-c|GCd_~fVVu@J0XL7 zTsDpClJTTRBkDa5)}Tvdd12?7#jO-JYI?g|PC<nlc`z_&yU2h2co;lV7i5Ct_26*S zi!sm!KU~{cLQvUnXAOtl_T>(r?YNzlZI%-!1#?8x0-Ke+N%9m=B^1mHyg8)_)#Km& zR9PsXxm5L&e?h>ras;FyYBC4>WDYR7Y%7WYE;i%H+fXdi(>*rWECgw|9GhI$U@5{j zlju3d<XE*hlX6*u%V(4rYeriY9V4-^xh`h!2g-qBKI1bj)E+O!!kR(cP5jTx*DqnF zMWbn@8W1In7$@vx5>?g!L3NtNW{OLxk{EDSS)BxRQ+HTkCgl2L;c4lWbyHZ;`!=xE zOUS1IJyg42r=lmlhE=G)V7FuX59krOwR(-T3o4LY3-d1VL#<{Pbg@6X*w<d^&$7-@ zsfDFr=Xku-Io{FJ`WJiJo4ReKs@wk3a{zdBa_b3Y`%P!3<Wz@YWFIb^>JIc&=U1QV zYM(bTE+(hjPQnkRlkm^{NqAf5jDAkKx<5aoXSWBA@b<vD>Gl9OH)VQp_Zq$UUgP|6 z=Z(uUzHwQmH!kPkFWv>QTdFyCOEtgmmg<Y|&;DOvegoKVqC26cq)@`j00012dQ@0+ zQek%>aB^>EX>4U6ba`-PAZc)PV*mhnoa6Eg2ys>@D9TUE%t_@^00ScnE@KN5BNI!L z6ay0=M1VBIWCJ6!R3OXP)X2ol#2my2%YaCrN-hBE7ZG&wLN%2D0000<MNUMnLSTZv CFsd5> diff --git a/resources/icons/apple-touch-icon-precomposed.png b/resources/icons/apple-touch-icon-precomposed.png deleted file mode 100644 index 05630ac0114236c93a3f0dda5b5dabe293dd5616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3521 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 diff --git a/resources/icons/apple-touch-icon.png b/resources/icons/apple-touch-icon.png index 0d1fbd55b89033b459916cc2ebe5fd10a7b3fe8a..5f75530acb8b46ef53b703d14f378f47c9c26d7b 100644 GIT binary patch delta 3722 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 delta 3145 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 diff --git a/resources/icons/browserconfig.xml b/resources/icons/browserconfig.xml index 81ec113f55..a47e5a5b85 100644 --- a/resources/icons/browserconfig.xml +++ b/resources/icons/browserconfig.xml @@ -1,12 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <browserconfig> - <msapplication> - <tile> - <square70x70logo src="/mstile-70x70.png"/> - <square150x150logo src="/mstile-150x150.png"/> - <square310x310logo src="/mstile-310x310.png"/> - <wide310x150logo src="/mstile-310x150.png"/> - <TileColor>#00aba9</TileColor> - </tile> - </msapplication> + <msapplication> + <tile> + <square150x150logo src="/mstile-150x150.png"/> + <TileColor>#2d89ef</TileColor> + </tile> + </msapplication> </browserconfig> diff --git a/resources/icons/favicon-16x16.png b/resources/icons/favicon-16x16.png index 67dac1b47973234b9f20e67d01f1886966a5543b..d509cb4ba5ebd54e85eb30d1912c48b825fbeb42 100644 GIT binary patch delta 657 zcmdnTwuEhhNj+n6kh>GZx^prw85kI41AIbUeKHHp&A0qwviZ$q17v(-u>8qv^Pj;I z$cBnD0J#ibnC*e2sp;0Aj5fc4h{@&`ll4zVTcAcD`p#_ki^=vEqcxEIliAwL45arr zgY{~$TyyiSbEHbQ2&b%&$hWLF-~5Heafx`2rP*c+i>;RCo0muw{bsTSGJY|G%mr#| zQ)+(7?g_VkzDx<wCZN<3se(4;mY+=4AK4sF@J9g^yk~U+a(^+}JY{!3C>ZyV&1s2L z(KiN%PNnAO?Cv0=6q|nnJqC0oqs>Pa=Xb32PCy4PmMUBzU2=>+`X{sPe!=)h99}>_ zEtD$y$l?UlvsWn5!hG`q!T9}x344T+j{PjS%D})7SrX(I%rNWQ<C)T-oM+BHvSIqm zXt#M&{p_tX=X}1scUGA9H`{dAGR>?He|3MDf6A`=oVM=W@57(h-Z_-9{@L%YXFI<B zYur7n{^0YcGCvM&`P;d1-?M+Wo*mv1a(K>`XV2MO$`1l<;VkfoEC$jQAk6scQ`R>i z<AkS+V~E7%<O0z|v9xps<}$-)24QT1>}H&b9SwWyH!M+LHkNK)tmtyUc8cSyZpRxp zPo8sNJMz5zGk2#zYC?JErk-h`44--z**-p0-*~LhMe4QtDs8Q7w_8;%MMe!Q5hfu? zA(hFcKO_^Gcs}jP^4b%{!@+2&78a(Kr@|=5sHWy9r^3i4mzQV9*1@pbb&96^k;IzD zK*l#bN!QFC?Gj)#{-_YIIpOl!FA7Z0;uMy1du*DS;mp#aa-)VtGJ<u7OX9uhk3OZb TGTi&cCOJ<qe~Iqo^Gx{w6S@-c delta 683 zcmb7<TS$`u7>3_}y3M7tT-k3@HYiQpl;7o+{py9bsY|z|t+0zi-DWO|&AGxPSb~r& zsK`!i(oH&$4!R`E@)&kBR2n6g6YT&p+CU6ptF`_vyXc}1J|4dB<+*q}Im4VwIX0oL zv{D5$rvYbMfe;uj0VgTIR}IiN0Mgv?xFVkkR`-=_6%7A(wvuSjLbn&OG1!%X?*o|X zKms3|1h5rkfyc$RWGvmo@CC$hus$9InJ|=N<stgpVAkTxZ9Hp7!vVay4rw|*+`>vf zf=>`0!jC}&?qkvcMGn}}AQO-$#&|m-PZ1fz%~KEwA>bp51p?5Q;l(w0U7$r!%HZ#V z&*sK%5ss=59)&OoIXiH^9s~hFJRaH6*^Dh4!C!+&B*Hn?)W{THXRTE42dB7eF+^VU z_xxg)eCrH$XSv6jjHoRukyl(Xp2=Vip1Jf8Bk*VbEK!v1Y+{~Vt5T)lF0j`oZk8_4 z?-yYM+)8<&Hpyeqyc4hr<3zpYm&BOY>(8C@1|vN!S^0%W9Ca>Zkz7wXT4%-O#Zk(t z4WjLL?23RaZ@Bm4ynRoNZ#nccKatz5PHU-7f8*)C9NQ+>Ez2cWC&xkZgw6@l-epOx zU`G!Srn~d?{mFhcY3`f$ghICJ++>YQJgA|ZGvvfq`(d`Tc4#)RdTu)5_-m6U6toO^ zrNM(7&)d<@LEb7E9+}gG$+p=<Rh;Ab6w@fxs;IK+Ype!ZXE88<gvyp>Qqs(9saBFr kOLA%HP7x)cDathB`dc_*(i??!r~hrFd`f9-f50;R27T+@Gynhq diff --git a/resources/icons/favicon-32x32.png b/resources/icons/favicon-32x32.png index 589913ee3eabccb035de9fcd22877e70e5f9ee44..7e01bbad38a7bda52e9fbc30542c41e581954ac7 100644 GIT binary patch delta 1178 zcmcb@wUTRsNj+n6kh>GZx^prw85kI^1o(uw`eYWGn{P2T-u#Qn=0Af2ko?7D4HSVO zAlJfTJ5U6OzB5<>x!)N;3Sf$DA<ArQw)|%Z1?gq5`oUoNi^&#<elXa9L_lntpNuxY z7;S#ngZMy2AkI%lpoH~*25q1bAQjBE{~0|0GZ^dX?fk_IRrZm^*~WbHe+J8MK(m-_ z?sEA-4EoOiae>=!CZG#8o0@JmGXuJKtEuS*YwL~v2Frdhfc)^2!7@;P$rZkkpUgHt znQWeL*L(e9u>HwweT&PlL#gQltMffB-_OhrH@E};GcbH-aQMRF_>;-@HkaQ^Huujg zjzG7!DmHg2HtrKjIK>xbWwz-Pt5c6cJ<uu785~{!-30U&(5=iicewqm%{Bww_nXP) z2ZIfm1cnyKl_0+X8DJOJ16={+e`9d?4HB{gx(3LF1i*J@I~&uDKbUNN4VSkoH3Qw$ zuGn0m+6}aImQ1;|*~XbN<vxbXXUmk&ktr)z>#b1h3DsMepglW5XZ8)AKtID}VR{R1 zat9=7&rH;w^-a*7oq>U&p(MyJnBjuR9gg4UjAzZPf2)u&N&b)A{9il^&O8ug&No#l z%vHVjX6}yN^>>YT?VQcF|6&X~D|hTA^JlX-WskntzK3@Xcb$#%otv_}kJS%rT*?Y< zPB06b`*8Nd8PAy%p0v$f_~iDR`?Ds@o^}0zg5tg-$6w5TS)^91T#)y#(d2wXwoI*| z(b?&N-axl7a2C{iL>2=XA3>PWl85IBFcrS{ba4!^INdrqJzO|YpiTYcyQYaPCQFu! zJFz=zGA+8n&GqeG_4~WE!n<zl{uh~UHg7}Zjl(rN%G2&Wzqi@CyshI^(s`ki3XwUN zKRfDv3)$nYbwlav(qDT!Qm(q$tyg;0&s=Mow)dHu9RH8I^&Cqy+g^AtVoSKgvxYsZ zvnG#cBAdOsS;(S8JRu8$9_q663UzEQ=ed#0_Ki8bGTW(bl0)+&+m<`uwt826eJ9fw z6a0=@S;U7i_|L)jUrJpMy}V$5$YXa~=b^uEp5N1d@oU<~MeFqIP8I&T#@t!G|7^{_ z1>K_WR;)8>dZ}-GUtg-8{hCKasLH?B(W#p8OlI3p%(Ab3b!q3GioQVZfNi<U*ZrS0 z_1C$&)Vq;stSdIF{+E7X$@}Mo^_(p-3(lQBP`QZvK+EJXrWXcPDt3LIQIa1X^c>Nv z$Z61PxW8X4V>9Ee-8;AGE!cXKZ9(kaPqWurpWs{YO|O6X+L><{C(mrSXJ1_Z`SR(; z`JapH^Sj0ODW9+1usGzsh35IY^3VSDi%6x#YZffJV6alb_Tj(KJ>d)TOkT%{Ua#f) zUNwo$P=PaHy`%-hkDg_|Yp#9E&*TW)_eU=vU2;zQu?H!dvJKW(SngOv8CBIf*c@5> yy=}!siMZ*h6|aLQ@$M0@pL^A4ecRerF8;ohEpM_H)yrQ$ameMRO6TOKEcpQKVi7a| literal 1364 zcmb_aSx{346g^3V07;Y`!Jx5VL=+4W5HrL=OoTu{j0{UlY#<N|E(Con(n15c;zqSn zkO0b3OB5^AamEOO7?gq*hqBa#8Kj^XN84eFyQI(0e)O+*=H4@RIdebGIT#Zi#<Fp< z0l<=mi{&J8KBg6otm1~!n<UKH5*if>v>ao+Pqz5DRE5i<fP5~X-2=QON7^YMn+KSb zfS>|!(dY~tg8|BDj4W0{9{lfNWeNMauw%lO2?_-%Qv6nfUr%A68qLK}MZ$a?W+S>! zf@zJg0K7K9+yQeJ^xuF+1(gE7C3w*ab0@yfLd8z3<HLrI#jY4{!d?~J9I-V9Maejv z0dqH|FXPgF#D~J31!r3f)gnI$-iuJM86P?@brCBT!*L$^D)8niddg9t!2NpYvQe(V z#5v4%A|nRU)p*s0*$&KJ!~1r$?1SYTEOp0`bQlidVI%&&jCXA?{e;_<X#5%q3Fgqi zc7o6sTcS{ti@Q1$ZiZY4DiuUL-WYJ_6g(H;b20wBgvs-Gc?B2uz{wU8e@vXmvlhtK zpy4Z25n$P16&J&2a5Mwsdc14L{xr}nFy9`=6BwyO;TL#y6^ZL$$HL4NY?q^7hrwE` z^+ieq9-l|ow|I30O@-jH5#)_%0nBEz{OC4EQr!iFJbDvoOVnqFUcBQUfB4pA&y#Dj z!r}StlvR(p4+f{RACUe4B_%RUTvOXx&mbFXO?cui(s&~ulOpn}$|Hw#LK-EZk6Fxf zVh4-~h98lfA*nbtHmFaf)Kb=S)y{E&IXQuG&T8&@OQN&q`Y+u+EQ^OpI`)?ld3kRd zHe%7rd9A_p4z0hN?bwr$9)^unMG+NiJ|s*Qd7oBW9qQbhnmU;}=`@yPmt5B7wNiAf z?s#jdKDfAlxlJsGd(<{&Q~b!?LD65`-C9e{C-?Nt_2<rJYCSub^>P+ltC!6$4);(w z2sc?Rstb`97rELO-d8_%9vCQ(<K_>C)EsH9w(yiyx+ZWUp1ZTFb&90X!J*McVerYe zwgS%h3Z`6ne`Ld`xc^fQFI=%Y$kSh@h+oaF3n?vP$-=~@rm87@nB<x1CS19uxh+{r z>p;sKo_lRs#dqw+vka=qw5%!pscWUuI_F2KlA}(0GQq8yGM$>3ba~z5B-(rLOq@0} zd1H(3-J0X_2CcG0V9)IBjgonLXAhmz+oi~PnbgpzW`k5wP-57TpmInmvv7_X7`WqO zGMJhN)^Fz;p1W6HG~Qw|GM--8AymvPJU!DMlKXNd@<xf9bE1Q6ss5IX%5UX9YuZp* zdSFE!ksDpL_J)hGr*h5KKsn)If4EDhK9IQUk<?PBEIYw=(|WGyI#{l0U8>8n+9K?# zbjf{5NBzA5&C1XAZzVNfLP!#b)MO$}pxT*60{A??Kp$R!k6%D6-%r2~5(KPT&f^Ps zyv&Xt`u|1Po|&4i-u>T%h2slJiy=NgHi3{Q=W;YVGu7$a(m2F!O&TX%L#Ti}-5=9T ztE@OLuig!Px22PE&^#EvDu#oHL*xlZngd6y^}mry^Y}TI)A##ekMXvVZKU^U!%s)} X!sKE{Op5|ek}n{YM2jzol*Ru5uRY9p diff --git a/resources/icons/favicon-96x96.png b/resources/icons/favicon-96x96.png deleted file mode 100644 index 8c04515a78c5c5a0c638af42b184f06490fbb1e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2051 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 DgmIUq diff --git a/resources/icons/favicon.ico b/resources/icons/favicon.ico index 2ad9b3cbb3bd6d524471ce000e6c7244e6109bd6..c4226aff16b821f57b3fa880f2498ce9f43e46b6 100644 GIT binary patch literal 15086 zcmeHO3vg7`89uw45DZ{=Dg|l+3hGcn#k|-}2vB7}1ySO(^g*x|99xT05T>IBx|Kky zwWHW6A&6A!yH!k3d_iJbaU35&or)4-cqKTZ=7D4%kkjwGd(X|;%iT>Rn`mdc%;7)x zod5Bi|GXa&!X-T7(n|$shIn$c5LrTqj12R;zYw)Z>krEOTatuW1%`{j0})Y#z;xqx zL4?HnKTm`w<+(!-`COsxd7jXlK6m(O(3`IkvQIp@MCKI;*%vl{ZrXm6SiJ7ggZUzy zAIlD8hJx=EpF1R-L$KcG30xaXK2hm;p5QE>JJ{fi0oYu@ZP`MetJ@=Xl<$+6GVNtL z<@1DoqRS>S?)8M`0mG?I;HaG_<T=VV{Qjz425sn=S*A8yUaL<8#wgiD(OeO{2zCNC zTW!QZEVgvk!%MX76X60|-j}Gu8-$SVNPb`x%C|%3fzHPgg<I)?{>P(ixI(Yzi`J2m zeChUif`!O$)Opw+@V!<~1K(_=Q&ILO@Ep|mn#T&+OXYW!P8Tu-x?42;bxz}jSq7_r z!jBKyeEXU5yB!ny)EZ5{%oTx7jAnK%&fobWFk06QTP4n%(yg~8FX{;W@hweuzq1_L znLE5(<CA$JI4&0N*G;D`T{mnki=_j6wHB`@wA1SfKWlxX?@tu1=}xkFuHefWUz<<J z0Zx2pl9napAn0x%C(OQS*Tw!2#fP~GZD^r}3;jCu>I5NEby<vSKht?Ix4f<ACnAn^ z@Q%$!k*=5h!Duh-W4YuU=M}Oa<UZA9Cwaa)GAni8BeVN{xc18AWB=0gjJPK_SJ$10 zIOi3+9oi;_S*bM}fvG+^KiI%=g|@w(;PuFBuRpDf(K4L>!Y{<?<6SEU#z<GN;xv2C zSWaP#zfQM@^3Tur1jBLVUBPlyW?eQ>aq8}<40)bFnDexg&HFF7vv|Sa7v<!nCTon% za|dN%zdh1Fa#d~j_}z{~x_>)z^(S-s{oBGopH5D0k_!iKm46(w^d7r}`mV^%UVtFC zWclQ#@r82ZC3EF76Rwg>LwHB=bvK2rcWINhiQ%u~=NOnw91CLEN4|mI<Wsm6?Q#4u zaQq*CtO`Ur`ruIXnN?`Bdk{{TVYk;Eyw|>NkEI5FH`-56`yXT44}e!+heh>4<TYcg zzA+YVmHtiOH?enS4r${$QekzXJ&m7j#=-ARoa->2mm{wUL9dJEcx|bt@pHW!g%4|} zTp<T4-*SCsU%RkBsC+x^dHkUdH2h6YYg2QLsn^3EJ8t#;4dCZEW3-PvS9puUVW&oW zYHvqh+4I%+H;Lcp3SfQb{A1ZvIYGZQ_^(R&^r*sBkklNS-}k*C_7Y4L&4VT<9S<tL z>1Q4OT=Hnm;n$P?hpi<`hHuoz7FpPL&r!V$(?rw2>r(gX`+vD~_y(>^N}bBkQ}~G; zK|Xo;)lq9!`nVveDLly&EN7dUl+<GRoq1eKK6UvFwXQm?3_XEgVJCiuH5c3^xz<+g zBNipkA4dO1VOKP&4Bd_2j@>H5=(|u4%`wZseT4&ds|+iIFwV@n6Mro1stjyP><?G> zKFD=YE5eECy^nmpboe8Bn^BnUw3KD&F8m!~S7iX*`r`EIDQak8AFasAc}UB*<JP}R z!Pgz@&qJNGABFvl%8-@ySsYs(?q9fnd~Ey;*t`8uK0D$2x^Fs)J7PbhGGI)gZDJsn zEm>Y=J0|`IE?jc=!XaCY@lA~%k^TE_qu-Th=O`UcG%j|%4CUF`Yh(GhJUdse!8lOZ zZ+FyqHYK@HE*w%JAGmPw-Ab2Ec_zWL35DB<&L6m4K9^bGg#G!a$Byl#>x&mR`a@RM zpY3IM?ur6gG_W$}_(e<xM%x_<&w`NGnR^d8f8guVRu7%>yS+RtgI*8xdq>zcpW+@U za+hVC8M#B&`h`3=t818<TJz}jefK^*Bjw00P0sL*Hin-Oc2yR=9ytHm?OfCQzz4)Y zEWi|n5qpk$o{8ezZ9$ZrEA*QE?%?{q|G7)&DLi{O+fbLV>t$d)*w3rx4XR$Fct{OD z+wOsQFN!t!Ga9y21)?=Wms9bnNndE^xItMo<n5s<udB2`G!KS9E&osJb=2{E8~1Lb zfK}gPKL!8)Pv2iS+#flv$>E>XT0MO$?vH?dJ1{-0<FcPivuzmt#2q@I@pZ@j-EpO# zcc%6`6ygB38x#*I-wAk=!jtth#Cd;;vvq0I1N(#h>;OD}qrOD`p!10+95};hzsoZ2 zPiGUG&cnA3#NdFBed#lVS_J#N5b%n?g^9#YUHKw-F>FQcb4=UBKrB}OHsW~epfKbK z`5mOyoyKFAL0Mwm9VlI0p}a!@27P>q#%$tY`{J3IZi{7zQ4dPTQK!D4>qtc0yvvHZ zkBjmv+Lax<ZrAJ&YvGGZgq_CxfH{uyhtAiXao#ENUevhTB?e;QI|00Pu-gq3OWBq# zL|wX+0qi&`)1++l2(cnX$~yGm62FvH2ZTtgma@80qlcv2seP9)AACx#lJd|~M}5%S zNd0N?Xdpe3-<TGmbtw^A>4{K(RfLuth)?~Mk$fSR)82VP<dBXKVkjwEU2oF<o=QO~ zQtBc!tuaE=1Eh6g(n&#oh~hRpzY;5ilsxSzsgiP~?hl(El%JH}EPt4ORen}}=R2(o zgaQQXomPK*#Q6C{XaeeXJ;HmKKVI>=!*|=)OEE;_CbNC!xx@EFbcWuejeHThOc%m< ze;eA7(;B~~EAKHV3%&cJ`dMVG2qEnk#K3YR&Tozfp99OIQEw7Fp??bV&5n+_qj;f^ z9`uj)wHe-LQ8#UvwnBL#bUET>{6^lfd~xEtN-y48EH?S%L=nnV>7Au0SGJOe&u>?9 zKGAv}(hUq&eZxND8x;>J&gstr-%08~-Yt4wXX2DG?Vm&&=&j3`exSeKMZ0*-;IqBW z;2dkp%Z~14blob>`zT8uWmf5=R{dhk#eKs{i_aZeM68DG$k;}VcpTVXFS?$1aT9-} zO>;d44AhOX-_dR_Tx`D6;9N{wXa@m<s&A|>{qgL?%QNpAEqylK`+>)pJNQm%X6pW^ zxhdb%DrcsCyaDUA<ajpX<xzHK>b?!s)n1+u^zJ`Oo4Raywy$*E*qiX4paf?U%jFZ7 zUCX`L1fAzh;?(i@Wit(()LlAuzAVr3uD9y~-#P^Q8A3wrJLoO#ihbi<9L^fh#~x(B z`sK&5-rceMiL`INhvXf0RGs2`x6}GHk@n5^fV%A(*kw>ycH8}sNc$Mit+!0*$G53E zg#ASd1M5PilP1zW>za08d!KHDaikl5AdjAxNc#nzmcP*c)TE|*-3H^h!#Zr_B{xR( ztwh;>dEB@@#ToZ~NE-}A1Gig!Xztl>|4F6)cGT(v<r5|hR`?QOpSGcA$CgZ=yspnj zs;wD*n4HvNl$-Wv_uVVW1KwQ<Ls#u@@p}6~M>T>mHf<VrqnzDmuZ2OCn`xWI73$-c zfuSq*aen24{0?PXQI^p^^4??9dVRWSN^*1Q%8_e6G0UynXM9(AX695Sr%|i!w0d$H zf8Wt$blr6?<>X{ovOeDc@Hz5s&CdSFLC0zKIsdF5TO|FXO62`xmSO(6Mz^QOqilBu z1Lv~)#w<5<um4_=d?9OMR39<t->7p;&Y8<btRru`?X0Yt=QA^{HKMYuDBB#$x=WRp zcLR5hD3hnnzkO<sP85OjDaSPc+K{zIwyhC>p;Xy-EVr_)sE%RTi1ktJ)TX;8a{d%9 zR&AJTBenjzHnr9`mm>DZFP(KruWw~57Og;g*gSsr9#wAijfQ-2bR>0SUH$8Jd&a)x zRpT4$b6p?LmlWTevp=|1&+ANlMxVn)O1?leWau*5`V;#s?6)v>fcE(M+qAub_Tl?u z1>yvDvymU`LgB|g1%LVT^?v&P19}!IX?_2J^fK;kK#g@WG0+cq+q6yD<{pZBDJ9=o zYVN;wntIxx^Cd&Kw*TVZkNUv#D}}+b3!flf+m-z%{~m=pY&xkojIvtm2VyY&z`A%J zdm^;SaIspSGyhC~k^Mz*1@~F1zP%!Jh0@1khDs?tD~j7(=M}dtS7AhPTQ1X>hocF< z5!#AzSd#9qYE1K2wY=}II<zwq4wU$-Dn0(H6)u035dKOJ{-xA;D$^Q0E7Ak5vPma% zm0nV%7q&}yPQhb|3<T?(A_*V1U#>VY+<f!K_a^JOKee$~pXT1R6nqEy&O^x>=YWyF zcd6l-ge72$(D$gHea7FFaPP+VcJA;YwGYLf@%KpkhfU1-MBa1Qw;A_5=022|%O>|~ zs-K(o);5ewEoj#ZECE{t^>hn)ew6m+Hm<cGTgo!sK5TP6?+KTT*!YGp&%te?=BIQm z8UAQBdG8qZSiSO<Hb<^&m%|yh2>Tdxo#5qtKga%e74PZt#@qOE;ETLx)!yKDM&2vJ zd6Z@S7<EKF1`cE0+@by3&Ut3xB+v0vzdU#IB{vVMxR~+9LpK}eIvv^Hnv;`_yV1sZ z11j-0<@hPe77f^eJJ{Tot(lqm9mxM3`ClMlFPR%yI;`x@MMIyw6|&7tL--1z!i*dK zV;w9Ww)qI_<ag(<3Y&MmC$K)bQu)`k+rm7&t3P$qz}MvBVVjKlLz`GXrB_qKPX|<0 zO-cT;%|B{YxFRd-Y9*^Eb@)fE2~0`;qHW%Q9o18kni}Bab$a`qmU5(YddiV%C1a=4 zQX1Zv(feQ-(^dP$oVC>$m(YKVzJWesms8*7naao53(Yb59NGov7DEU65zC_5q>|Ao z^MJX`z>L4WVB2`0Nr>^sg;<E42ToK4zZvesN#gxmB4PCaAy%%$0E9s(r7prd{&0lv Ezsow7c>n+a literal 15086 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 Uw&`21M#1hDW6`(<7aC~)2U`xa;Q#;t diff --git a/resources/icons/icon.svg b/resources/icons/icon.svg deleted file mode 100644 index a727445579..0000000000 --- a/resources/icons/icon.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" height="480" width="480"><circle cx="240" cy="240" r="240"/><g stroke="#fd0"><path d="M240 36a204 204 0 1 1 0 408 204 204 0 1 1 0-408" fill="none" stroke-width="24"/><path d="M215.8 126h48.4l-10.1 94.6 86.8-38.9 15 46.1-93.1 19.6 63.8 70.6-39.2 28.5L240 264l-47.4 82.5-39.2-28.5 63.8-70.6-93.1-19.6 15-46.1 86.8 38.9z" fill="#fd0" stroke-linejoin="round" stroke-width="12"/></g></svg> diff --git a/resources/icons/logo.png b/resources/icons/logo.png index 793a8812345446d06e7409dd39ae88535b028ecc..9f18a54eb4a9d9a718c39618cb22322add8307d9 100644 GIT binary patch literal 19352 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 Dan~9m literal 2978 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 YU-w(4z}E3mzW@LL07*qoM6N<$f-l^P5dZ)H diff --git a/resources/icons/logo.svg b/resources/icons/logo.svg index a857e75a03..7de6ef9eb7 100644 --- a/resources/icons/logo.svg +++ b/resources/icons/logo.svg @@ -1,16 +1,12 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="160" height="44"> - <g stroke="#fd0" transform="matrix(.0875 0 0 .0875 0 1)"> - <path d="M240 36a204 204 0 1 1 0 408 204 204 0 1 1 0-408" fill="none" stroke-width="24"/> - <path d="M215.8 126h48.4l-10.1 94.6 86.8-38.9 15 46.1-93.1 19.6 63.8 70.6-39.2 28.5L240 264l-47.4 82.5-39.2-28.5 63.8-70.6-93.1-19.6 15-46.1 86.8 38.9z" fill="#fd0" stroke-linejoin="round" stroke-width="12"/> +<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500"> + <g transform="translate(485.46123 96.905893)"> + <path fill="#3737b4" d="m-410.09922789 30.23921644 53.03310051-53.03310052 123.74390591 123.74390591-53.0331005 53.03310052z"/> + <path fill="#3737b4" d="m-59.57323003 30.23920409-53.03310042-53.03310118-123.7439057 123.74390745 53.03310042 53.03310118zM-447.96124 15.594107h75v275h-75z"/> + <circle cx="-235.46123" cy="153.0941" r="54.065445" fill="none" stroke="#fa023c" stroke-width="38" stroke-linejoin="round"/> + <circle cx="-410.46136" cy="328.09424" r="54.065445" fill="none" stroke="#fa023c" stroke-width="38" stroke-linejoin="round"/> + <circle cx="-410.46136" cy="-21.905895" r="54.065445" fill="none" stroke="#fa023c" stroke-width="38" stroke-linejoin="round"/> + <path fill="#3737b4" d="M-97.961227 15.594107h75v275h-75z"/> + <circle cx="-60.461227" cy="-21.905895" r="54.065445" fill="none" stroke="#fa023c" stroke-width="38" stroke-linejoin="round"/> + <circle cx="-60.461227" cy="328.09424" r="54.065445" fill="none" stroke="#fa023c" stroke-width="38" stroke-linejoin="round"/> </g> - <g transform="matrix(.53656 0 0 .52273 46.09 -512.12)"> - <g fill="#fd0"> - <path d="M1.8 1045v-46.4h16.4q24.7 0 24.7 22.6 0 10.8-6.8 17.3-6.7 6.5-18 6.5H1.7zm10.4-37.9v29.4h5.2q6.8 0 10.6-4.1 3.9-4.1 3.9-11.1 0-6.6-3.8-10.4-3.8-3.8-10.7-3.8h-5.1z"/> - <path d="M101.5 1045H91.2v-27.8q0-4.5.4-9.9h-.3q-.8 4.3-1.5 6.1l-10.9 31.5h-8.5l-11.1-31.2q-.5-1.3-1.5-6.5h-.3q.4 6.9.4 12v25.7h-9.4v-46.4h15.3l9.5 27.5q1.1 3.3 1.6 6.6h.2q.9-3.8 1.8-6.7l9.5-27.4h14.9v46.4z"/> - <path d="M113.6 1018.2q-2.5 0-4.2-1.5-1.7-1.6-1.7-3.8 0-2.3 1.7-3.8t4.3-1.5q2.6 0 4.3 1.5 1.7 1.5 1.7 3.8 0 2.4-1.7 3.8-1.7 1.5-4.4 1.5zm0 23.7q-2.5 0-4.2-1.6-1.7-1.6-1.7-3.8 0-2.3 1.7-3.8t4.3-1.5q2.6 0 4.3 1.5 1.7 1.5 1.7 3.8 0 2.4-1.7 3.9t-4.4 1.5z"/> - <path d="M129.6 1018.2q-2.5 0-4.2-1.5-1.7-1.6-1.7-3.8 0-2.3 1.7-3.8t4.3-1.5q2.6 0 4.3 1.5 1.7 1.5 1.7 3.8 0 2.4-1.7 3.8-1.7 1.5-4.4 1.5zm0 23.7q-2.5 0-4.2-1.6-1.7-1.6-1.7-3.8 0-2.3 1.7-3.8t4.3-1.5q2.6 0 4.3 1.5 1.7 1.5 1.7 3.8 0 2.4-1.7 3.9t-4.4 1.5z"/> - </g> - <path fill="#aaa" d="M161.7 1045.8q-10 0-16.2-6.5-6.3-6.5-6.3-16.9 0-11 6.4-17.8 6.4-6.8 16.9-6.8 9.9 0 16 6.5t6.1 17.1q0 10.9-6.4 17.6-6.3 6.7-16.6 6.7zm.5-39q-5.5 0-8.7 4.1-3.2 4.1-3.2 10.9 0 6.9 3.2 10.9t8.5 4q5.4 0 8.6-3.9 3.2-3.9 3.2-10.8 0-7.2-3.1-11.2-3.1-4-8.4-4z"/> - <path fill="#aaa" d="M209.6 1026.6q0 9.3-4.3 14.3-4.3 4.9-12.5 4.9-3.7 0-6.8-1.3v-9.8q2.7 2 6 2 7.1 0 7.1-10.6v-27.6h10.5v28z"/> - </g> -</svg> +</svg> \ No newline at end of file diff --git a/resources/icons/manifest.json b/resources/icons/manifest.json index e836e9fe70..bc1e53a0a5 100644 --- a/resources/icons/manifest.json +++ b/resources/icons/manifest.json @@ -1,5 +1,5 @@ { - "name": "DMOJ", + "name": "WLMOJ", "icons": [ { "src": "\/android-chrome-36x36.png", diff --git a/resources/icons/mstile-144x144.png b/resources/icons/mstile-144x144.png index 8a3a249c5b397b43e13ffd506ff2df8ef7aef0d8..951dde260828ee1a1397129505513834365128b5 100644 GIT binary patch literal 3716 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 delta 2653 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 DT>t2y diff --git a/resources/icons/mstile-150x150.png b/resources/icons/mstile-150x150.png index 03258dc7259a12a2599570b4d2c8aacffc3eca2c..1a1318e6087e54ca8c9959736583f41869e45776 100644 GIT binary patch delta 3283 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 TT)|@u(aNdtpQ@Q0p}_wEiE(4V delta 2157 zcmV-z2$J`%8|o5}KnVa~P)t-sOlfhG0SzI4|J?u(4gmVt00aX7gK_}o$N)4g0Cr{o zBOU;2T>#d(0IZb&#;X94eE{*%0Jxw4pNRlnPyj+Y08&Q)e@{wv0000BbW%=J0Byo1 z7pnJ0it5$;HqkEt00=HgL_t(|+U=cbm!m2WhC8boTT$b_<^TW7={b=E5CqeiIbhxl z=i}UTZY-&lqWJm(lK~AMe}IqY;O+d={t^V|FgyprWq<N_-tiM9arFFs5K0O5{%6U= z^Dm)>i|>7kEP~L8VEYm|?k?d9F1syj&A~s1D><JITNTD>{<I{&71yNctEz93YjMlT zhX`aQjA%@%GX55b%PJWoL1x<%2(Kn&OzN2=7@5?`$SsqzzbPBye{lvhPttEKZ9j5u zW;<Ty$m&USEx!#ZudLRbHnKoGCeDbG_Im|wlW%Q-_)ja4_Y#AVmUUP4ebv>aM2BKl zAin#GvVX3OMi55ZB}2w}ktiFIt`!CH{K)>W8ATbmcOQ4xjL0J|l3hDaaOtoSh4CKl zHSgF5tcz$l7>x%0fAbHGIXf(m-Q)ci%<FEG+$22DS*sftkF~RNRvM3YT`?;^iA?jA zs9^M~iX1nnKK=dK^QqE;tV!SqBakw4S{@H+46)2fn68kgJBkN~<?+yz;%N}G@CCB^ z@da1<Z_e2dk19now}xxEJ{CwrmB=ywLOm?$=c@n00(n@Ff1bGLZ;v$k>gSH(6`roC zr}3Ce@#$XFlqCEmiKs7o_ngZ0*Jk5MA=*=C+>1v&ES1JBd;>RXP^rK5+%g>5^!wv6 zd<!G}zR4&DZq$RO+E+xYUbpZ~(DhMHX8Gijs!(T8gl~h|kIEr+x$r+d3ExP<i}>P< zSIJ}kMJgkTe=CPBI+>PSoIB!O4pTTfRc}(=^VNJMu+~Yh<UV&kxM4>J-U+A?s>P`` zUXM9%Yq>Q&OfNAtHKQw6$0M|(%kJR9;%H1CF06QQRH3N=8wZxhfwQBrK@!{W;%E%g z+nBSa2m2RCZ~SbJv_>rO=q1=#?_7>&c5$R8IsL$ke`7Go_EUCwob3(OciihU3P(p? z9OH`Mw6VQVcn?UU`~FC3R5Q<caTx8uko)pzBfCRWk242Xqp+Ls;xOBG;QtS{W-e2F zUb62_3%5bt8rBN$e^lCSOz(A$Y+dTcHNTYWQn|Y$53JUeW`z}aCO3CF!#~P7W9nI~ zE0dk8e+?h(S!-wO<c6W?WUYOR{mQ8JvPIeC>JqtJ!}6vq)V_AKx2S$(A1{^|(&%q= zR*k9(xlD*-we($7eB@}a>8O=PV0!R+Aj&w5lNA|i^-AklmGta29kDX#co@x;EqZ0F zI5M_OmM$4sZV}pOJofC%&Xnt0Y><ptaYWLFe@mIRWVRcRfO%^z(I#shl^7$Xm_Dn} za4AXbNXr-x3nPyMTh8fp0S044N-+w%%|5CAx~W`rwAGT9s*p62bl8@E8whKzG)M+X zkG4!(5;lyr&zA03OFC$E<!MBi@?fv((N=z6Oe{_EeKvZ|v_;Y9n`dh2sp?QirL?8F zf2FSFUKhLx9zsk)Uqq4~N9+dh$x=UCsCG+k-@oFf+My{d^|TkJFjJcAiXoM%GH|uD zBF2UtwWiARg0`rVT3Z8;fGKu#+TFIb)T+Rvu~Zyqrg~Ayjv(}9{F*4@vL7Oq`rRue zXY0g4X1`H#P^IY0b)rZ+;mo91H@Zunf4C?PdVID^O(hX&%V@TWL!&H0jqBFb3&ypr zo13=QYPYgzOsPzD2AS&o7>dkjx5aK#s&TZMUgD*4>0<TRR!6G|!<IXVm+Ga<8#K0t zVVWRa+9zrpkgMCMYz@*iDcnLA@hr|T+Qzp$h0`VY^9)_-T3Vw&w>!btm49Zwe|91G zNDX#0EieD*ii3&<Q7QmlIAvt$l&mcd9(AQ-KIjlqx<YU=bz~NHSX(;QZY*%p5Q^m` zAwopf>Au18jRoztlXBbszI!z43qF#)OnbMTw40L3X43nki}kX`z;wj+b~I?WtW~|F zQ%htnh9Osdh;H$gwYH%_x#N;3e-fAlcWr+|gTCEG5scDy+$c2<PYc#W*?ET4tQl$^ zj1J0WqYh6UXofOsm752n<wAW~6`tmtmRZ_ZYS2g-%?m!GvLjm^p1ROTY0_ppE^jDR zOTu!k&DNj^d$u}aP90{>R=zsiXu>vW(I?GfEl_Z_edKV9zS#keTPtz0f5MYaj%8R3 z<E%fxF&*!TmXG)3^+KdI$cBYEdc21k(`GsAAW5v=dZn_86XN>eFX8l;I<Fm5<p(A| zosMQl1BulqM@<io-lx~}%H)4xHjYCFN52k)OFtHp(jxwDrN$v|7pKAS$BK#Nr_Rj} zo#%<-KW0la3F)Epn;RoMf7Xs9SP5Nrog*U&)()&#iE9HZ9+Q9m$2b!grvL1ObnL^2 z-TcE*NZ$^QLc*Xdd7}T1$Edk8mC_g6S+4K18}1F+`==uq={Gqvg7JS0=ydAFh57i_ z^n=H@N{9QtY(SpFeW|7p=Z42)^t0T({Bkh(v-iR2!QkxJ`0~}UfAP#wYuCrd<5Gc{ zJaFZN)ZdC1l9akhoKaD4??RGSud5MmN!!eIHE+Mn$o<>D*sHFZPrvHw3m2iy6b9Gi z2@8a~L@{d&&IYCp7t#mYx~g}#@`}xD%U5iE{k?!y@T)|90jv1QjowH*4>Sy}=Ox>{ zuNap%3r+@Cdy8HME*HPgB(m3?-r0YOEGDh_5s6}z1V5rUetjTEZ|9%(mmv7Du;(DS j>`(sgGbI6&0Sz*f5Df|pz<c-u_%KciB0@f_lRph_vX(WW diff --git a/resources/icons/mstile-310x150.png b/resources/icons/mstile-310x150.png index 25e12f5a094606f168d0dded6f98013417b4d8af..3ecf9e01e300e0c26529a27b40f340db2ad3fac6 100644 GIT binary patch literal 3766 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 delta 2419 zcmV-(35@o(9qts6Kz{&BP)t-sOlffd0000000000000000000001FBL0000000000 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 diff --git a/resources/icons/mstile-310x310.png b/resources/icons/mstile-310x310.png index 808882565bcee821e91153cae21190c0fb6dc4bd..7aa7dd563500aec4804bb9be7319607f61404761 100644 GIT binary patch literal 6730 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 Q@mGy&sOmm0QGOZpKitcrX#fBK delta 4818 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 diff --git a/resources/icons/mstile-70x70.png b/resources/icons/mstile-70x70.png index a893eeaa0bae0fb690f5bbb781fb3a6ccccb17f0..be6b2d9e3149a60ac48e591b6bead2e288a031e6 100644 GIT binary patch literal 2801 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 TVWN8rlmM{ic4mzxUP=E0Z9EGW delta 1730 zcmV;z20i)l71<7uKz{&=P)t-sOlffd00000000000000000000000000000000000 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 YGRi2Uj54hJ1vS&_a!*-O6_bJrZwr+ZU;qFB diff --git a/resources/icons/safari-pinned-tab.svg b/resources/icons/safari-pinned-tab.svg index 02b4f2a932..2c8ca8c504 100644 --- a/resources/icons/safari-pinned-tab.svg +++ b/resources/icons/safari-pinned-tab.svg @@ -1,43 +1,3 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" - "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> -<svg version="1.0" xmlns="http://www.w3.org/2000/svg" - width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000" - preserveAspectRatio="xMidYMid meet"> -<metadata> -Created by potrace 1.14, written by Peter Selinger 2001-2017 -</metadata> -<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)" -fill="#000000" stroke="none"> -<path d="M3280 6994 c-19 -2 -84 -9 -145 -14 -639 -62 -1264 -315 -1795 -726 --149 -115 -481 -446 -595 -594 -410 -532 -653 -1132 -727 -1795 -17 -155 -17 --575 0 -730 75 -673 332 -1300 748 -1820 114 -143 339 -372 484 -494 537 -451 -1163 -717 1885 -803 142 -17 586 -17 730 0 682 79 1268 318 1802 734 138 107 -389 351 512 498 451 538 717 1162 803 1885 16 139 16 595 0 730 -77 629 -275 -1158 -620 1649 -234 333 -577 668 -917 896 -460 308 -968 495 -1535 566 -117 -15 -552 27 -630 18z m605 -369 c827 -108 1546 -508 2062 -1145 372 -459 596 --986 679 -1595 25 -182 25 -588 0 -770 -68 -503 -231 -944 -497 -1345 -325 --490 -740 -854 -1264 -1106 -314 -151 -617 -241 -980 -290 -182 -25 -589 -25 --770 0 -722 98 -1341 401 -1840 901 -255 254 -441 515 -600 840 -162 331 -249 -621 -302 1005 -24 174 -24 586 0 760 84 614 302 1129 676 1595 391 489 928 -850 1546 1041 188 58 471 110 700 128 105 8 475 -3 590 -19z"/> -<path d="M3280 6294 c-110 -10 -334 -46 -430 -69 -1025 -247 -1828 -1051 --2075 -2075 -54 -226 -69 -363 -69 -650 0 -287 15 -423 69 -650 190 -789 719 --1464 1438 -1835 294 -152 577 -242 912 -292 184 -27 592 -24 780 5 304 47 -555 127 830 262 564 277 996 710 1275 1275 135 274 215 525 262 830 18 118 22 -182 22 405 0 293 -15 427 -73 665 -95 387 -291 782 -545 1097 -280 348 -681 -649 -1096 823 -195 82 -444 151 -670 186 -131 20 -511 34 -630 23z m623 -1064 -c14 -11 29 -29 32 -40 3 -10 -24 -296 -60 -636 -36 -339 -64 -619 -61 -621 2 --3 256 108 563 245 307 138 569 253 583 256 16 4 36 0 55 -12 28 -17 39 -45 -144 -368 63 -192 114 -363 115 -381 0 -18 -8 -41 -18 -52 -21 -23 -21 -23 --725 -171 -288 -60 -525 -111 -527 -112 -1 -2 186 -212 416 -467 231 -255 422 --472 426 -483 3 -10 3 -32 -1 -48 -7 -30 -71 -80 -554 -427 -82 -60 -118 -67 --154 -30 -12 12 -160 262 -327 554 -168 293 -307 533 -310 533 -3 0 -142 -240 --310 -533 -167 -292 -315 -542 -327 -555 -45 -45 -59 -38 -392 203 -281 205 --311 229 -317 259 -3 19 -1 42 4 53 6 10 197 226 426 478 228 253 413 461 412 -462 -1 2 -279 61 -616 133 -665 140 -654 137 -654 202 1 18 52 190 115 382 -105 323 116 351 144 368 45 27 -38 60 814 -321 210 -95 385 -170 388 -168 2 3 --26 282 -62 621 -36 340 -63 626 -60 636 3 11 18 29 32 40 25 19 39 20 403 20 -364 0 378 -1 403 -20z"/> -</g> -</svg> +<svg xmlns="http://www.w3.org/2000/svg" width="933.3" height="933.3" version="1.0" viewBox="0 0 700 700"> + <path d="M590.5 2.8a103.8 103.8 0 0 0-96.2 83.4c-1.3 5.6-1.4 29.5 0 36.5l1.4 7.3-60.4 60.3-60.4 60.4-6.7-1.3c-6.2-1.3-24.5-1.9-30.2-1l-7.2 1.1-4.6.7-60.7-60.7-60.7-60.7.7-4.1 1-6.7c.7-3.9.6-22.1 0-26.5A104.4 104.4 0 0 0 153 14.7a96.4 96.4 0 0 0-47.4-11.5 98 98 0 0 0-56.7 16.3c-6.9 4.5-20.3 17-25.6 24-13 17-20.5 39.7-20.3 61.4.1 10.4.2 12.3 1.4 18.9 2.4 13 7.6 25.6 15.4 37.7a126 126 0 0 0 32.3 31.4c.4 1.6.5 312.8.1 313.8-.2.7-2.4 2.4-4.9 3.9a134 134 0 0 0-26.8 26.9A98 98 0 0 0 3 594.4c.1 11.6.1 11.3 1.7 19.9a102.5 102.5 0 0 0 86.8 82.2c4.3.7 21.7.7 25 .1 3.4-.6 11-1.7 11.5-1.6.3.1 4.6-1.3 9.5-3a102.5 102.5 0 0 0 56.8-147 114.9 114.9 0 0 0-31.8-34.6l-5-3.4V369c0-75.9.2-138 .5-138s21.4 20.9 46.9 46.4c36.3 36.3 46.2 46.7 45.7 48.2-.5 1.9-.8 3.5-2.2 12.4A101.9 101.9 0 0 0 351 452.1c36.5-.3 69.8-19.9 88.4-52.2a119 119 0 0 0 12.1-37.4c1.3-10.2.2-30-2-35.7-.4-.9 17.5-19.5 46-47.8l46.8-46.7c.4-.3.2 274.6-.3 275l-6.5 4.7a102.4 102.4 0 0 0-40.5 61.8 84 84 0 0 0-1.6 23.2c.3 16.4.6 18 4.7 30.5a100.9 100.9 0 0 0 27.2 42.1 101.4 101.4 0 0 0 51.2 26c5.9 1.3 33.4 1.3 38 .1l8-2.2c35.4-9.4 66.1-42.1 72.4-77.1l1.6-8.4c.7-3.2.7-22.7 0-26l-1.6-8.4a100.4 100.4 0 0 0-17.2-38.6c-5.4-7.5-18-19.9-24.7-24.3l-5.5-3.7V350.1c0-86.3.2-157.1.5-157.3l7.7-5.7a102.5 102.5 0 0 0 37.2-111.6c-8.9-30.4-34.5-57-64.8-67.1a76.3 76.3 0 0 0-23.6-5l-8-.7c-.5-.1-3.2-.1-6 .1zM122.9 59.4a49 49 0 0 1-5.2 93 59.4 59.4 0 0 1-29.6-1.3 47.8 47.8 0 0 1-31.7-47.3 48 48 0 0 1 35.1-46 55.1 55.1 0 0 1 31.4 1.6zm484.5-1.8a50.8 50.8 0 0 1 35.5 36.5c1.5 6.3.7 20.3-1.4 26.4a50.9 50.9 0 0 1-36.4 32.5 50 50 0 0 1-40.6-9.8 48.8 48.8 0 0 1-4.2-72.6 53 53 0 0 1 23.4-13.5c5.3-1.3 17.8-1 23.7.5zM365.3 303.5a48.7 48.7 0 0 1 19.3 80.9 48.9 48.9 0 0 1-47.5 12.9 50.3 50.3 0 0 1-34.7-35.6 60.8 60.8 0 0 1 1.3-28.2c6-15.4 21.1-28.9 34.9-31.1 2.1-.3 4.1-.8 4.4-1 1.3-1.4 16.2.1 22.3 2.1zM116 547.1a51.5 51.5 0 0 1 36 33.3 59.6 59.6 0 0 1 1 24.1c-3.8 19-18.6 34-37.9 38.5a48.8 48.8 0 0 1-58.8-50.6c.7-9.2 1.2-11.4 4.9-19.1 5.6-12 18-22.1 31.7-25.8a59.8 59.8 0 0 1 23.1-.4zm491.4.5a48.9 48.9 0 0 1 21.1 82.9 49 49 0 0 1-76.7-58.9 54.7 54.7 0 0 1 31.8-24.5c5.4-1.3 17.9-1 23.8.5z"/> +</svg> \ No newline at end of file diff --git a/resources/icons/site.webmanifest b/resources/icons/site.webmanifest new file mode 100644 index 0000000000..c6f5eef15e --- /dev/null +++ b/resources/icons/site.webmanifest @@ -0,0 +1,55 @@ +{ + "name": "WLMOJ", + "short_name": "WLMOJ", + "icons": [ + { + "src": "/android-chrome-36x36.png", + "sizes": "36x36", + "type": "image/png" + }, + { + "src": "/android-chrome-48x48.png", + "sizes": "48x48", + "type": "image/png" + }, + { + "src": "/android-chrome-72x72.png", + "sizes": "72x72", + "type": "image/png" + }, + { + "src": "/android-chrome-96x96.png", + "sizes": "96x96", + "type": "image/png" + }, + { + "src": "/android-chrome-144x144.png", + "sizes": "144x144", + "type": "image/png" + }, + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-256x256.png", + "sizes": "256x256", + "type": "image/png" + }, + { + "src": "/android-chrome-384x384.png", + "sizes": "384x384", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#2d89ef", + "background_color": "#2d89ef", + "start_url": "https://mcpt.ca/", + "display": "standalone" +} diff --git a/resources/quotes.json b/resources/quotes.json index d7ea3286de..aac4915352 100644 --- a/resources/quotes.json +++ b/resources/quotes.json @@ -67,4 +67,4 @@ "quote": "¯\\_(ツ)_/¯", "tooltip": "🤷" } -] +] \ No newline at end of file diff --git a/templates/base.html b/templates/base.html index 7937059579..41c57bd38f 100644 --- a/templates/base.html +++ b/templates/base.html @@ -11,24 +11,14 @@ {% endif %} <meta id="viewport" name="viewport" content="width=device-width, initial-scale=1"> <!-- Favicons--> - <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-57x57.png"> - <link rel="apple-touch-icon" sizes="60x60" href="/apple-touch-icon-60x60.png"> - <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-72x72.png"> - <link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png"> - <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114x114.png"> - <link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png"> - <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png"> - <link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png"> - <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon-180x180.png"> - <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"> - <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192"> - <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96"> - <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"> - <link rel="manifest" href="/manifest.json"> - <meta name="msapplication-TileColor" content="#3737B4"> - <meta name="msapplication-TileImage" content="/mstile-144x144.png"> + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> + <link rel="manifest" href="/site.webmanifest"> + <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#fa013c"> + <meta name="msapplication-TileColor" content="#2d89ef"> {# Chrome 39 for Android colour #} - <meta name="theme-color" content="#3737B4"> + <meta name="theme-color" content="#2d89ef"> {% if og_image %} <meta property="og:image" content="{{ request.build_absolute_uri(og_image) }}"> {% endif %} From 871ee1539eee037f02de4b6363765a3fab0585d5 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Mon, 23 Sep 2024 23:18:29 -0400 Subject: [PATCH 33/57] Update resource check path Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- dmoj/urls.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/dmoj/urls.py b/dmoj/urls.py index 5c83076292..811a650ec7 100644 --- a/dmoj/urls.py +++ b/dmoj/urls.py @@ -371,13 +371,13 @@ def paged_list_view(view, name): ])), ] -favicon_paths = os.listdir(join(settings.DMOJ_RESOURCES, 'icons')) - -static_lazy = lazy(static, str) -for favicon in favicon_paths: - urlpatterns.append(path(favicon, RedirectView.as_view( - url=static_lazy('icons/' + favicon), - ))) +if os.path.exists(join(settings.DMOJ_RESOURCES, 'icons')): # if it doesn't exist, we're probably running on bridged + favicon_paths = os.listdir(join(settings.DMOJ_RESOURCES, 'icons')) + static_lazy = lazy(static, str) + for favicon in favicon_paths: + urlpatterns.append(path(favicon, RedirectView.as_view( + url=static_lazy('icons/' + favicon), + ))) handler404 = 'judge.views.error.error404' handler403 = 'judge.views.error.error403' From 8338fef42c620af79014beadaaa4f1a613b4af03 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Mon, 23 Sep 2024 23:21:21 -0400 Subject: [PATCH 34/57] Satisfy flake8 Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- dmoj/urls.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dmoj/urls.py b/dmoj/urls.py index 811a650ec7..c87abdc42e 100644 --- a/dmoj/urls.py +++ b/dmoj/urls.py @@ -371,7 +371,7 @@ def paged_list_view(view, name): ])), ] -if os.path.exists(join(settings.DMOJ_RESOURCES, 'icons')): # if it doesn't exist, we're probably running on bridged +if os.path.exists(join(settings.DMOJ_RESOURCES, 'icons')): # if it doesn't exist, we're probably running on bridged favicon_paths = os.listdir(join(settings.DMOJ_RESOURCES, 'icons')) static_lazy = lazy(static, str) for favicon in favicon_paths: From 2e2972c42d42bcd9e166b6ae60458445c905164e Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Tue, 24 Sep 2024 23:02:08 -0400 Subject: [PATCH 35/57] Ansible: Simplify update steps * remove "dark mode support " Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- judge/template_context.py | 6 +----- resources/navbar.scss | 8 ++++---- resources/vars-default.scss | 4 ++-- templates/base.html | 4 ---- templates/contest/list.html | 2 +- templates/registration/activation_email.html | 2 +- templates/registration/email_change_activate_email.html | 2 +- templates/registration/email_change_notify_email.html | 2 +- 8 files changed, 11 insertions(+), 19 deletions(-) diff --git a/judge/template_context.py b/judge/template_context.py index 196416377d..7d3d21795c 100644 --- a/judge/template_context.py +++ b/judge/template_context.py @@ -82,14 +82,10 @@ def site_name(request): def site_theme(request): # Middleware populating `profile` may not have loaded at this point if we're called from an error context. - if hasattr(request.user, 'profile'): - preferred_css = settings.DMOJ_THEME_CSS.get(request.profile.site_theme) - else: - preferred_css = None return { 'DARK_STYLE_CSS': settings.DMOJ_THEME_CSS['dark'], 'LIGHT_STYLE_CSS': settings.DMOJ_THEME_CSS['light'], - 'PREFERRED_STYLE_CSS': preferred_css, + 'PREFERRED_STYLE_CSS': settings.DMOJ_THEME_CSS['dark'], } diff --git a/resources/navbar.scss b/resources/navbar.scss index d849674a5b..e6e165b134 100644 --- a/resources/navbar.scss +++ b/resources/navbar.scss @@ -66,7 +66,7 @@ } #nav-container { - background: #3b3b3b; + background: #3737b4; // opacity: 0.77 // filter: alpha(opacity=77) @@ -136,14 +136,14 @@ nav { left: 5px; display: none; color: #fff; - background: #3b3b3b; + background: #3737b4; margin: 0 !important; box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); li { &:first-child { a.active { - border-top: 1px solid #3b3b3b; + border-top: 1px solid #3737b4; } } } @@ -228,7 +228,7 @@ nav { margin: 0; position: fixed; top: 36px; - background: #3b3b3b; + background: #3737b4; bottom: 0; width: 8em; left: 0; diff --git a/resources/vars-default.scss b/resources/vars-default.scss index 6a41dfd603..f58b0c4408 100644 --- a/resources/vars-default.scss +++ b/resources/vars-default.scss @@ -5,11 +5,11 @@ $is_light_theme: true; $color_primary0: #fff; $color_primary5: #f8f8f8; // light background $color_primary10: #eee; // background -$color_primary25: #ccc; // border +$color_primary25: #4242da; // border $color_primary33: #aaa; // widget $color_primary50: #808080; $color_primary66: #555; // tabs -$color_primary75: #3b3b3b; // widget +$color_primary75: #3737b4; // widget $color_primary90: #111; $color_primary100: #000; diff --git a/templates/base.html b/templates/base.html index 41c57bd38f..9d93bb25ba 100644 --- a/templates/base.html +++ b/templates/base.html @@ -36,12 +36,8 @@ {% compress css %} {# TODO: once dark mode support is better, enable for all users by deleting the else branch #} {% if perms.judge.test_site %} - {% if PREFERRED_STYLE_CSS is not none %} - <link rel="stylesheet" href="{{ static(PREFERRED_STYLE_CSS) }}"> - {% else %} <link rel="stylesheet" href="{{ static(LIGHT_STYLE_CSS) }}" media="(prefers-color-scheme: light)"> <link rel="stylesheet" href="{{ static(DARK_STYLE_CSS) }}" media="(prefers-color-scheme: dark)"> - {% endif %} {% else %} <link rel="stylesheet" href="{{ static(LIGHT_STYLE_CSS) }}"> {% endif %} diff --git a/templates/contest/list.html b/templates/contest/list.html index c3deb113c4..c9ae466848 100644 --- a/templates/contest/list.html +++ b/templates/contest/list.html @@ -52,7 +52,7 @@ {% endif %} {% if contest.is_organization_private %} {% for org in contest.organizations.all() %} - <span style="background-color: #cccccc" class="contest-tag"> + <span style="background-color: #4242da" class="contest-tag"> <a href="{{ org.get_absolute_url() }}" style="color: #000000"> <i class="fa fa-lock"></i> {{ org.name }} </a> diff --git a/templates/registration/activation_email.html b/templates/registration/activation_email.html index e49673f0e3..5d7137a764 100644 --- a/templates/registration/activation_email.html +++ b/templates/registration/activation_email.html @@ -2,7 +2,7 @@ <a href="{{ request.scheme }}://{{ site.domain }}"><img src="{{ request.scheme }}://{{ site.domain }}/static/icons/logo.svg" alt="{{ SITE_NAME }}" width="160" height="44"></a> </div></div> -<div style="border:2px solid #337ab7;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;"> +<div style="border:2px solid #4547c8;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;"> <strong>{{ _("Thanks for registering on the %(site_name)s! We're glad to have you.", site_name=SITE_NAME) }}</strong> <br><br> {% trans trimmed count=expiration_days, site_name=SITE_NAME %} diff --git a/templates/registration/email_change_activate_email.html b/templates/registration/email_change_activate_email.html index c09b5d9f36..005adcfd79 100644 --- a/templates/registration/email_change_activate_email.html +++ b/templates/registration/email_change_activate_email.html @@ -2,7 +2,7 @@ <a href="{{ protocol }}://{{ domain }}"><img src="{{ protocol }}://{{ domain }}/static/icons/logo.svg" alt="{{ site_name }}" width="160" height="44"></a> </div></div> -<div style="border:2px solid #337ab7;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;"> +<div style="border:2px solid #4547c8;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;"> <br><br> {{ user.get_username() }}, <br> diff --git a/templates/registration/email_change_notify_email.html b/templates/registration/email_change_notify_email.html index 5efeb5f23b..279a397a8b 100644 --- a/templates/registration/email_change_notify_email.html +++ b/templates/registration/email_change_notify_email.html @@ -2,7 +2,7 @@ <a href="{{ protocol }}://{{ domain }}"><img src="{{ protocol }}://{{ domain }}/static/icons/logo.svg" alt="{{ site_name }}" width="160" height="44"></a> </div></div> -<div style="border:2px solid #337ab7;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;"> +<div style="border:2px solid #4547c8;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;"> <br><br> {{ user.get_username() }}, <br> From 2b6beb1af855c60faf7f1f1bb9b2be3bcd5ecec5 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Tue, 24 Sep 2024 23:19:34 -0400 Subject: [PATCH 36/57] Default theme to light Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- judge/template_context.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/judge/template_context.py b/judge/template_context.py index 7d3d21795c..e845d61d32 100644 --- a/judge/template_context.py +++ b/judge/template_context.py @@ -82,16 +82,20 @@ def site_name(request): def site_theme(request): # Middleware populating `profile` may not have loaded at this point if we're called from an error context. + if hasattr(request.user, 'profile'): + preferred_css = settings.DMOJ_THEME_CSS.get(request.profile.site_theme, settings.DMOJ_THEME_CSS['light']) + else: + preferred_css = None return { 'DARK_STYLE_CSS': settings.DMOJ_THEME_CSS['dark'], 'LIGHT_STYLE_CSS': settings.DMOJ_THEME_CSS['light'], - 'PREFERRED_STYLE_CSS': settings.DMOJ_THEME_CSS['dark'], + 'PREFERRED_STYLE_CSS': preferred_css, } def math_setting(request): caniuse = CanIUse(request.META.get('HTTP_USER_AGENT', '')) - + # Middleware populating `profile` may not have loaded at this point if we're called from an error context. if hasattr(request.user, 'profile'): engine = request.profile.math_engine From 458610f56cbd08ad28775f5ea7afb483ac0a7cd1 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Tue, 24 Sep 2024 23:27:36 -0400 Subject: [PATCH 37/57] Change default behavior so that styling isn't up to the browser Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- resources/vars-common.scss | 2 +- templates/base.html | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/resources/vars-common.scss b/resources/vars-common.scss index 004861d2c6..19a38fb693 100644 --- a/resources/vars-common.scss +++ b/resources/vars-common.scss @@ -1,4 +1,4 @@ -$highlight_blue: #2980B9; +$highlight_blue: #7070f4; $announcement_red: #ae0000; $base_font_size: 14px; diff --git a/templates/base.html b/templates/base.html index 9d93bb25ba..804b085aa4 100644 --- a/templates/base.html +++ b/templates/base.html @@ -36,8 +36,9 @@ {% compress css %} {# TODO: once dark mode support is better, enable for all users by deleting the else branch #} {% if perms.judge.test_site %} - <link rel="stylesheet" href="{{ static(LIGHT_STYLE_CSS) }}" media="(prefers-color-scheme: light)"> - <link rel="stylesheet" href="{{ static(DARK_STYLE_CSS) }}" media="(prefers-color-scheme: dark)"> + {% if PREFERRED_STYLE_CSS is not none %} + <link rel="stylesheet" href="{{ static(PREFERRED_STYLE_CSS) }}"> + {% endif %} {% else %} <link rel="stylesheet" href="{{ static(LIGHT_STYLE_CSS) }}"> {% endif %} From e3edd06e60695b5614ddafc578665db9fe841fe3 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Tue, 24 Sep 2024 23:31:04 -0400 Subject: [PATCH 38/57] chore: fix linting Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- judge/template_context.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/judge/template_context.py b/judge/template_context.py index e845d61d32..2a59f34757 100644 --- a/judge/template_context.py +++ b/judge/template_context.py @@ -95,7 +95,7 @@ def site_theme(request): def math_setting(request): caniuse = CanIUse(request.META.get('HTTP_USER_AGENT', '')) - + # Middleware populating `profile` may not have loaded at this point if we're called from an error context. if hasattr(request.user, 'profile'): engine = request.profile.math_engine From 027ed50d4257c86287f40232dc72f559120b6965 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Wed, 25 Sep 2024 19:22:15 -0400 Subject: [PATCH 39/57] Update color themes Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- resources/vars-default.scss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/vars-default.scss b/resources/vars-default.scss index f58b0c4408..e0278ecd6c 100644 --- a/resources/vars-default.scss +++ b/resources/vars-default.scss @@ -5,18 +5,18 @@ $is_light_theme: true; $color_primary0: #fff; $color_primary5: #f8f8f8; // light background $color_primary10: #eee; // background -$color_primary25: #4242da; // border +$color_primary25: #8d8db7; // border $color_primary33: #aaa; // widget $color_primary50: #808080; $color_primary66: #555; // tabs $color_primary75: #3737b4; // widget -$color_primary90: #111; -$color_primary100: #000; +$color_primary90: #1F3EB1; +$color_primary100: #0645ad; $color_link50: #5b80b9; // default (title) $color_link75: #1958c1; // default $color_link100: #0645ad; // hover -$color_link200: #faa700; // active +$color_link200: #053281; // active $color_pageBg: #fff; From 46dc6bb6da7d979dc2d82d95187ac0fa4da55a50 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Wed, 25 Sep 2024 19:54:21 -0400 Subject: [PATCH 40/57] Update styles a little Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- resources/vars-default.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/vars-default.scss b/resources/vars-default.scss index e0278ecd6c..9394f3ace2 100644 --- a/resources/vars-default.scss +++ b/resources/vars-default.scss @@ -5,7 +5,7 @@ $is_light_theme: true; $color_primary0: #fff; $color_primary5: #f8f8f8; // light background $color_primary10: #eee; // background -$color_primary25: #8d8db7; // border +$color_primary25: #babae5; // border $color_primary33: #aaa; // widget $color_primary50: #808080; $color_primary66: #555; // tabs @@ -16,7 +16,7 @@ $color_primary100: #0645ad; $color_link50: #5b80b9; // default (title) $color_link75: #1958c1; // default $color_link100: #0645ad; // hover -$color_link200: #053281; // active +$color_link200: #0838c9; // active $color_pageBg: #fff; From d9f706f1a38aee1172554d2984c45c1f20a6cac4 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Wed, 25 Sep 2024 20:32:55 -0400 Subject: [PATCH 41/57] Set default text to black Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- resources/vars-default.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/vars-default.scss b/resources/vars-default.scss index 9394f3ace2..7682208098 100644 --- a/resources/vars-default.scss +++ b/resources/vars-default.scss @@ -11,7 +11,7 @@ $color_primary50: #808080; $color_primary66: #555; // tabs $color_primary75: #3737b4; // widget $color_primary90: #1F3EB1; -$color_primary100: #0645ad; +$color_primary100: #000; $color_link50: #5b80b9; // default (title) $color_link75: #1958c1; // default From 6cbc3f35e18e15a9f44bb3fb5de3a9eed05a3dd5 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Wed, 2 Oct 2024 17:57:04 -0400 Subject: [PATCH 42/57] fix: raise error when profile creation breaks Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- judge/apps.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/judge/apps.py b/judge/apps.py index 5df2bdea8c..722d82a9a4 100644 --- a/judge/apps.py +++ b/judge/apps.py @@ -23,5 +23,5 @@ def ready(self): # These poor profileless users profile = Profile(user=user, language=lang) profile.save() - except DatabaseError: - pass + except DatabaseError as e: + raise e from SystemError From c201122a1450539d6f4a37a20aac51cb8d998f62 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Wed, 2 Oct 2024 18:01:03 -0400 Subject: [PATCH 43/57] redo error system for apps Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- judge/apps.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/judge/apps.py b/judge/apps.py index 722d82a9a4..a54acd506b 100644 --- a/judge/apps.py +++ b/judge/apps.py @@ -1,7 +1,9 @@ from django.apps import AppConfig from django.db import DatabaseError from django.utils.translation import gettext_lazy +import logging +logger = logging.getLogger("judge.apps") class JudgeAppConfig(AppConfig): name = 'judge' @@ -23,5 +25,7 @@ def ready(self): # These poor profileless users profile = Profile(user=user, language=lang) profile.save() + logger.info('Created profile for user %s', user) except DatabaseError as e: - raise e from SystemError + logger.error('Failed to create profiles for users: %s', e) + From bbb116c1fb2625bbcddc70647db775ee7b7ac94e Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Wed, 2 Oct 2024 18:03:45 -0400 Subject: [PATCH 44/57] Chore: fix linter issues with apps Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- judge/apps.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/judge/apps.py b/judge/apps.py index a54acd506b..1268e37b64 100644 --- a/judge/apps.py +++ b/judge/apps.py @@ -1,9 +1,11 @@ +import logging + from django.apps import AppConfig from django.db import DatabaseError from django.utils.translation import gettext_lazy -import logging -logger = logging.getLogger("judge.apps") +logger = logging.getLogger('judge.apps') + class JudgeAppConfig(AppConfig): name = 'judge' @@ -27,5 +29,4 @@ def ready(self): profile.save() logger.info('Created profile for user %s', user) except DatabaseError as e: - logger.error('Failed to create profiles for users: %s', e) - + logger.error('Failed to create profiles for users: %s', e.__traceback__) From c2d96e0cf4eedaa6cd5f36d0c40c37cc05306440 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Wed, 2 Oct 2024 21:30:36 -0400 Subject: [PATCH 45/57] Properly warn on miss config for local_settings Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- dmoj/settings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dmoj/settings.py b/dmoj/settings.py index 9c8893417a..c2a30d77e1 100644 --- a/dmoj/settings.py +++ b/dmoj/settings.py @@ -605,8 +605,8 @@ try: with open(os.path.join(os.path.dirname(__file__), 'local_settings.py')) as f: exec(f.read(), globals()) -except IOError: - pass +except IOError as e: + raise ImportError('Could not import local_settings.py: %s' % e) from IOError # Check settings are consistent From 7f0762a7ce01c5be1dfd2c02aeef30b1022666e9 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Thu, 3 Oct 2024 00:28:08 -0400 Subject: [PATCH 46/57] Update local setting's location in prod Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- dmoj/settings.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dmoj/settings.py b/dmoj/settings.py index c2a30d77e1..75c8809973 100644 --- a/dmoj/settings.py +++ b/dmoj/settings.py @@ -602,8 +602,9 @@ WEBAUTHN_RP_ID = None +LOCAL_SETTINGS_PATH = os.path.join(os.path.dirname(__file__), 'local_settings.py') if os.environ.get('DEBUG', '0') == '1' else '/local_settings.py' try: - with open(os.path.join(os.path.dirname(__file__), 'local_settings.py')) as f: + with open(LOCAL_SETTINGS_PATH) as f: exec(f.read(), globals()) except IOError as e: raise ImportError('Could not import local_settings.py: %s' % e) from IOError From e2a15e8fce335f06fcf36141e48131a57707ced9 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Thu, 3 Oct 2024 00:29:45 -0400 Subject: [PATCH 47/57] Lint Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- dmoj/settings.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dmoj/settings.py b/dmoj/settings.py index 75c8809973..075e359b86 100644 --- a/dmoj/settings.py +++ b/dmoj/settings.py @@ -602,7 +602,10 @@ WEBAUTHN_RP_ID = None -LOCAL_SETTINGS_PATH = os.path.join(os.path.dirname(__file__), 'local_settings.py') if os.environ.get('DEBUG', '0') == '1' else '/local_settings.py' +if os.environ.get('DEBUG', '0') == '1': + LOCAL_SETTINGS_PATH = os.path.join(os.path.dirname(__file__), 'local_settings.py') +else: + LOCAL_SETTINGS_PATH = '/local_settings.py' try: with open(LOCAL_SETTINGS_PATH) as f: exec(f.read(), globals()) From 47d6cb03058e6d29d9463e3ea17e4cccf8d4c6a0 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Thu, 3 Oct 2024 00:47:51 -0400 Subject: [PATCH 48/57] Fix settings Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- dmoj/settings.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dmoj/settings.py b/dmoj/settings.py index 075e359b86..643ff8f679 100644 --- a/dmoj/settings.py +++ b/dmoj/settings.py @@ -602,10 +602,10 @@ WEBAUTHN_RP_ID = None -if os.environ.get('DEBUG', '0') == '1': - LOCAL_SETTINGS_PATH = os.path.join(os.path.dirname(__file__), 'local_settings.py') -else: +if os.environ.get('DEBUG', '0') == '0' and os.path.exists('/local_settings.py'): LOCAL_SETTINGS_PATH = '/local_settings.py' +else: + LOCAL_SETTINGS_PATH = os.path.join(os.path.dirname(__file__), 'local_settings.py') try: with open(LOCAL_SETTINGS_PATH) as f: exec(f.read(), globals()) From 201e58926675ea6e83703464a00c4749a4a6317e Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Thu, 3 Oct 2024 01:04:18 -0400 Subject: [PATCH 49/57] Revert: all settings changes Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- dmoj/settings.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/dmoj/settings.py b/dmoj/settings.py index 643ff8f679..c2a30d77e1 100644 --- a/dmoj/settings.py +++ b/dmoj/settings.py @@ -602,12 +602,8 @@ WEBAUTHN_RP_ID = None -if os.environ.get('DEBUG', '0') == '0' and os.path.exists('/local_settings.py'): - LOCAL_SETTINGS_PATH = '/local_settings.py' -else: - LOCAL_SETTINGS_PATH = os.path.join(os.path.dirname(__file__), 'local_settings.py') try: - with open(LOCAL_SETTINGS_PATH) as f: + with open(os.path.join(os.path.dirname(__file__), 'local_settings.py')) as f: exec(f.read(), globals()) except IOError as e: raise ImportError('Could not import local_settings.py: %s' % e) from IOError From c0c924eb4faa9292f1838cb4c421b5fbabdd2076 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Wed, 9 Oct 2024 01:59:55 -0400 Subject: [PATCH 50/57] Update menu on hover styles Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- resources/vars-default.scss | 2 +- resources/widgets.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/vars-default.scss b/resources/vars-default.scss index 7682208098..fa678a4946 100644 --- a/resources/vars-default.scss +++ b/resources/vars-default.scss @@ -7,7 +7,7 @@ $color_primary5: #f8f8f8; // light background $color_primary10: #eee; // background $color_primary25: #babae5; // border $color_primary33: #aaa; // widget -$color_primary50: #808080; +$color_primary50: #babae5; $color_primary66: #555; // tabs $color_primary75: #3737b4; // widget $color_primary90: #1F3EB1; diff --git a/resources/widgets.scss b/resources/widgets.scss index 3963b308af..d6d563ccb1 100644 --- a/resources/widgets.scss +++ b/resources/widgets.scss @@ -246,7 +246,7 @@ textarea:focus { // Bootstrap-y pagination ul.pagination a:hover { - background: rgba($color_primary100, 0.55); + background: rgba($color_primary75, 0.55); } ul.pagination { From 95a8fff648f95e483853211fcec00a48bbe81a50 Mon Sep 17 00:00:00 2001 From: "blacksmith-sh[bot]" <157653362+blacksmith-sh[bot]@users.noreply.github.com> Date: Tue, 15 Oct 2024 00:30:17 -0400 Subject: [PATCH 51/57] blacksmith.sh: Migrate workflows to Blacksmith (#79) This PR migrates some selected workflows to Blacksmith. Co-authored-by: blacksmith-sh[bot] <157653362+blacksmith-sh[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 14 +++++++------- .github/workflows/compilemessages.yml | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 56333b47a6..915c94b14d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,11 +2,11 @@ name: build on: [push, pull_request] jobs: lint: - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2204 steps: - uses: actions/checkout@v4 - name: Set up Python 3.7 - uses: actions/setup-python@v5 + uses: useblacksmith/setup-python@v6 with: python-version: '3.7' - name: Install flake8 @@ -16,15 +16,15 @@ jobs: flake8 --version flake8 unit: - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2204 steps: - uses: actions/checkout@v4 - name: Set up Python 3.7 - uses: actions/setup-python@v5 + uses: useblacksmith/setup-python@v6 with: python-version: '3.7' - name: Cache pip - uses: actions/cache@v4 + uses: useblacksmith/cache@v5 with: path: ~/.cache/pip key: pip-${{ runner.os }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('requirements.txt') }} @@ -42,11 +42,11 @@ jobs: run: coverage xml - uses: codecov/codecov-action@v4 styles: - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2204 steps: - uses: actions/checkout@v4 - name: Set up Node 20 - uses: actions/setup-node@v4 + uses: useblacksmith/setup-node@v5 with: node-version: 20 - name: Install npm packages diff --git a/.github/workflows/compilemessages.yml b/.github/workflows/compilemessages.yml index 106b353fbe..a635cafc3d 100644 --- a/.github/workflows/compilemessages.yml +++ b/.github/workflows/compilemessages.yml @@ -8,11 +8,11 @@ on: - 'locale/**' jobs: compilemessages: - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2204 steps: - uses: actions/checkout@v4 - name: Set up Python 3.7 - uses: actions/setup-python@v5 + uses: useblacksmith/setup-python@v6 with: python-version: '3.7' - name: Checkout submodules From 05464c6919a4fc43f487366dc9d9e3dd3fec88a2 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Wed, 16 Oct 2024 20:18:25 -0400 Subject: [PATCH 52/57] Switch to 2 core workers --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 915c94b14d..f6190110f6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,7 +2,7 @@ name: build on: [push, pull_request] jobs: lint: - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: blacksmith-2vcpu-ubuntu-2204 steps: - uses: actions/checkout@v4 - name: Set up Python 3.7 @@ -16,7 +16,7 @@ jobs: flake8 --version flake8 unit: - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: blacksmith-2vcpu-ubuntu-2204 steps: - uses: actions/checkout@v4 - name: Set up Python 3.7 @@ -42,7 +42,7 @@ jobs: run: coverage xml - uses: codecov/codecov-action@v4 styles: - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: blacksmith-2vcpu-ubuntu-2204 steps: - uses: actions/checkout@v4 - name: Set up Node 20 From 234bff5f88e5415f4e28c68e99f0797b2dddd125 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Tue, 29 Oct 2024 17:45:05 -0400 Subject: [PATCH 53/57] Delete judge/contest_format/bonuses.py --- judge/contest_format/bonuses.py | 144 -------------------------------- 1 file changed, 144 deletions(-) delete mode 100644 judge/contest_format/bonuses.py diff --git a/judge/contest_format/bonuses.py b/judge/contest_format/bonuses.py deleted file mode 100644 index 678d599ba6..0000000000 --- a/judge/contest_format/bonuses.py +++ /dev/null @@ -1,144 +0,0 @@ -from datetime import timedelta - -from django.core.exceptions import ValidationError -from django.db.models import ( - ExpressionWrapper, - F, - FloatField, - Max, - Min, - OuterRef, - Subquery, -) -from django.template.defaultfilters import floatformat -from django.urls import reverse -from django.utils.html import format_html -from django.utils.safestring import mark_safe -from django.utils.translation import gettext_lazy - -from judge.contest_format.default import DefaultContestFormat -from judge.contest_format.registry import register_contest_format -from judge.utils.timedelta import nice_repr - - -@register_contest_format('bonuses') -class BonusesContestFormat(DefaultContestFormat): - name = gettext_lazy('Bonuses') - config_defaults = { - 'time_bonus': 0, - 'first_submission_bonus': 0, - } - """ - time_bonus: Number of minutes to award an extra point for submitting before the contest end. - first_submission_bonus: Bonus points for fully solving on first submission. - """ - - @classmethod - def validate(cls, config): - if not isinstance(config, dict): - raise ValidationError('bonuses contest expects a dict as config') - for key in config.keys(): - if key not in cls.config_defaults: - raise ValidationError('unknown config key "%s"' % key) - - def __init__(self, contest, config): - super().__init__(contest, self.config_defaults.copy()) - self.config.update(config) - - def update_participation(self, participation): - cumtime = 0 - score = 0 - format_data = {} - - total_wrapper = ExpressionWrapper( - F('points') + F('bonus'), output_field=FloatField(), - ) - queryset = ( - participation.submissions.values('problem_id') - .annotate(total=total_wrapper) - .filter( - total=Subquery( - participation.submissions.filter(problem_id=OuterRef('problem_id')) - .annotate(best=total_wrapper) - .order_by('-best') - .values('best')[:1], - ), - ) - .annotate(time=Min('submission__date'), points=Max('points')) - .values_list('problem_id', 'time', 'points', 'total') - ) - - for problem_id, time, points, total in queryset: - dt = (time - participation.start).total_seconds() - if total: - score += total - cumtime += dt - format_data[str(problem_id)] = { - 'points': points, - 'bonus': total - points, - 'time': dt, - } - - queryset = ( - participation.submissions.values('problem_id', 'problem__points') - .filter( - submission__date=Subquery( - participation.submissions.filter(problem_id=OuterRef('problem_id')) - .order_by('submission__date') - .values('submission__date')[:1], - ), - ) - .annotate(points=Max('points')) - .values_list('problem_id', 'points', 'problem__points') - ) - - for problem_id, points, problem_points in queryset: - format_data[str(problem_id)].update( - { - 'first_solve': points == problem_points, - }, - ) - - participation.cumtime = max(cumtime, 0) - participation.score = score - participation.tiebreaker = 0 - participation.format_data = format_data - participation.save() - - def display_user_problem(self, participation, contest_problem): - format_data = (participation.format_data or {}).get(str(contest_problem.id)) - if format_data: - pretest = ( - 'pretest-' - if self.contest.run_pretests_only and contest_problem.is_pretested - else '' - ) - first_solve = ' first-solve' if format_data['first_solve'] else '' - bonus = ( - format_html( - '<font style="font-size:10px;"> +{bonus}</font>', - bonus=floatformat(format_data['bonus']), - ) - if format_data['bonus'] - else '' - ) - - return format_html( - '<td class="{state}"><a href="{url}">{points}{bonus}<div class="solving-time">{time}</div></a></td>', - state=pretest + self.best_solution_state( - format_data['points'], contest_problem.points, - ) + first_solve, - url=reverse( - 'contest_user_submissions', - args=[ - self.contest.key, - participation.user.user.username, - contest_problem.problem.code, - ], - ), - points=floatformat(format_data['points']), - bonus=bonus, - time=nice_repr(timedelta(seconds=format_data['time']), 'noday'), - ) - else: - return mark_safe('<td></td>') From db0b0891b916e5c60ee027fe7865a7cd27025e8e Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Tue, 29 Oct 2024 18:34:56 -0400 Subject: [PATCH 54/57] Remove BonusesContestFormat --- judge/contest_format/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/judge/contest_format/__init__.py b/judge/contest_format/__init__.py index 65e7f36483..acefe4c9fa 100644 --- a/judge/contest_format/__init__.py +++ b/judge/contest_format/__init__.py @@ -1,5 +1,4 @@ from judge.contest_format.atcoder import AtCoderContestFormat -from judge.contest_format.bonuses import BonusesContestFormat from judge.contest_format.default import DefaultContestFormat from judge.contest_format.ecoo import ECOOContestFormat from judge.contest_format.icpc import ICPCContestFormat From e262508af327892c6277abd0225876e29bfde9a6 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Tue, 29 Oct 2024 21:02:26 -0400 Subject: [PATCH 55/57] Update tasks to use icon.svg Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- templates/task_status.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/task_status.html b/templates/task_status.html index 6a019d5437..ec0d897143 100644 --- a/templates/task_status.html +++ b/templates/task_status.html @@ -77,7 +77,7 @@ <div class="container"> <div class="jumbotron" data-task-id="{{ task_id }}" data-task-status="{{ task_status }}" data-redirect="{{ redirect }}"> - <img src="{{ static('icons/icon.svg') }}" class="icon" alt="DMOJ Icon"> + <img src="{{ static('icons/logo.svg') }}" class="icon" alt="WLMOJ Icon"> <p class="action">{{ message }}</p> <p class="stage"></p> From fda07dd892aef996ec7aed242c7d3ba8bf909cec Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Sat, 2 Nov 2024 22:29:53 -0400 Subject: [PATCH 56/57] Add in a new (custom) bonuses fmt Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- judge/contest_format/__init__.py | 1 + judge/contest_format/bonuses.py | 97 ++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 judge/contest_format/bonuses.py diff --git a/judge/contest_format/__init__.py b/judge/contest_format/__init__.py index acefe4c9fa..65e7f36483 100644 --- a/judge/contest_format/__init__.py +++ b/judge/contest_format/__init__.py @@ -1,4 +1,5 @@ from judge.contest_format.atcoder import AtCoderContestFormat +from judge.contest_format.bonuses import BonusesContestFormat from judge.contest_format.default import DefaultContestFormat from judge.contest_format.ecoo import ECOOContestFormat from judge.contest_format.icpc import ICPCContestFormat diff --git a/judge/contest_format/bonuses.py b/judge/contest_format/bonuses.py new file mode 100644 index 0000000000..59837a1711 --- /dev/null +++ b/judge/contest_format/bonuses.py @@ -0,0 +1,97 @@ +from datetime import timedelta + +from django.db import connection +from django.template.defaultfilters import floatformat +from django.urls import reverse +from django.utils.html import format_html +from django.utils.safestring import mark_safe +from django.utils.translation import gettext as _, gettext_lazy + +from judge.contest_format.default import DefaultContestFormat +from judge.contest_format.registry import register_contest_format +from judge.timezone import from_database_time +from judge.utils.timedelta import nice_repr + + +@register_contest_format('bonuses') +class BonusesContestFormat(DefaultContestFormat): + """ + Used as a way to break ties by the sum of the last score + altering submission time on problems with a non-zero score.' + """ + + name = gettext_lazy('Bonuses') + + def __init__(self, contest, config): + self.config = self.config_defaults.copy() + self.config.update(config or {}) + self.contest = contest + + def update_participation(self, participation): + cumtime = 0 + points = 0 + format_data = {} + + with connection.cursor() as cursor: + cursor.execute( + """ + SELECT MAX(cs.points) as `score`, ( + SELECT MIN(csub.date) + FROM judge_contestsubmission ccs LEFT OUTER JOIN + judge_submission csub ON (csub.id = ccs.submission_id) + WHERE ccs.problem_id = cp.id AND ccs.participation_id = %s AND ccs.points = MAX(cs.points) + ) AS `time`, cp.id AS `prob` + FROM judge_contestproblem cp INNER JOIN + judge_contestsubmission cs ON (cs.problem_id = cp.id AND cs.participation_id = %s) LEFT OUTER JOIN + judge_submission sub ON (sub.id = cs.submission_id) + GROUP BY cp.id + """, + (participation.id, participation.id), + ) + + for score, time, prob in cursor.fetchall(): + time = from_database_time(time) + dt = (time - participation.start).total_seconds() + + if score: + cumtime = max(cumtime, dt) + + format_data[str(prob)] = {'time': dt, 'points': score} + points += score + + participation.cumtime = cumtime + participation.score = round(points, self.contest.points_precision) + participation.tiebreaker = 0 + participation.format_data = format_data + participation.save() + + def display_user_problem(self, participation, contest_problem): + format_data = (participation.format_data or {}).get(str(contest_problem.id)) + if format_data: + return format_html( + '<td class="{state}"><a href="{url}">{points}<div class="solving-time">{time}</div></a></td>', + state=( + ( + 'pretest-' if self.contest.run_pretests_only and contest_problem.is_pretested + else '' + ) + self.best_solution_state( + format_data['points'], contest_problem.points, + ), + ), + url=reverse( + 'contest_user_submissions', + args=[ + self.contest.key, + participation.user.user.username, + contest_problem.problem.code, + ], + ), + points=floatformat(format_data['points']), + time=nice_repr(timedelta(seconds=format_data['time']), 'noday'), + ) + else: + return mark_safe('<td></td>') + + def get_short_form_display(self): + yield _('The maximum score submission for each problem will be used.') + yield _('Ties will be broken by the last score altering submission time.') From 79755f5aaf038289c78070632b427fececb3be38 Mon Sep 17 00:00:00 2001 From: Jason Cameron <git@jasoncameron.dev> Date: Sat, 2 Nov 2024 22:45:04 -0400 Subject: [PATCH 57/57] Remove config defaults Signed-off-by: Jason Cameron <git@jasoncameron.dev> --- judge/contest_format/bonuses.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/judge/contest_format/bonuses.py b/judge/contest_format/bonuses.py index 59837a1711..042ebf796e 100644 --- a/judge/contest_format/bonuses.py +++ b/judge/contest_format/bonuses.py @@ -23,8 +23,7 @@ class BonusesContestFormat(DefaultContestFormat): name = gettext_lazy('Bonuses') def __init__(self, contest, config): - self.config = self.config_defaults.copy() - self.config.update(config or {}) + self.config = config or {} self.contest = contest def update_participation(self, participation):